求教关于字符串的分割,请诸位高手指点一二
时间:10-02
整理:3721RD
点击:
我是菜鸟一直对电子类特别感兴趣,从小如此,也喜欢单片机,但是单片机需要C编程,原来自己学了下,很多语言都是开始讲语法,没有软件界面,这对认知深入就造成了障碍,脑子里面没有框架。后来发现labview是个好东西,就类似于能看到电子元器件一样组合,可以有点所见即所得的感觉。目前遇到个难题,串口传过来的数据是是如下格式的:
1.30448 ; *10** ; -180.21009 ; *10** ; 31.1
1.30447 ; *10** ; -180.08256 ; *10** ; 31.1
1.30447 ; *10** ; -180.24384 ; *10** ; 31.1
1.31030 ; -16.12 ; -152.53937 ; *10** ; 31.1
1.32775 ; -2.90 ; -94.95797 ; 0.74 ; 30.9
1.33360 ; 1.24 ; -70.64938 ; 2.41 ; 30.8
1.33394 ; 1.48 ; -48.29825 ; 2.91 ; 30.8
1.33389 ; 1.44 ; -40.66545 ; 2.82 ; 30.7
1.33343 ; 1.12 ; -33.26324 ; 2.12 ; 30.6
*2********* ; *2*** ; *2********* ; *2*** ; 30.5
数据每三秒发送一次,PC采用串口大师就可以监测到(串口大师监测到的没有 ),要把数据分割成5组,
分隔符是“;”,我尝试了两种方案
1.中直接扫描:

但是这样的话,由于数据可能出现*,而星号中间的值是有意义的,代表仪表的错误号,但是扫描函数只能显示为0,所以舍弃了,遂采用以下方式

采用匹配函数,扫描第一个星号,然后用另一个匹配函数扫描第二个,这样能解决,但是整个程序很臃肿,请问有什么好的解决方案吗?

请教高手指点一二
这个程序不臃肿啊,多次匹配的话加个循环结构了。

善用循环和移位寄存器。
数组里有个函数,
谢谢楼上的,我正是采用的这种方法,最方面
