外部アクセサリと非同期でデータを送受信することについて混乱しています。MFi外部アクセサリを使用しています。EADemoを確認しましたが、データの送受信が同期されているようです。これについての提案は、事前に感謝します。
質問する
1159 次
1 に答える
2
まず、入出力ストリームをrunLoopにアタッチする必要があります。
[[session inputStream] scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[[session inputStream] open];
[[session outputStream] scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[[session outputStream] open];
彼らの代表になる:
[[session outputStream] setDelegate:self];
[[session inputStream] setDelegate:self];
デリゲートになったら、次のメソッドを実装する必要があります。
-(void)stream:handleEvent:{};
次に例を示します。
-(void)stream:(NSStream *)stream handleEvent:(NSStreamEvent)_event {
switch (_event)
{
case NSStreamEventHasBytesAvailable:
/* This part will be executed every time your rx buffer contains at least 1 byte */
switch(state) {
uint8_t ch;
/* Read byte per byte */
[stream read:&ch maxLength:1];
/* now ch contains a byte from your MFI device
** and 'read' function decrease the length of the rx buffer by -1 */
}
break;
}
}
これは、データをストリームに書き出すコマンドです。
/* txQueue is a NSData containing data to transmit. */
[[session outputStream] write:(uint8_t *)[txQueue bytes] maxLength:[txQueue length]];
于 2013-03-11T10:46:26.897 に答える