Обновление асинхронных значений с использованием API GCDAsynSocket.IOS

Программируем под IOS
Anonymous
Обновление асинхронных значений с использованием API GCDAsynSocket.

Сообщение Anonymous »

Я разрабатываю одно приложение, в котором мне нужно обновить несколько значений, таких как скорость вращения двигателя (об/мин), скорость и т. д. параметры одновременно, используя разъем OBD-II. Мне нужно добиться асинхронной команды/ответа. Для этого я отправляю команды с помощью [gcdAsyncSocket writeData:data withTimeout:-1 tag:uniqueTag]; асинхронно с уникальным тегом.
Но когда вызывается метод делегата gcdAsync "socketDidReadDatawithTag", он возвращает данные, но это неправильно. Например, если я отправил одну команду «010C\r» (считывание скорости вращения) и «010D\r» (скорость) с тегами 263 и 264 соответственно, и если я анализирую ответ с тегом 264 в сокетеDidReadDatawithTag, иногда он возвращает мне данные скорости вращения (мой ответ путается или устройство OBD-II не может обработать асинхронный ответ).

Код: Выделить всё

    NSLog(@"Command Sent for Async : %@",commandString);
NSData *data = [commandString dataUsingEncoding:NSASCIIStringEncoding];

long obdObjectTag = [obdObject getPIDTag];//Unique Tag
[gcdAsyncSocket writeData:data withTimeout:-1 tag:obdObjectTag];

NSData *readData = [@">" dataUsingEncoding:NSASCIIStringEncoding];
[gcdAsyncSocket readDataToData:readData withTimeout:-1
tag:obdObjectTag];
А в socketdidReadDatawithTag данные и тег не совпадают.

Подробнее здесь: https://stackoverflow.com/questions/208 ... socket-api

Вернуться в «IOS»