[英]How to capture asynchronous and intermittent data in iOS?
平台:带有TCP / IP通讯的iOS。
以下是传入数据流的示例。
$ PLTIT,HV,0.20,M,0.00,D,-58.70,D,0.30,M * 71
$ PLTIT,HV,1.90,M,0.00,D,-8.30,D,1.90,M * 41
有效的消息框架如下所示:
$PLTIT,HV,1.90,M,0.00,D,-8.30,D,1.90,M*41
但是有时候我会得到这个:
[time n+0] $PLTIT,HV,0.20,M,0.00,D,-58.70,D,0.30,M*71
[time n+1] $PLTIT,HV,1.90,M,
[time n+2] 0.00,D,-8.30,D,1.90
[time n+3] ,M*41
[time n+4] $PLTIT,HV,0.20,M,0.00,D,-58.70,D,0.30,M*71
[time n+5] $PLTIT,HV,0.20,M,
[time n+6] 0.00,D,-58.70,D,0.30,M*71
[time n+7] $PLTIT,HV,0.20,M,0.00,D,-58.70,D,0.30,M*71
[time n+8] $PLTIT,HV,0.20,M,0.00,D,-58.70,D,0.30,M*71
结果是中间的消息框破裂。
我可以在iOS下使用哪些对象/容器,以使我能够正确收集所有数据字节以进行解析,并且不会由于某些间歇性的通讯或设备而丢失任何位?
任何种类的简单缓冲区都可以解决问题。 如果您的数据始终是文本数据,那么您甚至可以追加到NSMutableString
。
您要做的就是追加数据,检查缓冲区是否包含$
字符的多个实例(我认为这是您在条目之间的定界符),然后检查每个条目是否除外。最后一个,将最后一个保留在缓冲区中,直到下一个数据块到达为止。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.