首页 > 解决方案 > 与 Velleman relais 卡进行串行通信

问题描述

我正在尝试将 Velleman 中继卡VM8090集成到我的 vb.net 项目中。不幸的是,Velleman 只提供了一个 32 位的 DLL,但我们的程序是 x64 编译的。因此,我尝试直接通过串行接口 (USB) 进行通信。

这是 Velleman 的协议描述

与 Velleman 提供的演示应用程序通信完美。设置中继状态后,我得到中继卡的响应。这显示在演示应用程序中。

在此处输入图像描述

疯狂的是:在 vb.net 中打开串行接口后,我不再在演示应用程序(以及 vb.net)中获得任何流量信息。但我需要这个 relais-status-infos (51h)。但即使卡不再发送数据,我仍然可以打开和关闭继电器。

此代码已导致卡停止发送信息。

myComPort = New SerialPort("COM3") With {
  .BaudRate = 19200,
  .DataBits = 8,
  .Parity = Parity.None,
  .StopBits = 1,
  .Handshake = Handshake.None,
  .ReadBufferSize = 1024,
  .WriteBufferSize = 1024}
myComPort.Open()
myComPort.Close()

标签: vb.netserial-port

解决方案


  • 确保只有 1 个程序使用 SerialPort,通常只有 1 个程序可以通过 SerialPort 读取和发送数据。还要检查设备是否连接到正确的 USB 端口(在这种情况下是 USB 端口 3)。

  • 检查所有 SerialPort 设置是否设置正确

  • 最后,在您的代码中,comPort 被打开并立即再次关闭。 myComPort.Open() myComPort.Close() 只有在您想要关闭程序或计算机与硬件之间的通信时才关闭 comPort。

我希望这会有所帮助。


推荐阅读