我有一个使用RS232通过USB传感器,用于从PC接收命令和数据发送到PC。

在传感器需要重置(使用DTR线)前的命令可以被发送给它。

我试图使用内置的.NET串口,但它似乎并没有带动DTR行预期。我开始怀疑,如果DTREnable属性实际上驱动DTR针,或者如果它只是使它握手期间。

其他的SerialPort实现,我能找到在网络上也使用Win32 API,但我觉得很困难,关闭端口,这些实现。如果我步执行代码我可以看到它卡住上的WaitOne的命令。

任何人都知道如何与System.IO.Ports.SerialPort驱动DTR?或者知道一个良好的成分在那里?

有帮助吗?

解决方案

我写此测试DTR。它的工作原理是用我的serialport USB适配器的预期。我通过电缆连接到我的DataTracker(RS232接口盒,带LED的)检查了它。 DTR确实变化。

Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    SerialPort1.Close()
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    SerialPort1.PortName = "COM5"
    SerialPort1.Open()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    SerialPort1.RtsEnable = True

    Debug.WriteLine("DTR +")
    System.Threading.Thread.Sleep(1000)

    SerialPort1.DtrEnable = True 'DTR -
    Debug.WriteLine("DTR -")
    System.Threading.Thread.Sleep(1000)

    SerialPort1.DtrEnable = False 'DTR +
    Debug.WriteLine("DTR +")
    System.Threading.Thread.Sleep(1000)

    SerialPort1.RtsEnable = False
End Sub

其他提示

检查电缆的引出线。这可能是导致该问题。

线管脚

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top