Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Cómo envía y recibe datos VB a través del puerto serie? Gracias, soy un novato. Espero que puedas adjuntar el código.

¿Cómo envía y recibe datos VB a través del puerto serie? Gracias, soy un novato. Espero que puedas adjuntar el código.

Existe un control de puerto serie MSComm en VB. Relativamente simple de usar.

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

1. Dos formas en que el control MSComm maneja la comunicación

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

1.1 Enfoque basado en eventos

La comunicación basada en eventos es una forma muy efectiva de manejar las interacciones 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 del puerto 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. El evento OnComm también puede 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 el proceso de programación, puede agregar su propio código de procesamiento a la función de manejo de eventos de 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 Método de consulta

El método de consulta se basa esencialmente en eventos, pero en algunos casos, este método 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 preferible si la aplicación es pequeña y autosostenible. Por ejemplo, si estuviera escribiendo un marcador telefónico simple, no habría necesidad de generar un evento para cada carácter recibido porque el único carácter esperando ser recibido es la respuesta "ok" del módem.

2. Propiedades comúnmente utilizadas del control MSComm

El control MSComm tiene muchas propiedades importantes, pero primero debe estar familiarizado 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 cadenas.

PortOpen establece y devuelve el estado del puerto de comunicación. Los puertos también se pueden abrir y cerrar.

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.CommPort[valor] (el valor es un valor entero que indica el número de puerto).

Tenga en cuenta que en tiempo de diseño, el valor se puede establecer en cualquier número del 1 al 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: establece y devuelve el número de caracteres que se recibirán antes de que el control MSComm establezca la propiedad CommEvent en comEvReceive y genere OnComm.

Sintaxis: object.Rthreshold [ = valor ] (valor de expresión entera, que indica el número de caracteres a recibir antes de generar el evento OnComm.

)

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

Propiedad CTSHolding: Determina si se pueden enviar datos consultando el estado de la línea Borrar para enviar (CTS). Clear To Send es una señal enviada por el módem a la computadora asociada indicando que la transmisión puede continuar. Esta propiedad no tiene ningún efecto en tiempo de diseño y es de solo lectura en tiempo de ejecución.

Sintaxis: object.CTSHolding (booleano)

La propiedad CTSHolding del control Mscomm establece el valor:

La línea True Clear To Send es alta.

Falso La línea Borrar para enviar está baja.

Descripción: si la línea Borrar para enviar está baja (CTSHholding = False) y se agota el tiempo de espera, el control MSComm establece la propiedad CommEvent en comEventCTSTO (Tiempo de espera de borrar para enviar) y genera el evento OnComm.

La línea Borrar para enviar se utiliza para el protocolo de enlace de hardware RTS/CTS (Solicitud de envío/Borrar para enviar). Si necesita determinar el estado de la línea Borrar para enviar, 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 el evento OnComm.

Objeto de sintaxis.STreshold [ = valor ] valor Expresión entera, que representa el número mínimo de caracteres en el búfer de transmisión antes de que se genere el evento OnComm.

Nota: 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 genera el evento OnComm cuando el búfer de transmisión está completamente vacío. Si el número de caracteres en el búfer de transmisión es menor que el valor, la propiedad CommEvent se establece en comEvSend y se genera el evento OnComm. El evento comEvSend se activa solo una vez cuando el número de caracteres cruza el umbral. Por ejemplo, si Sthreshold es igual a 5, comEvSend se produce solo cuando el número de caracteres en la cola de salida cae de 5 a 4. Si nunca hay más caracteres que Sthreshold en la cola de salida, el evento comEvSend nunca ocurrirá.

Constante de protocolo de enlace

Valor constante Descripción

comNone 0 Sin protocolo de enlace.

comXonXoff 1  Apretón de manos XOn/Xoff.

comRTS 2 Apretón de enlace de solicitud de envío/borrado de envío.

comRTSXOnXOff 3 Están disponibles los protocolos de enlace de solicitud de envío y de autorización de envío.

Constantes OnComm

Descripción de valores constantes

comEvSend 1 Enviar evento.

comEvReceive 2 Recibir eventos.

comEvCTS 3 cambios de línea para borrar el envío.

comEvDSR 4  La línea de listo del conjunto de datos cambia.

comEvCD 5  El operador detecta cambios de línea.

comEvRing 6  Detección de timbre.

comEvEOF 7 El archivo finaliza.

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

Sintaxis: object.Settings[ = valor]

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

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

"BBBB, P, D, S"

BBBB es la velocidad en baudios, P es verificación de 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"

Propiedad InputLen: establece y devuelve el número de caracteres que la propiedad Input lee del búfer de recepción.

Sintaxis objeto.InputLen [ = valor]

La sintaxis del atributo InputLen incluye las siguientes partes:

valor expresión entera, que indica que el atributo de entrada se recibe de el buffer de recepción Número de caracteres leídos.

Nota: El valor predeterminado del atributo InputLen es 0. Cuando InputLen se establece en 0, el uso de Input hará que el control MSComm lea todo el contenido del búfer de recepción.

Si el carácter InputLen en el búfer de recepción no es válido, la propiedad Input devuelve una cadena de longitud cero (""). Antes de usar Entrada, el usuario puede opcionalmente verificar la propiedad InBufferCount para determinar si la cantidad requerida de caracteres ya 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.