Ios RedPark串行电缆部分数据

Ios RedPark串行电缆部分数据,ios,serial-port,Ios,Serial Port,我有一个RFID扫描仪连接到一根RedPark串行电缆,该电缆连接到一个iPad应用程序。当人们扫描他们的RFID卡时,我会收到一个带有-readBytesAvailable:。然而,有时它并不能在一个电话里给我完整的RFID。有时它会通过两个电话发送 我如何确定我是否收到了所有东西?当我的代码获取第一个回调的数据并尝试使用它时,我会得到一个错误,因为假设RFID是“123456789”,有时我会收到一个带有@“12”的呼叫,第二个带有@“3456789”的呼叫。所以我尝试处理@“12”并得到一

我有一个RFID扫描仪连接到一根RedPark串行电缆,该电缆连接到一个iPad应用程序。当人们扫描他们的RFID卡时,我会收到一个带有-readBytesAvailable:。然而,有时它并不能在一个电话里给我完整的RFID。有时它会通过两个电话发送

我如何确定我是否收到了所有东西?当我的代码获取第一个回调的数据并尝试使用它时,我会得到一个错误,因为假设RFID是“123456789”,有时我会收到一个带有@“12”的呼叫,第二个带有@“3456789”的呼叫。所以我尝试处理@“12”并得到一个用户未找到的错误,然后我尝试处理@“3456789”并得到一个用户未找到的错误

如何判断我是否已完成数据读取?RFID的长度可能因供应商而异,因此我不能假设我需要读取一定数量的数字

这是我通过RedPark从扫描仪接收数据的方法:

- (void) readBytesAvailable:(UInt32)length {
    NSLog(@"readBytesAvailable: %lu", length);

    UInt8 rxLoopBuff[LOOPBACK_TEST_LEN];
    [self.rfidManager read:rxLoopBuff Length:length];

    NSString *rfid = [[NSString alloc] initWithBytes:rxLoopBuff length:length encoding:NSUTF8StringEncoding];

    NSLog(@"rfid=%@", rfid);

    [self receivedScanOfRFID:rfid];

}

串行端口使您无法控制打包。数据只是一个字节流,无法预测每个读取调用中出现哪些字节。您必须解析数据流本身以解释内容并理解消息的开始/结束。您要么需要寻找可靠的终止字符,要么可能使用超时方法,即执行多次读取,直到在一段时间内没有更多数据。我不建议使用超时方法。

发送超时的确切协议是什么?RFID是否以特定字符终止(例如NULL)?除了RFID号码之外,还有其他信息吗?