Red de conocimientos sobre prescripción popular - Remedios caseros - ¿Cómo envía y recibe datos VB a través del puerto serie? Gracias. Soy novato y me gustaría adjuntar el código. Gracias.

¿Cómo envía y recibe datos VB a través del puerto serie? Gracias. Soy novato y me gustaría adjuntar el código. Gracias.

Hay un control de puerto serie MSComm en VB. Usa algo más simple.

Se proporcionan dos métodos para abordar los problemas de comunicación: uno es un método controlado por eventos y el otro es un método de consulta.

Dos formas de manejar la comunicación con 1. Control MSComm

El control MSComm proporciona las dos formas siguientes de manejar la comunicación: modo controlado por eventos y modo de consulta.

1.1 Modo controlado por eventos

La comunicación controlada por eventos es una forma muy efectiva de manejar la interacción del puerto serie. En muchos casos, es necesario que se le notifique cuando ocurre un evento, por ejemplo, cuando un carácter está en el búfer de recepción en serie, o cuando llega un carácter o se produce un cambio en Carrier Detect (CD) o Request to Send (RTS). línea. En estos casos, puede utilizar el evento OnComm del control MSComm para capturar y controlar estos eventos de comunicación. Los eventos OnComm también pueden verificar y manejar errores de comunicación. Para obtener una lista de todos los eventos de comunicación y errores de comunicación, consulte la propiedad CommEvent. Durante la programación, puede agregar su propio código de manejo al controlador de eventos OnComm. La ventaja de este método es que el programa responde rápidamente y tiene una alta confiabilidad. Cada control MSComm corresponde a un puerto serie. Si una aplicación requiere acceso a varios puertos serie, se deben utilizar varios controles MSComm.

1.2 Modo de consulta

El método de consulta está controlado por eventos por naturaleza, pero en algunos casos es más conveniente. Después de cada función clave del programa, se pueden consultar eventos y errores verificando el valor de la propiedad CommEvent. Este enfoque puede ser mejor si la aplicación es pequeña y autosostenible. Por ejemplo, si escribe un marcador telefónico simple, no es necesario generar un evento para cada carácter recibido porque el único carácter que espera ser recibido es la respuesta "OK" del módem.

Propiedades comunes de 2.2. Control MSComm

El control MSComm tiene muchas propiedades importantes, pero primero debe familiarizarse con algunas propiedades.

CommPort establece y devuelve el número del puerto de comunicación.

La configuración establece y devuelve la velocidad en baudios, la paridad, los bits de datos y los bits de parada como una cadena.

PortOpen establece y devuelve el estado del puerto de comunicación. También puedes abrir y cerrar puertos.

La entrada devuelve y elimina caracteres del búfer de recepción.

La salida escribe una cadena en el búfer de transmisión.

Descrito a continuación:

Atributo CommPort: Establece y devuelve el número del puerto de comunicación.

Objeto de sintaxis. Comport [valor] (el valor es un valor entero que representa el número de puerto).

Tenga en cuenta que en tiempo de diseño, el valor se puede establecer en cualquier número entre 1 y 16 (el valor predeterminado es 1). Sin embargo, si utiliza la propiedad PortOpen para abrir un puerto que no existe, el control MSComm generará el error 68 (Dispositivo no válido).

Nota: La propiedad CommPort debe configurarse antes de abrir el puerto.

Propiedad RThreshold: el número de caracteres que se recibirán se establece y se devuelve antes de que el control MSComm establezca la propiedad CommEvent en comEvReceive y genere OnComm.

Sintaxis: objeto. rthreshold [= valor] (Expresión de valor entero que indica el número de caracteres a recibir antes de generar un evento OnComm).

Nota: Después de recibir caracteres, si la propiedad Rthreshold se establece en 0 (el valor predeterminado), no se generará ningún evento OnComm. Por ejemplo, si Rthreshold se establece en 1, cada carácter recibido por el búfer de recepción hará que el control MSComm genere un evento OnComm.

Atributo CTSHolding: determine si los datos se pueden enviar consultando el estado de la fila Permitido enviar (CTS). Un "claro para enviar" es una señal enviada por el módem al ordenador en cuestión, indicando que la transmisión es posible. Esta propiedad no tiene ningún efecto en tiempo de diseño y es de solo lectura en tiempo de ejecución.

Sintaxis: objeto.

CTSHolding (booleano)

El valor de configuración de la propiedad CTSHolding del control Mscomm:

La línea de compensación real es alta.

La línea de liquidación de productos genuinos y falsos es baja.

Descripción: si la línea de envío claro es baja (CTSHholding = False) y se agota el tiempo de espera, el control MSComm establece la propiedad CommEvent en ComeventCTSTO (tiempo de espera de envío claro) y genera un evento OnComm.

La línea de borrar para enviar se utiliza para el protocolo de enlace de hardware RTS/CTS (solicitud de enviar/borrar para enviar). Si necesita determinar el estado de las filas de envío borradas, la propiedad CTSHolding proporciona un método de consulta manual.

Propiedad SHreshold: el control MSComm establece y devuelve el número mínimo de caracteres permitidos en el búfer de transmisión antes de establecer la propiedad CommEvent en comEvSend y generar un evento OnComm.

Objeto de sintaxis. SHreshold [= valor] Valor de expresión plástica que representa el número mínimo de caracteres en el buffer de transmisión antes de que se genere un evento OnComm.

Descripción: Si la propiedad Sthreshold se establece en 0 (valor predeterminado), el evento de transferencia de datos no generará un evento OnComm. Si la propiedad Sthreshold se establece en 1, el control MSComm generará un evento OnComm cuando el búfer de transferencia esté completamente vacío. Si el número de caracteres en el búfer de transferencia es menor que el valor, la propiedad CommEvent se establece en comEvSend y se genera un evento OnComm. El evento comEvSend solo se activa una vez cuando el número de caracteres supera el umbral. Por ejemplo, si Sthreshold es igual a 5, comEvSend solo se producirá cuando el número de caracteres en la cola de salida se reduzca de 5 a 4. Si la cantidad de caracteres en la cola de salida nunca excede el umbral, el evento comEvSend nunca ocurrirá.

Constante de protocolo de enlace

Descripción del valor constante

ComNone 0 Sin protocolo de enlace.

Apretón de manos Comxonoff 1xon/xoff.

com RTS 2 protocolo de enlace de solicitud de envío/borrado de envío.

Comrtsxonoff 3 solicitud para enviar y borrar para enviar pueden estrechar la comunicación.

Constante OnComm

Descripción del valor constante

ComEvSend 1 envía un evento.

ComEvReceive 2 recibe eventos.

ComEvCTS 3 Borrar cambio de línea de envío.

Cambios en la línea de preparación del conjunto de datos ComEvDSR 4.

El operador ComEvCD 5 detecta cambios de línea.

Detección de timbre.

Fin de 7 archivos.

Propiedad de configuración: establece y devuelve parámetros para velocidad en baudios, paridad, bits de datos y bits de parada.

Sintaxis: objeto. Configuración [=valor]

Descripción: Cuando el puerto está abierto, si el valor es ilegal, el control MSComm generará el error 380 (valor de propiedad ilegal).

El valor consta de cuatro valores de configuración, el formato es el siguiente:

BBBB, PhD, Master

BBBB es la velocidad en baudios, P es la paridad , D es el número de bits de datos y S es el número de bits de parada. El valor predeterminado de value es:

9600, N, 8, 1

Atributo InputLen: establece y devuelve el número de caracteres que el atributo de entrada lee del búfer de recepción.

Objeto de sintaxis. Valor de entrada

La sintaxis de la propiedad InputLen consta de las siguientes partes:

Expresión de valor entero que indica el número de caracteres que la propiedad de entrada lee del búfer de recepción.

Descripción: El valor predeterminado de la propiedad InputLen es 0. Cuando InputLen se establece en 0, el uso de Input hará que el control MSComm lea todo lo que hay en el búfer de recepción.

Si los caracteres de entrada en el búfer de recepción no son válidos, la propiedad Entrada devuelve una cadena de longitud cero (" ").

Antes de usar Entrada, el usuario puede optar por verificar la propiedad InBufferCount para determinar si la cantidad requerida de caracteres está en el búfer. Esta propiedad es útil cuando se leen datos de una máquina cuyo formato de salida son datos de longitud fija.