質問

私は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

他のヒント

ケーブルのピン配置を確認してください。それは問題に貢献している可能性があります。

ケーブルのピン配置する

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top