.NETでSystem.IO.Ports.SerialPortでDTRを駆動
-
21-08-2019 - |
質問
私はPCからのコマンドを受信し、PCにデータを送信するためにUSBを介してRS232を使用してセンサーを持っています。
センサは、コマンドがそれに送信される前に(DTRラインを使用して)リセットする必要がある。
私は、組み込みの.NETシリアルポートを使用しようとしましたが、予想通りDTRラインを駆動していないようです。私はDTREnableプロパティが実際にDTRピンをドライブしている場合、またはそれが唯一のハンドシェーク中にそれを可能にしている場合疑問に始めています。
私はウェブ上で見つけることができるその他SERIALPORTの実装ものWin32 APIを使用していますが、私はそれが非常に困難なこれらの実装でポートを閉じるために見つけます。私はコードをステップ実行した場合、私はそれがWAITONEコマンドにはまり見ることができます。
誰もがSystem.IO.Ports.SerialPortでDTRを駆動する方法を知っていますか?またはそこに良い成分から知っていますか?
解決
私はDTRをテストするためにこれを書きました。私のUSB SERIALPORTアダプタを使用して期待どおりに動作します。私は私の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
他のヒント
ケーブルのピン配置を確認してください。それは問題に貢献している可能性があります。
所属していません StackOverflow