RedPark串行电缆部分数据

时间:2012-07-28 23:12:34

标签: ios serial-port

我将RFID扫描仪连接到连接到iPad应用程序的RedPark串行电缆。当人们扫描他们的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];

}

1 个答案:

答案 0 :(得分:2)

串口无法控制打包。数据只是一个字节流,无法预测每次读取调用中出现的字节数。您必须解析数据流本身以解释内容并理解消息的开始/结束。您可能需要查找可靠的终止字符,或者可能使用超时方法,您可以执行多次读取,直到您在一段时间内不再获取数据为止。我不推荐超时方法。