我有一个传感器,该传感器使用USB上的RS232来从PC接收命令并将数据发送到PC。

在可以发送命令之前,需要重置传感器(使用DTR线)。

我尝试使用内置的.net串行端口,但它似乎并未按预期驱动DTR线路。我开始怀疑DTREnable属性是否实际上驱动了DTR引脚,还是仅在握手期间启用了它。

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

有人知道如何使用System.IO.Ports.SerialPort驱动DTR吗?还是知道那里有一个好的组件?

最佳答案

我写这是为了测试DTR。使用我的USB串行端口适配器可以正常工作。我通过将电缆连接到我的DataTracker(带有LED的RS232接线盒)进行了检查。 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

关于.net - 在.NET中使用System.IO.Ports.SerialPort驱动DTR,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/666805/

10-10 19:37