在.NET驱动DTR与System.IO.Ports.SerialPort
-
21-08-2019 - |
题
我有一个使用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
其他提示
检查电缆的引出线。这可能是导致该问题。
不隶属于 StackOverflow