Но когда вызывается метод делегата 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
А в socketdidReadDatawithTag данные и тег не совпадают.
Подробнее здесь: https://stackoverflow.com/questions/208 ... socket-api
Мобильная версия