OBD コネクタを使用して、エンジン RPM、速度などの複数の値を一度に更新する必要がある 1 つのアプリケーションを開発しています。非同期のコマンド/レスポンスを実現する必要があります。このために[gcdAsyncSocket writeData:data withTimeout:-1 tag:uniqueTag];
、一意のタグを使用して非同期でコマンドを送信しています。
しかし、gcdAsync のデリゲート メソッド「socketDidReadDatawithTag」が呼び出されると、データは返されますが、適切ではありません。それぞれ 263 と 264 であり、 socketDidReadDatawithTag でタグ 264 を使用して応答を解析すると、時々 RPM のデータが返されます。(応答が混乱するか、OBD デバイスが非同期応答を処理できない)
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
データとタグが一致していません。