我只想要中间的025.5有点麻烦,我现在是这样实现的,每收到一个字符就响应一次,用的是Mscomm控件,这样能够接收数据,但是这样不利于处理数据,串口是10ms发一次,我想100ms接收一次,一次读取缓存区的好几组数据取平均值,这样可以实现吗?有两点1,如何定时读取缓存区,因为接收是一个字符一个字符收的,2,处理数据有点难,处理的话得一组一组处理,但是接收后从第几位截取就会发生错误。。。求解~~
6 个解决方案
#1
接收后数据放在一个队列中,队列达到一定长度后开始处理
#2
可以举个例子吗,没用过这个
#3
1,你想多少ms接收一次都行,只要你的接受缓冲区足够大就行
2,你先判断你的数据是否都类似$l -003.9 +025.5 -158.9 *格式,如果是的话先找到“+”的位置,然后取后面的5位就可以了
2,你先判断你的数据是否都类似$l -003.9 +025.5 -158.9 *格式,如果是的话先找到“+”的位置,然后取后面的5位就可以了
#4
刚开始弄这个串口,还理不清思路,mscomm控件有这个功能吗,我是用的MFC编程的,mscomm上只有一个缓存区有多少字符开始接收数据,那么当我假设我设置是1,那么$l -003.9 +025.5 -158.9 *不是一个字符就传完的啊所以我找到+号往后5位很可能就不对了啊比如一个字符内最后四位是+025.
#5
写到临时文件最后统计 只写有效数据
#6
555。。。当时网速不好。。一下子开了两个贴。。200分啊,现在已经实现一半了,没有用mscomm控件,用的serialport的类,然后找"*"截取中间的一串字符,下面就是定时调用了,每次接收产生一个cstring的数据,我想把他存进数组里100ms调用一次,调用的时候取平均值~~个位有什么建议吗~~
#1
接收后数据放在一个队列中,队列达到一定长度后开始处理
#2
可以举个例子吗,没用过这个
#3
1,你想多少ms接收一次都行,只要你的接受缓冲区足够大就行
2,你先判断你的数据是否都类似$l -003.9 +025.5 -158.9 *格式,如果是的话先找到“+”的位置,然后取后面的5位就可以了
2,你先判断你的数据是否都类似$l -003.9 +025.5 -158.9 *格式,如果是的话先找到“+”的位置,然后取后面的5位就可以了
#4
刚开始弄这个串口,还理不清思路,mscomm控件有这个功能吗,我是用的MFC编程的,mscomm上只有一个缓存区有多少字符开始接收数据,那么当我假设我设置是1,那么$l -003.9 +025.5 -158.9 *不是一个字符就传完的啊所以我找到+号往后5位很可能就不对了啊比如一个字符内最后四位是+025.
#5
写到临时文件最后统计 只写有效数据
#6
555。。。当时网速不好。。一下子开了两个贴。。200分啊,现在已经实现一半了,没有用mscomm控件,用的serialport的类,然后找"*"截取中间的一串字符,下面就是定时调用了,每次接收产生一个cstring的数据,我想把他存进数组里100ms调用一次,调用的时候取平均值~~个位有什么建议吗~~