Управление DTR с помощью System.IO.Ports.SerialPort в .NET - PullRequest
3 голосов
/ 20 марта 2009

У меня есть датчик, который использует RS232 через USB для получения команд с ПК и отправки данных на ПК.

Датчик должен быть сброшен (с использованием линии DTR), прежде чем на него можно будет отправить команду.

Я попытался использовать встроенный последовательный порт .net, но, похоже, он не управляет линией DTR, как ожидалось. Я начинаю задумываться, действительно ли свойство DTREnable управляет выводом DTR или оно активирует его только во время рукопожатия.

Другие реализации SerialPort, которые я мог найти в Интернете, также используют Win32 API, но мне очень трудно закрыть порт с этими реализациями. Если я перешагиваю код, я вижу, что он застревает в команде WaitOne.

Кто-нибудь знает, как управлять DTR с помощью System.IO.Ports.SerialPort? Или знаете о хорошем компоненте?

Ответы [ 2 ]

4 голосов
/ 23 марта 2009

я написал это, чтобы проверить DTR. он работает, как и ожидалось, используя мой USB-адаптер последовательного порта. я проверил это, подключив кабель к моему DataTracker (распределительный блок 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
0 голосов
/ 24 марта 2009

Проверьте распиновку кабеля. Это может способствовать возникновению проблемы.

Распиновка кабеля

...