2011-05-27 95 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