症状: 超时, 数据破坏, 数据丢失, 上传数据的错误信息

原因: PC上使用的RS-232 I/O芯片(UART)只有16字节缓冲器。在没有实时流量控制时,可能会发生缓冲器超限,导致数据丢失。如果丢失的字符恰好是线路输入,软件一直没有看到行尾结束符,从而可能会导致超时。其它字符丢失可能会导致返回的数据错误。

微软串行驱动程序没有实现真正的硬件流量控制功能。它完全在软件驱动程序中实现流量控制,因此很容易受到PCI总线锁定、优先权较高的中断及中断失效的影响。采用基于软件的流量控制具有历史原因,因为早期的硬件设计很不可靠:当时曾使用大量的克隆版16550 UART,许多设备存在缺陷。微软唯一的解决方法是开发一种使用尽可能少的功能的软件驱动程序,因此硬件流量控制在驱动程序中完成。目前,微软不能改变驱动程序,修复这个问题。

只有在笔记本电脑上才会出现这个问题,可能是因为与功率管理和/或PCMCIA适配器有关的软件开销所致,但从理论上讲,它也可能会发生在台式机上。提高处理器速度及降慢RS-232波特率都不足以实现满意的结果。

解决方法: 对关键事务型应用不要使用RS-232,而是使用34970A的GPIB端口。

  1. 可以把82357A USB / GPIB转换器连接到便携式PC的USB端口及34970A上的GPIB端口上。这种选项可以用于带有USB 及Windows 2000, 98 SE或XP的笔记本电脑中。Windows 3.1, 95 和NT不支持USB。
  2. 使用E5810A LAN到GPIB网关。网关可以连接到34970A 上的GPIB端口上,然后连接到PC的局域网上(或直接连接到PC的局域网端口上)。局域网网关兼容Windows® 98 (SE)/Me/NT/2000/XP。
  3. 安装PCMCIA GPIB卡。许多厂商提供了PCMCIA GPIB卡,一般支持Windows® 98 (SE)/Me/NT/2000/XP。
  4. 切换到使用82350B GPIB卡或82357A USB-GPIB转换器的台式PC上。82350A兼容Windows® 98 /Me/NT/2000/XP。台式电脑上还没有见到RS-232问题,它们使用相同的硬件,理论上也会有相同的问题。

注:任何选项都必需改变控制程序。命令串保持相同,但需要改变通信设置。可以使用SCPI命令"SYSTem:INTerface {GPIB | RS232}"或通过前面板,以编程方式改变仪器模式。此外,用来初始化RS-232参数的任何代码,如波特率、奇偶性和流量控制,都可以从程序中删除。必需改变打开RS-232端口使用的代码,以打开GPIB接口。这可以在Visual Basic中通过下述命令实现:

Dim A_34970A As AgtIOServer
Dim iomgr As KeysightIOUtilsLib.AgtIOManager
Set iomgr = New AgtIOManager
Set A_34970A = io_mgr.ConnectToInstrument ("GPIB::9").

如果必须把GPIB地址改变为默认值(9)之外的其它地址,只能从前面板上改变地址。如需更多信息,请查看手册。