在LabVIEW环境下通过软件流控制PDA串行通信发生超时



主要软件:
主要软件版本: 7.0
主要软件修正版本: N/A
次要软件: N/A

问题:
我正在使用串行通信通过XON/XOFF软件的流控制将数据从我的PocketPC发送到主机。如果我发送字符XOFF来停止传输,并且在发送字符XON之前等待时间超过2、3秒,连接就会出现超时,我要如何修复这个问题?


解答:
在VISA串口配置中,串口初始化VI将超时时间默认设置为10秒。然后,PocketPC貌似在2、3秒钟之后就会超时而并不理会这个默认值。串行写入VI返回错误代码7意味着并非所有的字节都被发送。为了解决这个问题,
1、 在PDA的串行写入VI处增加一个额外的While循环。
2、 当没有错误代码返回的时候结束这个While循环。(i.e. 当所有的字节被发送)。具体请查看附件中的VI。
在一般的执行中,如果串行写入串口VI没有错误,While循环仅执行一次。然后,while循环会在输入XOFF暂停后开始等待,写VI将会每3秒出现超时。因此,程序会在每过3秒时返回错误代码7。While循环会忽略该超时错误,对同样的字符进行重发知道成功。这样可以串行写入的超时无效。如果要添加一个超时机制,
1、 在进入循环后获取时间。
2、周期性地在循环中查看时间并与开始时间和当前时间进行比较来计算是否到达超时的时间。
这两个VI都在附件中,都是使用XON/XOFF流控制来进行串行通信的。先运行主VI,然后再运行PDA VI来读取变化的字符。点击XOFF和XON按钮分别来暂停和重新开始通信。


相关链接:

附件:


SerialXonXoff.zip - SerialXonXoff.zip


报告日期: 03/03/2004
最近更新: 11/02/2015
文档编号: 372ENEHV