labvIEW 运行一段时间后,串口接收的速度变慢

我用labvIEW的串口程序进行数据的接收,设置了2秒的延迟,刚开始一段时间,数据正常,都是每隔两秒就来一次数据,但是一段时间后,数据就变得混乱了,数据接收的时间就变长了,有时要10S左右,才能接收到一个数据,这是为什么呢?我已经使用了接收的属性节点了,但是还是会出现这个问题, 该怎么解决呢?请求大家的帮助

这个有可能是几方面原因:
1. CPU变慢,因为程序结构设计不合理;
2. 内存占用过多,因为数组等控件存储数据累积太多;
3. 串口数据因为没有识别码与校验位,万一产生数据丢失,无从判断;所以当读取的数据达不到要求长度时,就会等待,直到超时才返回。这跟使用属性节点优化性能没多大关系。

还木进一步看看你的程序设计,才能诊断问题。追问

我是通过串口采集数据,然后先将数据保存到数据库,再将采集到的数据,从数据库中读出,显示到一个表格中,也就是每读取到一个数据,就重新将数据库中的数据读取一次,会不会是因为数据过多,造成延迟呢?

追答

嗯,这么回事。
频繁地读写数据库而且间隔时间很短,当然会很慢。(经验感觉)
而且这样效率也很低。
你可以将串读出的数据,通过两个数据流:一个直接显示到表控件上,一个存储到数据库,这样就可以了。
最好的建议:如果数据刷新很快,那么数据缓存到一定时间、一定数据后,再一次写入数据库,这样效率高一些。

还有一点,如果你每次读数据库,都是将所有的数据读出来再显示到表控件上,那么随着数据的增多,读写速度肯定就会越来越慢。所以,要想办法在提高程序效率方面思考改进。

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-08-10
1>内存问题。比如, 用字符串显示控件或者Chart 啥的,数据不停的累积到里面显示?
2>CPU占用过高。比如,没有设置循环的延迟,用wait until done 这个时间控件,设置1ms延迟就可以

具体分析的话,就需要更完整些的程序框图了
~~~~
第2个回答  2011-08-10
串口号非法。

labvIEW 运行一段时间后,串口接收的速度变慢
这个有可能是几方面原因:1. CPU变慢,因为程序结构设计不合理;2. 内存占用过多,因为数组等控件存储数据累积太多;3. 串口数据因为没有识别码与校验位,万一产生数据丢失,无从判断;所以当读取的数据达不到要求长度时,就会等待,直到超时才返回。这跟使用属性节点优化性能没多大关系。还木进一步看看...

labview的程序,为什么用的时间一长,程序越来越慢
最有可能的情况是,把‘打开Excel连接’、‘串口初始化’或者‘USB初始化’这些操作放在了循环内,并且没有执行关闭的操作。简单的说,创建连接或硬件初始化是需要向系统申请内存资源的。关闭连接是让系统释放这些资源。而如果把这些操作放在循环中,软件就会不断的申请新的资源。所以时间一长就会很慢。解...

在用labview控制串口的时候 串口通讯很慢 该怎么解决
你所谓的一运行,就打开串口,是因为你程序编程时候,没有设定在程序点击某个操作后,再打开串口。最简单的,就是设置一个条件结构,只有选择好端口后,再进入条件结构执行端口。有兴趣 baidu 小草手把手教你串口。里面有讲解。建议还是使用事件结构。

LabVIEW读串口延迟。下位机以10Hz广播数据,1帧不超过15字节,我采用定时...
别用定时循环,就用while循环,把我做过的串口接收方面的发上来,串口接收判断方面的就根据你的实际情况定,希望能对你有帮助

Labview串口通信不稳定
端口配置的时候注意一下那个终止符,如果终止符定义并启用了(默认是这样的,你可以禁用它),接到你定义的终止符(默认为0x10,LF的ASCII码)后接收会自动停止。

你好,我的labview子面板运行后接收不到串口助手发来的数据,没有任何反...
你程序是不是在while里面的,接收数据的话你的visa要一直处在运行状态。你难道是要直接读取你自己发送的数据,这样子不行的,你用个串口调试助手发送数据,然后用visa接收

labview串口通信循环
你这个程序有两个问题,首先按下“写入”键后,这个数据就会以最快的速度向串口写入数据。而串口是个慢速设备,这个写法会丢失数据,且时间一长会缓冲溢出而导致崩溃。修正的方法是在写入这里加一个延时,比如200毫秒才写一次。其次,这样的两个While循环不合理,比如关闭了第一个循环一定导致第二个循环...

在labview串口接收数据时,怎么可以使它一直接受下位机发送过来的...
就是一直读串口,用while循环,优利德的很多款程控仪表都是这样子单向不停的发给上位机

LabVIEW中,程序中串口传输的字节数大于1024个,而串口接收的字节数只有10...
硬件上进行改变设计,例如RS232转K-LINE通讯等

我用LABVIEW编了一段与485通讯的程序,之后怎么一直连不通额
单从两张图很难解决,给你提供几点思路:确认初始化串口的各参数正确 加VISA OPEN VI或确保串口已正确打开 串口那个调用节点wire mode重新配置(最好用它的枚举值中的一个)或删掉

相似回答