AMSerialPort:在一个项目中使用两个端口

时间:2012-05-10 09:20:26

标签: objective-c macos serial-port

我正在为osx编写一个小应用程序来监听并通过串行连接将命令发送到Arduino接口。使用AMSerialPort确实很有用。

但现在我需要将一些数据转发到第二个Arduino,所以我需要第二个串行连接。

这个框架可以实现吗?我几乎到处搜索如何打开第二个端口并通过代表了解情况。

1 个答案:

答案 0 :(得分:0)

关于AMSerialPort,我无法回答这个问题。虽然我过去经常使用AMSerialPort,但已经有一段时间了,而且我从未试图打开两个端口。但是,我刚刚发布了自己的Objective-C串口库,它肯定支持同时打开多个端口。它被称为ORSSerialPort,你可以在这里得到它:https://github.com/armadsen/ORSSerialPort

用ORSSerialPort打开两个串口没有诀窍。使用ORSSerialPortManager的availablePorts属性获取系统上的所有可用端口。在serialPort:didReceiveData:委托方法中,您可以检查哪个端口接收到数据。像这样:

NSArray *availablePorts = [[ORSSerialPortManager sharedSerialPortManager] availablePorts];

// The next two lines are simplified by assuming availablePorts has two ports 
// and you don't care which is which. Real code will be more sophisticated
self.port1 = [availablePorts objectAtIndex:0]; 
self.port2 = [availablePorts objectAtIndex:1];

self.port1.delegate = self;
self.port2.delegate = self;

[self.port1 open];
[self.port2 open];

- (void)serialPort:(ORSSerialPort *)port didReceiveData:(NSData *)data
{
    if (port == self.port1) {
        // Data is from port1
    } else if (port == self.port2) {
        // Data is from port2
    }
}