【发布时间】:2012-04-14 13:02:01
【问题描述】:
早上好,
我正在从连接到 iPad 的串行设备中检索字节流。连接后,提供的 SDK 将使用已转发的字节调用委托方法。
串口设备通过SDK转发的读数格式如下:
!X1:000.0;
一旦连接到串行设备,委托方法将立即开始接收数据 - 这可能处于各种完成状态,即
:000.00;
我需要做的是建立一种具体的方法来拆分从串行设备返回的读数,以便我可以操作数据。
一些尝试过的选项是:
只需将接收到的字符串连接一段固定的时间,然后在“;”上拆分 NSString特点。虽然这有点低效,并且不允许我动态操作数据
-(void)receivingDelegateMethod:(NSString *)aString {
if(counter < 60){
[self.PropertyString stringByAppendingString:aString];
}else{
NSArray *readings = [self.PropertyString componentsSeparatedByString: @";"];
}
}
通过查找“!”来确定起点字符,然后将生成的子字符串附加到 NSString 属性。之前对委托方法的所有调用都将附加到此属性,然后删除前 10 个字符。
我知道还有其他选项,例如 NSScanners 和 RegEx,但我想在浪费更多时间使用不同方法之前征求社区的意见。
谢谢
【问题讨论】:
-
首先,使用 NSMutableString 而不是重复的 stringByAppendingString 调用。至于你的算法,我会丢弃字符直到第一个
!。 -
另一种选择是继续解析接收到的片段,然后识别丢失的片段并在解析中丢弃它。
-
(对于循环输入缓冲区,简单地使用 char 数组可能会更好。)
标签: iphone objective-c ipad parsing nsstring