我使用.net framework(2.0)开发软件。我使用串口与多个设备通信没有任何问题。
但是,我尝试与新的通信,但不可能写或读任何命令。
在尝试使用我的软件进行任何通信之前,我先使用 Hilgraeve 中的 HyperTerminal 进行测试。因此,如果我发送* IDN?抛出串口,设备会切换到远程模式并回答类似 ANRITSU,MS9710A,V1.20383 的内容。所以使用的参数似乎很好。
但是,当我尝试从.net框架使用IO.Ports.SerialPort时,无法进行通信。经过多次测试,我可以说:
似乎问题来自Write函数,因为当我使用 MyPort.Write(“* IDN?”)时,似乎没有任何东西写在缓冲区上。我这样说是因为设备没有切换到远程模式。
HyperTerminal与我的IO.Ports.SerialPort之间的所有(可见)参数相同:9600 bps,8-N-1,无握手。 IO.Ports.SerialPort的缓冲区大小具有默认值。
我已经测试了几个其他的.net应用程序找到谷歌,没有人能够与设备通信,我也测试软件使用框架1.1之前MS添加IO.Ports.SerialPort到框架。
所以我的结论是来自IO.Ports.SerialPort的问题,但我不知道是什么问题。我有一些线索:
当速度低于19200bps(在我的情况下为9600)时,IO.Ports.SerialPort无法通信。我想因为我没有任何问题通信的所有其他设备的最低速度都是19200bps(编辑:我发现其他设备工作在9600bps,我使用我的软件来与它通信,问题来自另一点)
我还没有看到一个可以解决问题的参数
下一版本的框架(3.0,3.5或4.0)可能会有所帮助吗?我没有找到任何有关上一版本的IO.Ports.SerialPort类更新的文档。
那你对这个问题有什么看法吗?以前有人遇到过这种问题吗?
更多一些信息:软件是使用vb.net在Win 7上使用VS 2010开发的。我还在有问题的设备上测试了GPIB通信没有问题,但我不想使用GPIB协议。
感谢您的帮助。