문제

USB를 통해 RS232를 사용하여 PC에서 명령을 수신하고 데이터를 PC로 전송하는 센서가 있습니다.

명령을 전송하기 전에 센서를 재설정해야합니다 (DTR 라인 사용).

내장 된 .NET 직렬 포트를 사용하려고했지만 예상대로 DTR 라인을 구동하지 않는 것 같습니다. dtrenable 속성이 실제로 DTR 핀을 운전하는지 또는 악수하는 동안 만 가능하게하는지 궁금해지기 시작했습니다.

웹에서 찾을 수있는 다른 Serialport 구현도 Win32 API를 사용하지만 이러한 구현으로 포트를 닫는 것은 매우 어렵다는 것을 알게되었습니다. 코드를 진행하면 Waitone 명령에 붙어있는 것을 볼 수 있습니다.

System.io.ports.serialport로 DTR을 운전하는 방법을 아는 사람이 있습니까? 아니면 좋은 구성 요소를 알고 있습니까?

도움이 되었습니까?

해결책

나는 이것을 DTR을 테스트하기 위해 썼다. 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

다른 팁

케이블의 핀아웃을 확인하십시오. 문제에 기여할 수 있습니다.

케이블 핀아웃

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top