visual studio serialport serial read example ejemplo .net hardware serial-port components

studio - Conducción de DTR con System.IO.Ports.SerialPort en.NET



serial port visual studio 2015 (2)

Tengo un sensor que usa RS232 sobre USB para recibir comandos de una PC y enviar datos a la PC.

El sensor debe reiniciarse (utilizando la línea DTR) antes de poder enviarle un comando.

Traté de usar el puerto en serie .net incorporado, pero no parece conducir la línea DTR como se esperaba. Estoy comenzando a preguntarme si la propiedad DTREnable realmente maneja el pin DTR, o si solo lo habilita durante el intercambio de manos.

Otras implementaciones de SerialPort que pude encontrar en la web también usan la API de Win32, pero me resulta muy difícil cerrar el puerto con estas implementaciones. Si paso por el código, puedo ver que se bloquea en un comando de WaitOne.

¿Alguien sabe cómo manejar DTR con System.IO.Ports.SerialPort? ¿O sabe de un buen componente por ahí?


Escribí esto para probar DTR. funciona como se esperaba utilizando mi adaptador de puerto serie USB. Lo comprobé conectando el cable a mi DataTracker (caja de conexiones RS232, con LED). DTR sí 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


Verifique el pinout del cable. Podría estar contribuyendo al problema.

Pinouts de cable