Domanda

Ho un sensore che utilizza RS232 sopra USB per ricevere comandi da un PC e inviare dati al PC.

Il sensore deve essere resettato (utilizzando la linea DTR) prima di un comando può essere inviato ad esso.

Ho cercato di usare il built-in porta seriale .net, ma non sembra di guidare la linea DTR come previsto. Sto cominciando a chiedersi se la proprietà DTREnable effettivamente guida il pin DTR, o se consente solo durante l'handshake.

Altre implementazioni SerialPort che ho potuto trovare sul web inoltre usa l'API Win32, ma trovo molto difficile chiudere la porta con queste implementazioni. Se faccio un passo attraverso il codice posso vedere si blocca su un comando WaitOne.

Qualcuno sa come guidare DTR con System.IO.Ports.SerialPort? O sapere di una buona componente là fuori?

È stato utile?

Soluzione

Ho scritto questo per testare DTR. funziona come previsto con il mio adattatore USB serialport. ho controllato collegando il cavo alla mia DataTracker (breakout box RS232, con LED). DTR non cambia.

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

Altri suggerimenti

Controlla la piedinatura del cavo. Si potrebbe contribuire al problema.

piedini dei cavi

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top