labview中visa读取时出现超时错误问题(错误代码:-1073807339)

在使用labview进行MODBUS通讯时,因为要经常用到visa读取和写入等操作,但是在读取过程中,经常会出现读取超时错误,错误代码为-1073807339

经过查找资料发现这是由于VISA 读取函数 的 “读取字节数” 这个输入端口设置十分关键。由于在串口通信中,如果指定读取 100 个串口缓冲区的字节数,如果当前缓冲区的数据量不足 100 个时,程序会一直停在 VISA 读取 这个节点上,如果在超时的时间(默认是 10 秒)内还没有凑足 100 个数据的话,程序就会报 “Time out” 的错误,如果超时时间设置得太长,有可能导致程序很长时间停止在 VISA 读取 这个节点上。

就比如我这里,实际读取的内容如图,由于是十六进制,两个字符一个字节,所以这里实际只有7个字节

但是我在配置读取操作的时候,字节数设置为65,这时候就会出现前面说的读取超时问题。

把65修改为7就可以解决问题

但有时候不知道缓冲区字节数多少怎么办,这时候就可以用到“Bytes at Port” 这个串口的属性节点,利用它可以自动获得缓冲区中字节数大小

但是还必须要加入一个延时操作,给硬件一定反应时间,否则也还是会报错

这时候就可以获得缓冲区正确的字节数,从而避免随意填写字节数造成读取超时或读取字节不完整

 

点赞

发表回复

电子邮件地址不会被公开。必填项已用 * 标注