Paso 3: Formas de leer desde el puerto
Otro problema que se presenta con los métodos de lectura es que si no hay datos en el búfer de entrada cuando usted los llama, estancará la ejecución de su programa hasta que haya datos para leer (comportamiento similar al método Console.ReadLine(), el programa no continúe hasta que las visitas entren). Hay propiedades que puede establecer el método para volver después de un retraso específico de la fuerza, pero en general no desea que su programa de correr más lento de lo que debe.
Una mejor manera de estar continuamente leyendo es comprobar si hay datos para ser leídos en el búfer de entrada mediante la propiedad SerialPort.BytesToRead. Esta propiedad devuelve el número de bytes en el búfer de entrada que necesita ser leído. Con esto podríamos configurar un bucle que omitirá el código leer si no hay nada en el búfer de entrada. Aquí está un ejemplo:
mientras que (verdad)
{
tratar de
{
Si //if (mySerialPort.BytesToRead > 0) allí es datos del búfer de
{
mySerialPort.ReadByte(); leer un byte
}
otro código que puede ejecutar sin ser sostenido por Lee método.
}
catch (IOException ex)
{
lógica de gestión de error
}
}
Este procedimiento es más eficiente que el método anterior y funciona para muchas situaciones sencillas donde todos están haciendo realmente es continuamente lectura del puerto. Echemos un vistazo a un escenario diferente. ¿Qué pasa si estaban creando un gran complejo programa manejar muchas tareas y no sería capaz de trabajar dentro de un bucle infinito? Por suerte para usted, la clase SerialPort ha creado un evento que se provoca cada vez que hay nuevos datos en el búfer de entrada. Para quien no sabe es que un evento, que un evento es algo que interrumpe su programa cuando algo importante sucede, llama a un método para afrontar el evento y luego regresa a donde dejaste el programa. En nuestro caso cuando se reciben datos por el búfer de entrada, el evento detener el programa, llamar a un método donde sería más probable es que manejar los datos y luego volver a donde lo dejó nuestro programa. Ahondará en esto en el siguiente paso.