我有一個OBDII設備,它有一個網絡服務器。我通過wifi連接。 我想創建一個應用程序來發送命令並讀取從設備收到的數據。
我首先使用Terminal進行測試。我使用telnet會話進行連接,並可以發送一個命令(0104)並獲得響應。這工作正常。
現在,我想創建一個應用程序來做同樣的事情。 我知道我可以連接使用:
- (void)initNetworkCommunication {
CFReadStreamRef readStream;
CFWriteStreamRef writeStream;
CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)@"192.168.0.10", 35000, &readStream, &writeStream);
inputStream = (NSInputStream *)readStream;
outputStream = (NSOutputStream *)writeStream;
[inputStream setDelegate:self];
[outputStream setDelegate:self];
[inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[inputStream open];
[outputStream open];
}
連接工作正常。
然後,我想發送一個命令。我使用這個:
- (IBAction)sendCommand:(id)sender {
NSString *response = [NSString stringWithFormat:@"%@", commandText.text];
NSData *data = [[NSData alloc] initWithData:[response dataUsingEncoding:NSASCIIStringEncoding]];
[outputStream write:[data bytes] maxLength:[data length]];
}
但我沒有得到一個正確的答案,我得到一個?背部。所以設備不能識別命令...
我在做什麼錯了?這是錯誤的格式嗎?它不應該是一個字符串?或者它應該與ASCII不同?
我已經試着把\ r放在命令的末尾,但這並沒有幫助。