2011-05-27 103 views
10

我目前正在終端中運行以下命令以通過USB串行發送命令。Objective-C串行 - Mac OS X

/Users/drummerboyx/Library/Scripts/arduino-serial -b 9600 -p /dev/tty.usbserial-A800ev0Z -s 1 

有沒有辦法在Objective-C中做到這一點?

回答

1

如果你只是想從你的代碼運行命令,你可以使用system功能:

#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++。

1

如果你想堅持可可 - 看看NSTask

+0

是的,但有沒有辦法做到這一點,而無需運行系統命令? – objectiveccoder001 2011-05-27 15:34:57

20

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]; 
+3

感謝您的提示,這看起來像一個更清潔的圖書館! – 2012-11-21 19:23:47

+1

你用'serialPortWithPath:'犯了一個錯字,你說'serialPortWithWithPath:',你在方法名中添加了一個額外的內容。 – 2013-04-23 01:12:30

+0

注意:如果你想支持基於PowerPC的Mac,你(不幸的是)不能使用ORSSerialPort。 – 2014-03-20 23:22:41