1

外部アクセサリと非同期でデータを送受信することについて混乱しています。MFi外部アクセサリを使用しています。EADemoを確認しましたが、データの送受信が同期されているようです。これについての提案は、事前に感謝します。

4

1 に答える 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 に答える