【问题标题】:Objective-C Serial - Mac OS XObjective-C 串行 - Mac OS X
【发布时间】:2011-05-27 14:39:43
【问题描述】:

我目前正在终端中运行以下命令以通过 USB 串行发送命令。

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

有没有办法在 Objective-C 中做到这一点?

【问题讨论】:

    标签: objective-c cocoa macos arduino


    【解决方案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];
    

    【讨论】:

    • 感谢您的提示,这看起来像一个更干净的库!
    • 你打错了serialPortWithPath:,你说serialPortWithWithPath:,你在方法名里加了一个额外的with。
    • 注意:如果你想支持基于 PowerPC 的 Mac,你(很遗憾)不能使用 ORSSerialPort。
    【解决方案2】:

    发现了一些 google-fu:

    我对此几乎一无所知,但"IOKit" 这个名字听起来也很有前途......

    【讨论】:

      【解决方案3】:

      如果您只想从代码中运行该命令,可以使用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++。

      【讨论】:

        【解决方案4】:

        如果您想坚持使用 Cocoa,请查看 NSTask

        【讨论】:

        • 是的,但是有没有办法在不运行系统命令的情况下做到这一点?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-20
        • 2012-05-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多