我正在编写一个小应用程序,用于osx
通过串行连接向Arduino
接口监听和发送命令。这很好用AMSerialPort
。
但是现在我需要将一些数据转发到第二个Arduino
,所以我需要第二个串行连接。
这个框架有可能吗?我几乎到处搜索如何打开第二个端口并通过代表获得通知。
我正在编写一个小应用程序,用于osx
通过串行连接向Arduino
接口监听和发送命令。这很好用AMSerialPort
。
但是现在我需要将一些数据转发到第二个Arduino
,所以我需要第二个串行连接。
这个框架有可能吗?我几乎到处搜索如何打开第二个端口并通过代表获得通知。
关于 AMSerialPort,我无法真正回答这个问题。虽然我过去经常使用 AMSerialPort,但已经有一段时间了,我从未尝试过打开两个端口。然而,我刚刚发布了我自己的 Objective-C 串口库,它绝对支持同时打开多个端口。它被称为 ORSSerialPort,你可以在这里获得它:https ://github.com/armadsen/ORSSerialPort 。
用 ORSerialPort 打开两个串口没有什么技巧。使用 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
}
}