串口采集数据偶尔出现突变值

2019-07-18 02:21发布

本帖最后由 hejin515 于 2015-11-4 16:23 编辑

如图,程序是采集串口发送来的数据,处理后实时显示在波形图表上然后存入TXT文档。但是昨晚采集了一晚上,整体曲线是对的,但是发现有几个夸张的突变(如图,一晚上的室内温度变化)。现在想两种解决方法:一时看看谁知道我程序哪里有问题,所以出现了那么夸张的野值。二是,进行适当的滤波,比较前后两个温度值,如果差值太大就舍弃新值用上一次的值代替。但是不知道这种方法具体该如何实现。各位有何高见,请不吝赐教!多谢了!! 单通道调试程序.png


1103-04~14h.png



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
19条回答
hejin515
2019-07-18 21:43
本帖最后由 hejin515 于 2015-11-5 10:16 编辑
ShuiMoLise 发表于 2015-11-4 19:15
如果传感器发送的数据没有问题,估计还是程序有问题,程序周期性发生错误。你传感器发过来的数据帧有帧头帧尾吗,没有的话容易发生这种错误,尤其是数据帧是由多个字节组成,而且没有帧头帧尾的时候。你波特率别太高,太高的话虽然传输速度快了,但是容易受到干扰,如果非要用这么高波特率,要加校验,简单的如奇偶校验
。 ...

还有一个问题,我不启用终止符的话,假设设定一次串口读取六个字节,数据总是先收到AA,然后收到后面的五位,就这样分两次收到,甚至有时候分四次收到。但是我如果启用终止符的话(默认的0xA),就是一次收到六个字节的全部的数据(如:AA01 09B1 BBFF ,24.81℃),但是数据里面可能会出现终止字符0A,这时候就会出现问题,换成其他终止符也不行,因为都有肯能出现的。说明一下,第五位BB是校验位,是第二三四位的和(不知道这在串口中该设置成哪种校验位吗?);第二位01代表正,00代表负。

一周热门 更多>