わかりました、ここに私の問題があります。センサーの値を教えてくれるプログラムがあります。このプログラムは端末で実行され、出力は次のようになります。
110
362
492
655
など.... 1 秒あたり 4 行 (ステータス) のレートで無期限に。次に、この値を目的の C プログラムのレベル バーにリアルタイムで表示する必要があります。私はこのコードを使用しようとします。基本的にnstaskとパイプを使用するCocoaアプリから端末コマンドを実行します。data = [file readDataToEndOfFile]; に到達すると、プログラムがスタックすることに気付きました。これが決して終わらない場合、プログラムまたは出力の終了を待っているためだと思います。では、このセンサーのステータスをリアルタイムで行ごとに取得する方法はありますか?
これが私のコードです。同じ無限の出力と同様のレートのために、ping google.com のコマンドを変更しただけです。
- (void) epocSender
{
NSTask *task;
task = [[NSTask alloc] init];
[task setLaunchPath: @"/sbin/ping"];
NSArray *arguments;arguments = [NSArray arrayWithObjects: @"google.com", nil];
[task setArguments: arguments];
NSPipe *pipe;
pipe = [NSPipe pipe];
[task setStandardOutput: pipe];
NSFileHandle *file;
file = [pipe fileHandleForReading];
[task launch];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receivedData:) name:NSFileHandleDataAvailableNotification object:file];
[file waitForDataInBackgroundAndNotify];
}
- (void)receivedData:(NSNotification *)notif {
NSLog(@"notification received");
}