在某个项目中,因为需要长期接收232串口数据,需要上位机的软件进行。
首先说明一下串口的基本性能参数:9600bps,有校验,采集时间一般几天,多的甚至一周以上时间。其它的硬件参数因为是硬件保证,不在此赘述。
对于这种长期采集的低速数据,开始以为比较容易搞定,比较数据量不大,按9600bps,一天下来,最大的数据量为:9600bps*3600s*24h/8b/1024/1024=98.87MB,如果通讯频次降低,数据量还可以降低。实际是两秒一次,数据量是50MB左右。
项目初期觉得数据量不大,现在电脑的性能应该很容易对付,毕竟内存都NGB的了,这个百兆数据真不算什么,完全可以利用现有的商用软件进行。
但实际操作发现还是有些麻烦。因为本来是想用现成的商用软件,不想专门开发软件的,就从网上搜集串口助手之类的软件,这个可以尝试,一搜一大把,N多。
但和控制器一连接,软后开始接收数据,可以保证,前面一段时间都正常,但时间一长问题就来了。
差一点的软件,不到十分钟,上位机接收软件无反应,死机了;好一些的软件,时间能稍微长一点,但一般也不超过半小时。
试了网上能下载的几乎所有的串口助手、大师等之类的软件,都是如此。
因为客户需要急用,没办法,硬着头皮按书上,做了串口的接收程序,利用MSCOMM控件,运行后前面几分钟确实可以正常接收,但时间一长,内存泄露,软件就没有响应了,但接收数据的界面会一直更新数据,一点保存就没有反应了。
这个问题一时有点僵住了,一时半会儿要全部从头开始,不能利用现有控件,从底层事件驱动写起,还是需要时间和工作量的。
甚至都想再降低通讯的频次,将数据量再降低一些。但一时半会儿,也没有和用户提出来。毕竟50MB数据量,在现在这个时代,真的不大。
多方打探,有人支招,试试STC的上位机软件,那里面的串口看看如何。
没办法,用STC的软件,上位机接收,长时间运行,好使。当然为了避免长期数据丢失,还是建议用户,每天存一次数据。
不是给STC打广告,每次看那个软件启动界面,就觉得有点低俗的感觉,但显然此软件还是花了功夫的,很多功能还是可以利用一下的。
后来因为涉及到数据的处理,对读出的数据进行加减乘除运算,这个时候才逐步摸清楚了为什么很多软件在数据量一多时,处理速度直线下降,数据处理的效率直接影响用户体验,这和软件的开发用得数据结构有直接的关系(未来待续)。
小结:
1.有些事情没有看上去那么简单,可能会在意想不到的地方卡壳;
2.很多时候,现成的软件都不是很好使,特别是用在长期运行的、有一定数据量要求的场合;
3.尽量在项目早期,考虑这些特殊应用需求,而且提前进行验证;
4.相对而言,专业公司的专门软件,还是靠谱一些,可以充分探索、利用。
火引冰薪 2020-10-19 10:31
pidaneng 2020-9-30 15:53
追忆流年寻梦少年 2020-9-29 10:55
二哲科技 2020-9-28 11:14
yzw92 2020-9-28 06:47