如何从NSTask运行“屏幕”命令?

时间:2011-05-11 03:09:10

标签: unix arduino rfid gnu-screen nstask

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

只要我从Xcode尝试使用NSTask,我就会得到以下输出。

  

必须连接到终端。

这是我的代码:

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];

1 个答案:

答案 0 :(得分:-1)

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