#objective-c #cocoa #macos #arduino
#objective-c #cocoa #macos #arduino
Вопрос:
В настоящее время я запускаю следующее в терминале, чтобы отправить команду через USB serial.
/Users/drummerboyx/Library/Scripts/arduino-serial -b 9600 -p /dev/tty.usbserial-A800ev0Z -s 1
Есть ли способ сделать это в Objective-C?
Ответ №1:
ORSSerialPort — это более новая и простая в использовании альтернатива AMSerialPort.
Использование ORSSerialPort для открытия порта и отправки данных может быть таким же простым, как это:
ORSSerialPort *serialPort = [ORSSerialPort serialPortWithPath:@"/dev/cu.KeySerial1"];
serialPort.baudRate = [NSNumber numberWithInteger:4800];
[serialPort open];
[serialPort sendData:someData]; // someData is an NSData object
[serialPort close];
Комментарии:
1. Спасибо за совет, эта библиотека выглядит намного чище!
2. Вы допустили опечатку с
serialPortWithPath:
, как вы сказалиserialPortWithWithPath:
, вы добавили дополнительный с в название метода.3. Примечание: Если вы хотите поддерживать компьютеры Mac на базе PowerPC, вы (к сожалению) не сможете использовать ORSSerialPort.
Ответ №2:
Некоторые google-fu найдены:
- Платформа последовательной связи Cocoa (включена arduino.cc !)
- AMSerialPort
Я почти ничего об этом не знаю, но название «IOKit» также звучит довольно многообещающе…
Ответ №3:
Если вы просто хотите запустить эту команду из своего кода, вы можете использовать системную функцию:
#include <stdio.h>
#include <stdlib.h>
system("/Users/drummerboyx/Library/Scripts/arduino-serial -b 9600 -p /dev/tty.usbserial-A800ev0Z -s 1");
Вам нужно установить расширение вашего файла исходного кода Objective-C на .mm, что указывает Xcode скомпилировать его как Objective-C .
Ответ №4:
Если вы хотите придерживаться Cocoa — взгляните на NSTask.
Комментарии:
1. Да, но есть ли способ сделать это БЕЗ запуска системных команд?