本帖最后由 wind6218 于 2017-5-26 11:37 编辑
我是菜鸟一直对
电子类特别感兴趣,从小如此,也喜欢
单片机,但是单片机需要C编程,原来自己学了下,很多语言都是开始讲语法,没有软件界面,这对认知深入就造成了障碍,脑子里面没有框架。后来发现
labview是个好东西,就类似于能看到电子
元器件一样组合,可以有点所见即所得的感觉。目前遇到个难题,串口传过来的数据是是如下格式的:
1.30448 ; *10** ; -180.21009 ; *10** ; 31.1<CR><LF>
1.30447 ; *10** ; -180.08256 ; *10** ; 31.1<CR><LF>
1.30447 ; *10** ; -180.24384 ; *10** ; 31.1<CR><LF>
1.31030 ; -16.12 ; -152.53937 ; *10** ; 31.1<CR><LF>
1.32775 ; -2.90 ; -94.95797 ; 0.74 ; 30.9<CR><LF>
1.33360 ; 1.24 ; -70.64938 ; 2.41 ; 30.8<CR><LF>
1.33394 ; 1.48 ; -48.29825 ; 2.91 ; 30.8<CR><LF>
1.33389 ; 1.44 ; -40.66545 ; 2.82 ; 30.7<CR><LF>
1.33343 ; 1.12 ; -33.26324 ; 2.12 ; 30.6<CR><LF>
*2********* ; *2*** ; *2********* ; *2*** ; 30.5<CR><LF>
数据每三秒发送一次,PC采用串口大师就可以监测到(串口大师监测到的没有<CR><LF>),要把数据分割成5组,
分隔符是“;”,我尝试了两种方案
1.中直接扫描:
但是这样的话,由于数据可能出现*,而星号中间的值是有意义的,代表仪表的错误号,但是扫描函数只能显示为0,所以舍弃了,遂采用以下方式
采用匹配函数,扫描第一个星号,然后用另一个匹配函数扫描第二个,这样能解决,但是整个程序很臃肿,请问有什么好的解决方案吗?
-
善用循环和移位寄存器。
一周热门 更多>