Cómo leer datos del puerto serie usando VBA
● Commport: establece o devuelve el número de puerto serie.
●Configuración: establece o devuelve los parámetros de comunicación del puerto serie en forma de cadena.
●Portopen: Puerto abierto: Establece o devuelve el estado del puerto serie.
●InputMode: Modo de entrada: establece o devuelve el tipo de datos recibidos.
●Inputlen: establece o devuelve el número de bytes leídos del búfer de recepción a la vez.
●InBufferSize: establece o devuelve el tamaño del búfer de recepción, el valor predeterminado es 1024 bytes.
● InBufferCount: establece o devuelve el número de caracteres en el búfer de recepción en espera de que la computadora los reciba.
●Entrada: leer datos del búfer de recepción y borrar el búfer; esta propiedad no es válida en tiempo de diseño y es de solo lectura en tiempo de ejecución.
●OutBufferSize: establece o devuelve el tamaño del búfer de envío, el valor predeterminado es 512 bytes.
●OutBufferCount: Establece o devuelve el tamaño del búfer de envío, el valor predeterminado es 512 bytes: Establece o devuelve el número de caracteres en el búfer de envío esperando ser enviados por la computadora.
●Salida: envía datos al búfer de envío. Esta propiedad no tiene ningún efecto en tiempo de diseño y es de solo lectura en tiempo de ejecución.
●Umbral: Este atributo es un umbral. Cuando el número de caracteres en el búfer de recepción alcanza este valor, el control MSComm establece la propiedad Commevent en ComEvReceive y genera un evento OnComm. Los usuarios pueden manejar el evento OnComm en consecuencia en el controlador de eventos OnComm. Si la propiedad Rthreshold se establece en 0, no se genera el evento OnComm. Por ejemplo, si desea recibir un carácter cuando llegue al búfer de recepción, puede establecer Rthreshold en 1. De esta forma, cuando se recibe un carácter en el búfer de recepción, se genera un evento OnComm.
●Umbral: Este atributo también es un umbral. Cuando el número de caracteres en el búfer de envío es menor que este valor, el control MSComm establece la propiedad Commevent en ComEvSend y genera un evento OnComm. Si la propiedad Sthreshold se establece en 0, no se genera el evento OnComm. Tenga en cuenta en particular que el evento OnComm solo se generará cuando el número de caracteres en el búfer de envío sea menor que este valor, y no se generarán más eventos OnComm a partir de entonces. Por ejemplo, si Sthreshold se establece en 3, el control MSComm establecerá la propiedad Commevent en ComEvSend y generará un evento OnComm solo cuando el número de caracteres en el búfer de envío baje de 3 a 2; es siempre 2, el evento OnComm no se generará. Esto evita eventos OnComm recurrentes antes de que se envíen los datos en el búfer de envío.
● CommEvent: Este es un atributo muy importante. Esta propiedad no tiene ningún efecto en tiempo de diseño y es de solo lectura en tiempo de ejecución. Una vez que ocurre un evento o error de comunicación en el puerto serie, el control MSComm asigna diferentes códigos a la propiedad CommEvent según el evento y error generado y genera un evento OnComm al mismo tiempo.
Los programas de usuario pueden manejar código diferente en el controlador de eventos OnComm. CommEvent Código de evento de comunicación Constante Significado
1 carácter de umbral aceptado por ComEvReceive. Este evento continuará generándose hasta que los caracteres se lean y eliminen del búfer de recepción utilizando el atributo de entrada.
2 ComEvSend El número de caracteres en el búfer de envío es menor que Sthreshold, lo que indica que el puerto serie ha enviado algunos datos y el programa puede usar la propiedad Salida para continuar enviando datos.
3 ComEvCTS Borrar para enviar El estado de la línea de señal cambia.
4 El estado de la línea de señal de datos listos de ComEvDSR cambia de 1 a 0.
5 El estado de la línea de señal de detección de portadora ComEvCD cambia.
6 ComEvRing detectó una señal de timbre.
7 ComEvEOF acepta caracteres de fin de archivo.
Código de error de comunicación CommEvent Constante Significado
1001 ComEvntBreak Se recibió una señal de interrupción.
1002 ComEvntCTSTO Se agotó el tiempo de espera para borrar para enviar la señal.
1003 ComEvntDSRTO Se agotó el tiempo de espera de la señal de datos listos.
1004 Error de cuadro ComEvntFrame.
1006 ComEvntOverrun El puerto serie excede el límite.
1007 ComEvntCDTO Tiempo de espera de detección de operador.
1008 ComEvntRxOver El buffer aceptado se desbordó y no había más espacio en el buffer.
1009 ComEvntRxParity Error de paridad.
1010 ComEvntTxFull El búfer de envío se desborda y el búfer no tiene espacio.
1011 ComEvntDCB Se produjo un error al recuperar el bloque de control del dispositivo para el puerto serie.