0

平台:带有 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 下使用哪些对象/容器来正确收集所有数据字节以进行解析,并且不会由于某些间歇性通信或设备而丢失任何位?

4

1 回答 1

0

任何种类的简单缓冲区都可以解决问题。如果您的数据始终是文本的,那么您甚至可以附加到NSMutableString.

您所要做的就是附加数据,检查缓冲区是否包含多个$字符的单个实例(我假设这是您条目之间的分隔符),如果确实如此,则处理除最后一个,将最后一个留在缓冲区中,直到下一个数据块到达。

于 2011-10-28T12:50:26.267 回答