Red de conocimiento informático - Material del sitio web - Cómo leer información del puerto serie usando C#

Cómo leer información del puerto serie usando C#

Recientemente, un amigo me encargó que le ayudara a escribir un programa para leer el puerto serie. Antes, solo sabía que necesitaba llamar a la API de Windows para lograrlo. Después de comprobar MSDN, encontré eso desde entonces. Net framework 2.0, que encapsula la clase SerialPort. Net, lo que facilita la lectura del contenido del puerto serie.

SerialPort se encuentra debajo del sistema. Los constructores comúnmente utilizados del espacio de nombres IO.Ports son

1: puerto serie público (

2: nombre del puerto de cadena,

3: int baudRate, < / p>

4: Comprobación de paridad,

5: bit de datos int,

6: bit de parada, bit de parada

7: )

PortName: Número de puerto, como COM1, COM2, COM3...

Velocidad de baudios: Número de bits de datos por segundo, como 9600.

Paridad: ¿Existe paridad?

Bit de datos: bit de datos

Bit de parada: bit de parada.

Estos se pueden configurar en función de indicadores de hardware específicos.

Además, la clase SerialPort proporciona las siguientes propiedades.

Apretón de manos: establece el protocolo de protocolo de enlace (Ninguno. ¿Cuánto dura el tiempo de espera para los datos?

Leo datos principalmente a través del canal, por lo que uso el evento DataReceived de la clase SerialPort , así que tenga cuidado al llamar a este evento. No podemos actualizar directamente la interfaz de usuario en este evento, como asignar un valor al cuadro de texto. La explicación oficial de Microsoft es que este evento en realidad se activa en otro hilo (hilo que no es GUI). p>

El siguiente es un programa de ejemplo simple mío:

1: Usar el sistema;

2: Usar el modelo de componentes; >3: Usar el sistema.

4: Usar el sistema .Port;

5: Usar el sistema Windows .Forms

6:

7: Lector de espacio de nombres

8: {

9: Clase parcial pública MainForm: Formulario

10: {

11: SerialPort estático privado _ serialPort = null

12:

13: Formulario principal público ()

14: {

15: inicializar componente();

16: }

17:

18: void _ puerto serie _ datos recibidos (objeto remitente, SerialDataReceivedEventArgs e)

19: {

20: Esto. invoke(new EventHandler(DoUpdate));

21: }

22:

23: Private void DoUpdate(objeto s, parámetro de evento e)

24: {

25: this lb text = _ puerto serie.

leer existente();

26: }

27:

28: vacío privado btnStart_Click(remitente del objeto, EventArgs e)

29: {

30:_ puerto serie = nuevo puerto serie(" com 3 ", 9600, paridad. Ninguna, 8, bits de parada.

31 :_serialPort. apretón de manos = apretón de manos. RequestToSendXOnXOff

32:_Puerto serie. datos recibidos = nuevos datos serie recibidos evenhandler(_ puerto serie _ datos recibidos);

33:_puerto serie. open();

34:

35: este . BTN inicio habilitado = falso

36: }

37: }

38: }