Вы пытаетесь отправить '\xFF\x01\x01' > /dev/cu.usbserial-A8003YzT
в качестве первого аргумента echo
, но это не то, что происходит, когда вы запускаете эту команду из командной строки. Только первая часть в кавычках отправляется в качестве аргумента для echo. Bash интерпретирует сам >
, захватывает выходные данные команды echo и перенаправляет их в указанный файл - в данном случае это файл, представляющий USB-устройство.
Если вы хотите запустить NSTask
, который будет интерпретировать команду оболочки с перенаправлениями, каналами и т. Д., Вам нужно будет использовать /bin/sh
в качестве пути запуска и -c
, your shell command
в качестве аргументов .
Кроме того, вы можете вообще пропустить NSTask
и просто открыть NSFileHandle
в файле устройства, а затем отправить трехбайтовую последовательность, которую хотите отправить. Echo удобен для интерактивной отладки, подобной этой, в терминале, но запуск внешней задачи в вашем приложении, просто для записи трех байтов в файл, является довольно радикальным излишним ...: -)