Я открыл следующие входные и выходные потоки через рамку внешних устройств:чтение и запись данных в потоки как исходные данные?
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];
}
Теперь у меня есть очень тупой вопрос, так как большинство из моих новичков вопросов. Как я могу отправить сырые 1 байт данных в поток? Скажем, я хочу отправить 0x06. Как мне это сделать?
А потом ... как читать данные из потока? Я буду отправлять данные для обработки байта байтом ... байты будут числами в байтовом диапазоне (0x00 - 0xFF).
Благодарим за терпение и помощь!
Другой немой вопрос: как я могу напечатать aByte в NSLog? Когда я делаю NSLog (@ "% @", aByte) или NSLog (@ "% s", aByte) ... программа вылетает. –
Спецификатор формата «% @» рассматривает соответствующий аргумент как указатель объекта. «% s» рассматривает его как указатель строки C для непредсказуемой кодировки. Сбой происходит из-за того, что 'aByte' не является допустимым указателем любого типа, поэтому разыменовывает его, обращается к недопустимому адресу. Для 'aByte' вы можете использовать либо«% hhu »(для десятичного), либо«% hhx »(для шестнадцатеричных). «u» и «x» означают целочисленный тип без знака. Один «h» означает «короткий int», а «hh» означает «char» (что и лежит в основе типа 'uint8_t'). –