本帖最后由 wangpeng59 于 2018-3-9 21:21 编辑
一个PC在线采集系统,之前发过一个帖子咨询,得到了好多高人的指点,说实话当时很多人说的什么也不太懂。。
之前的帖子:https://bbs.21ic.com/icview-2400956-1-1.html
几个月来按照网上开源的框架和自学(确实也没有一直做这个项目),有了一点儿眉目了。。
现在选择了C#做这个项目,先说一下我的思路:
1.我上传一帧的数据格式是:5A 5A ……(16字节数据,每2字节其实是一个采集通道的数据)…… A5 A5,一帧为固定不变的20字节,没设长度位和校验位;
2.要求数据的采集频率为1kHz(即1ms一帧),并上传至PC(因为需要导出的Excel或TXT文档要求有所有数据);
3.从串口缓冲区接收到的数据传入队列1,另开一线程进行数据处理(掐头去尾,中间数目每2个字节调换顺序并拼成一个int数据),处理后又放入另外一个队列2中,队列2用于画图使用;
4.画图考虑到系统的处理和视力接受能力,打算50ms或者100ms描一个点。
画图感觉问题不大,但数据处理部分还是不太清楚,目前还是有几个问题需要请教:
1.如果我100ms描一个点,那在这100ms之前系统应该已经采集进了100帧数据,那我描上的这个点应该是这100帧数据的平均值吗?
2.串口多长时间轮询一次?每次串口能接收到多少数据?我看有的资料说一次可能还不足1帧,是不是太慢了……
3.我觉得我的数据处理工作量比较大,(需要掐头去尾,中间数目每2个字节调换顺序并拼成一个int数据,还要取100次的平均值……),这样会不会在100ms内做不完这些工作而新的数据又来了呢?或者我的这种数据处理思路本身就是错的?抱歉我C#只是临时抱佛脚,基础不行,因此我对他们之间的速度配合没有一丁点儿的概念~
4.网上参考的范例,队列(也不知是不是叫队列)用的是Queue,但很多文字资料说用的是List,请问这两个有区别吗?
5.因为我采集的数据多且快,请问队列或数组可以存多少字节的数据有上限吗?
6.画图描点应该是使用定时器吧?每100ms去队列2(或其它地方)拿一次数据?
求大神给个指导,有例程或者资料就更好了,谢谢!!
|