0

我想在我的 Mac 上监控一个虚拟 COM 端口(Arduino RFID )。我可以从终端运行“screen /dev/tty.serialnumber”,当我刷它时它会输出 RFID 序列号。

一旦我使用 NSTask 从Xcode尝试它,我就会得到以下输出。

必须连接到终端。

这是我的代码:

NSTask *cd = [[NSTask alloc] init];

[cd setLaunchPath:@"/usr/bin/screen"];
[cd setArguments:[NSArray arrayWithObjects:@"-L",@"/dev/tty.usbserial-A800509K",nil]];

NSPipe *pipe;
pipe = [NSPipe pipe];
[cd setStandardOutput: pipe];
[cd setStandardInput:[NSPipe pipe]];

NSFileHandle *file;
file = [pipe fileHandleForReading];

[cd launch];

NSData *data;
data = [file readDataToEndOfFile];

NSString *string;
string = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];

NSLog (@"%@", string);

[cd waitUntilExit];
[cd release];
4

1 回答 1

-1

我认为你最好直接访问 COM 端口,要么使用基础库,要么使用第三方 Obj-C 库(例如,https://github.com/pbosetti/PBSerialPort)。此外,如果要监控COM 端口,则必须设置一个线程读取串行端口,并更新 UI 中的文本区域。请记住,辅助线程应该通过方法更新 UI - (void)performSelector:(SEL)aSelector onThread:(NSThread *)thr withObject:(id)arg waitUntilDone:(BOOL)wait

于 2011-09-27T10:47:16.680 回答