采集串口的数据,实时的现实过来,下位机是每隔20MS发送一次数据的,因为要系统调试PID参数,每一次调试大约需要10分钟,这样计算的话,上位机需要波形图表现实的数据个数为50*60*10=30,000个,但是因为波形图表是实时现实的,有新的数据过来,原来的数据就会被覆盖住了,怎样才能做到把所有接受到的数据都可以现实在波形图表中呢?而不是被覆盖住,有遇到过这方面问题的吗?指点一下,谢谢了!!!
呵呵,需要这方面的知识,所有稍微研究了一下,发现了一点规律,总结了一下,有错误的地方还望指点:
波形图表保存的数据默认情况下是100个,程序如下图(很简单的程序):
现实图为:
可以看出默认的情况下,波形图表现实100个点, 因为波形图表默认的缓冲区大小为1024,在默认的情况下如果修改图形图标属性中的标尺项,选中自动调整标尺,如图:
在这种情况下,波形图表默认显示的是1024个数据的,这时是可以修改波形图表显示的数据个数,但是个数要小于1024的;
采集串口的数据,实时的现实过来,下位机是每隔20MS发送一次数据的,因为要系统调试PID参数,每一次调试大约需要10分钟,这样计算的话,上位机需要波形图表现实的数据个数为50*60*10=30,000个,但是因为波形图表是实时现实的,有新的数据过来,原来的数据就会被覆盖住了,怎样才能做到把所有接受到的数据都可以现实在波形图表中呢?
这个问题的解决方法为:
第一步:修改缓冲区为30,000
第二步:修给横坐标
因为波形图表默认是缓冲区是1024,在没有修改缓冲区的情况下,
波形图表能够保存历史数据,每次传递给它一个新数据,它就把新数据追加在原有的数据上,这样的话,可以运行程序,修改横坐标现实自己想观察的时间段数据波形(注意:在此情况下,只能观察1024个数据,如果采集的数据超过这个范围原来的数据就会被覆盖掉),如果想得到所有的数据波形,可以修改缓冲区,不过缓冲区的上限可参考:对于8位整数,最多可为数组分配计算机一半的内存空间,例如,如计算机内存为4 GB,数组最多可包含2147483647个数据点。