Обновление асинхронных значений с использованием 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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