больше проблем с потоком вывода, необработанные данные и нечетный вывод. что я сделал не так?

Я открыл следующие входные и выходные потоки Bluetooth с помощью Apple External Accessory Framework:

session = [[EASession alloc] initWithAccessory:acc forProtocol:protocol];

if (session){
    [[session inputStream] setDelegate:self];
    [[session inputStream] scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
    [[session inputStream] open];

    [[session outputStream] setDelegate:self];
    [[session outputStream] scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
    [[session outputStream] open];
}

Я пишу ему так:

uint8_t aByte[] = {0x02, 0x06, 0x04};
[[session outputStream] write:aByte maxLength:4];
NSLog(@"%d", aByte[2]);

Я читаю оттуда так:

        case NSStreamEventHasBytesAvailable:
            NSLog(@"NSStreamEventHasBytesAvailable");
            uint8_t readBuf[128];
            memset(readBuf, 0, sizeof(readBuf));
            NSInteger numberRead = [[session inputStream] read:readBuf maxLength:3];

            if(numberRead < 0){
                NSError *error = [[session inputStream] streamError];
                NSLog(@"%@", [error localizedDescription]);
            }
            else if (numberRead > 0) {
                NSLog(@"numberRead: %d", numberRead);
                NSLog(@"readBuf: %s", readBuf);
            }
            else{
                break;
            }
            break;

Я ДОЛЖЕН получать обратно от устройства «AA4», потому что оно отправляет мне обратно два альфа-символа, за которыми следуют 3 байта, которые были отправлены ему в последнем событии потока. ЖК-экран на устройстве сообщает, что он получил 2, 4 и 6. И он сообщает, что он отправил A, A и 4. Но "NSLog(@"readBuf: %s", readBuf); " всегда печатает:

AA + a upside question mark//(can't seem to copy and paste that symbol from xcode)

У кого-нибудь есть идеи, что я сделал не так?

Спасибо!


person Jay Kim    schedule 24.06.2012    source источник


Ответы (1)


Неважно...

Я печатал каждый байт отдельно, а не как строку. Напечатал первые два как char, а последний как десятичный. Вывод в стиле C для меня все еще странный...

person Jay Kim    schedule 24.06.2012