我有一个传感器,该传感器使用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/