首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RedPark串行电缆部分数据

RedPark串行电缆部分数据
EN

Stack Overflow用户
提问于 2012-07-29 07:12:34
回答 1查看 460关注 0票数 1

我有一个射频识别扫描仪连接到连接到iPad应用程序的RedPark串行电缆。当人们扫描他们的RFID卡时,我得到了-readBytesAvailable:的回调。然而,有时它不会在一个调用中给我整个RFID。有时它会在两个调用中发送它。

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

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

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

代码语言:javascript
复制
- (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];

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-30 23:02:25

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11705397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档