Acerca del uso de MSComm en VC6.0

Revelando las propiedades del control MSComm

Las propiedades del control MSComm

(Algunas con las que debe estar familiarizado - CommPort: configurar y devolver el número de puerto de comunicación: establece y devuelve la velocidad de transferencia de datos, la paridad, los bits de datos y los bits de parada en forma de cadena. PortOpen: establece y devuelve el estado del puerto de comunicación, y también puede abrir y cerrar el puerto; Entrada: Devuelve y elimina caracteres del búfer de recepción. Salida: Establece una cadena en el búfer de transmisión)

1)Propiedad CommPort

void SetCommPort(short nNewValue short GetCommPort()); ;

Esta propiedad establece y devuelve el número de puerto serie de la conexión. Windows utilizará este puerto serie para comunicarse con el mundo exterior. En tiempo de diseño, nNewValue 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.

2)Atributo de configuración

void Settings(LPCTSTR lpszNewValue); String GetSettings();

Este atributo se utiliza para establecer y devolver la velocidad de transmisión de datos. Parámetros de verificación de paridad, bit de datos y bit de parada. Cuando se abre el puerto, si el valor es ilegal, el control MSComm genera el error 380 (valor de atributo ilegal). Entre ellos, lpszNewValue está representado por una cadena y consta de cuatro valores de configuración. Tiene el siguiente formato de composición:

"BBBB,P,D,S"

BBBB son los datos. velocidad de transmisión, P es la verificación de paridad, D es el bit de datos y S es el bit de parada. El valor predeterminado de Valor es: "9600,N,8,1". Los valores legales de velocidad de transmisión de datos pueden ser 110, 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400. 56000, 57600, 115200, 12800, 25600.

El valor de paridad se puede establecer en cualquier valor de la siguiente tabla.

Descripción del valor de configuración

Eparidad par (EVEN)

MMark paridad (MARK)

NSin paridad (NONE)

Paridad impar (ODD)

Paridad espacial S (SPACE)

El número de bits de datos puede ser 4, 5, 6 o 7,8.

El número de bits de parada puede ser 1, 1,5 o 2.

Nota: La conexión de comunicación solo puede tener efecto cuando los valores de los atributos de Configuración de ambas partes en la comunicación son los mismos.

3) Atributo de protocolo de enlace

Este atributo se utiliza para configurar o devolver el protocolo de protocolo de enlace de hardware, que es el protocolo interno establecido entre la PC y el dispositivo de comunicación para controlar el caudal. El valor del atributo se puede establecer en cualquiera de las siguientes tablas.

Descripción del valor de configuración

Valor predeterminado de ComNone0, sin protocolo de intercambio

comXOnXOff 1XON/XOFF protocolo de enlace

ComRTS 2RTS/CTS protocolo de enlace

comRtsXOnXOff3 Los protocolos de enlace RTS/CTS y XON/XOFF están disponibles

4)Atributo RThreshold

void SetRTreshold(short nNewValue short GetRTreshold();

p>

Antes de que el control MSComm establezca la propiedad CommEvent en comEvReceive y genere OnComm, la propiedad RThreshold establece y devuelve el número de caracteres que se recibirán. Aquí nNewValue es un parámetro corto que indica la cantidad de caracteres que se recibirán antes de generar el evento OnComm.

Después de recibir caracteres, si la propiedad RThreshold se establece en 0 (valor predeterminado), no se generará el evento OnComm. De lo contrario, esta propiedad es un umbral. Cuando el número de bytes en el búfer de recepción alcanza o excede este valor, se generará un evento OnComm. Por ejemplo, si RThreshold se establece en 1, cada carácter recibido en el búfer de recepción provocará el. Control MSComm para generar evento OnComm.

5)Atributo CTSHolding

void SetCTSHolding(BOOL bNewValue); BOOL GetCTSHolding();

La configuración del atributo se muestra en la siguiente tabla.

Descripción de la función del valor de configuración

La línea TRUECTS es de nivel alto

La línea FALSECTS es de nivel bajo

Este atributo determina si puede Envía datos consultando el estado de la línea CTS. CTS es una señal enviada por el módem a la computadora conectada 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.

Si la línea CTS está baja (CTSHholding =

FALSE) y se agota el tiempo de espera, el control MSComm establece la propiedad CommEvent en comEventCTSTO (Borrar para enviar

Tiempo de espera ) Y generar evento OnComm. La línea CTS se utiliza para el protocolo de enlace de hardware RTS/CTS. Si necesita determinar el estado de la línea CTS, el atributo CTSHolding proporciona un método de consulta manual.

6)Propiedad STreshold

void SetSHreshold(short nNewValue); short GetSTreshold();

Antes de que el control MSComm establezca la propiedad CommEvent en comEvSend y genere el Evento OnComm, establece y devuelve el número mínimo de caracteres permitidos en el búfer de transmisión. Aquí nNewValue son datos de tipo corto, que representan el número mínimo de caracteres en el búfer de transmisión antes de que se genere el evento OnComm.

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 0, 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 ocurre 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á.

7)Atributo InputMode

void SetInputMode(long nNewValue); long GetInputMode();

El atributo de acceso se utiliza para establecer o devolver el tipo de transmisión. datos. Sus valores y significados básicos se muestran en la siguiente tabla.

Establecer descripción del valor del valor

ComInputModeText (predeterminado) 0 recupera datos en modo texto a través del atributo de entrada

ComInputModeBinary1 recupera datos en modo binario a través del atributo de entrada Datos

8)Propiedad InputLen

void SetInputLen(short nNewValue); short GetInputLen ();

Esta propiedad se utiliza para establecer y devolver la propiedad de entrada del búfer de recepción El número de caracteres leídos de la zona. nNewValue es un valor corto que indica el número de caracteres que la propiedad de entrada lee del búfer de recepción.

El valor predeterminado de la propiedad InputLen es 0. Al configurar InputLen 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 optar por verificar la propiedad InBufferCount para determinar si la cantidad requerida de caracteres ya está en el búfer. Esta propiedad es útil al leer datos de una máquina cuyo formato de salida son datos de longitud fija.

9)Atributo InBuffersize

void SetBufferSize(short nNewValue); short GetInBufferSize();

El atributo InBuffersize se utiliza para establecer o devolver el tamaño del búfer de entrada. El valor predeterminado es 1024 bytes.

10)Propiedad InBufferCount

void SetInBufferCount(short nNewValue); short

GetInBufferCount();

La propiedad InBufferCount se utiliza para entrada de retorno El número de bytes que esperan ser leídos en el búfer. El búfer de recepción se puede borrar estableciendo este valor de atributo en 0.

11)Atributo de entrada

VARIANT GetInput();

El atributo de entrada indica que una cadena de caracteres se elimina del búfer de recepción y los datos recibidos en el buffer es Los datos se leen en variables. El valor del atributo es una variable VARIAN. Esta propiedad no está disponible cuando el puerto no está abierto y es de solo lectura en tiempo de ejecución.

Nota: Cuando el valor del atributo InputMode

es 0 (modo texto), la variable contiene datos de cadena. Cuando el valor del atributo InputMode es 1 (modo binario), la variable contiene datos de matriz de bytes.

12)Propiedad PortOpen

void SetPortOpen(BOOL bNewValue); BOOL GetPortOpen();

La propiedad PortOpen se utiliza para abrir o cerrar el puerto. Si bNewValue se establece en TRUE, el puerto se puede abrir; si se establece en FALSE, el puerto se puede cerrar.

Generalmente, el puerto se abre cuando se inicia el programa y se cierra cuando finaliza el programa. Cuando finalice la aplicación, el control MSComm cerrará automáticamente el puerto serie. Antes de abrir el puerto, asegúrese de que el atributo CommPort esté ajustado al número de puerto correcto. Además, el dispositivo serie del usuario debe admitir la configuración del atributo Configuración. Si el dispositivo de hardware no admite algunas configuraciones en la propiedad Configuración, es posible que el hardware no funcione correctamente.

13)Atributo OutBuffersize

void SetOutBufferSize(short nNewValue);

El atributo OutBuffersize se utiliza para establecer o devolver el tamaño del búfer de envío y el El valor es una expresión entera, que indica el número de bytes en el búfer de transmisión, el valor predeterminado es 512 bytes. Cuanto mayor sea el búfer de envío, menos memoria podrá utilizar su aplicación. Sin embargo, si el búfer de envío es demasiado pequeño, se desbordará a menos que se utilice un protocolo de reconocimiento.

14)Propiedad OutBufferCounter

void SetOutBufferSize(short nNewValue); short

GetOutBufferSize();

La propiedad OutBufferCounter se utiliza para devolver y enviar El número de bytes que esperan ser enviados en el búfer. Puede borrar el búfer de envío estableciendo esta propiedad en 0.

15) Atributo de salida

void SetOutput(const VARIANT & newValue);

El atributo de salida se utiliza para escribir flujo de datos en el búfer de envío. Las propiedades son variables VARIANTES. Esta propiedad no está disponible cuando el puerto no está abierto y solo se puede escribir en tiempo de ejecución.

Nota: El atributo Salida puede enviar datos de texto o datos binarios. Al transmitir datos de texto, los datos de tipo carácter deben colocarse en variables VARIANT; cuando se transmiten datos binarios (es decir, por bytes), los datos de tipo byte deben colocarse en variables de tipo VARIANT. Si normalmente envía cadenas ANSI a su aplicación, puede enviarlas como texto. Si los datos contienen caracteres de control incrustados, caracteres NULL, etc., deben pasarse como binarios.

16)Propiedad CommEvent

short GetCommEvent();

Si ocurre un error o evento durante el proceso de comunicación, se generará el evento OnComm y su propiedad el valor será cambiado. El valor del atributo CommEvent refleja el tipo de error o evento, y se puede realizar la misma operación según el valor del atributo en el diseño de comunicación. Esta propiedad no está disponible cuando el puerto no está abierto y es de solo lectura en tiempo de ejecución. Los valores de configuración de errores de comunicación y eventos de comunicación se muestran en las dos tablas siguientes, respectivamente.

Valor de configuración de error de comunicación

Descripción del valor de configuración

comEventBreak 1001 recibió una señal de interrupción

comEventCTSTO1002CTS timeout

comEventDSRTO1003DSR tiempo de espera

comEventFrame1004 error de trama, el hardware detecta un error de trama y el formato establecido por ambas partes es inconsistente, se producirá este error

comEventOverrun1006 Sobrevelocidad del puerto. El hardware no lee un carácter antes de que llegue el siguiente y el carácter se pierde

comEventCDTO 1007 Tiempo de espera de detección de datos

comEventRxOver1008 Desbordamiento del búfer de recepción

comEventRxParity1009 Comprobación de paridad Error de validación

comEventTxFull1010 Desbordamiento del búfer de transmisión, lo que indica que el búfer de salida está lleno y no se pueden enviar más caracteres al búfer

comEventDCB1011 Inesperado al recuperar el puerto, bloque de control del dispositivo ( DCB) Error

Valor de configuración del evento de comunicación

Descripción del valor de configuración

comEvSend1 envía evento. El contenido del búfer de envío es menor que el valor especificado por el evento de recepción SThreshold

comEvReceive2.

El número de caracteres en el búfer de recepción alcanza el valor RTreshold. Este evento continuará ocurriendo hasta que se eliminen los datos en el búfer. Este evento se puede utilizar para programar el proceso de recepción de datos.

comEvCTS3CTS cambio de línea.

cambio de línea comEvDSR4DSR

cambio de línea comEvCD5CD

detección de timbre comEvRing6

finaliza el archivo comEvEOF7. El carácter de fin de archivo (código ASCII 26) aparece en los datos recibidos

17) Atributo DTREnable

void SetDTREnable(BOOL bNewValue();

DTRENable Propiedad que determina si la comunicación usando la línea DTR es válida. DTR es una señal enviada por la computadora al módem indicando que la computadora está esperando que se transmitan datos.

18)Atributo RTSEnable

void SetRTSEnable(BOOL bNewValue); BOOL GetRTSEnable();

El atributo RTSEnable determina si el uso de la línea RTS es válido. Normalmente, una computadora envía una señal RTS a un módem conectado, solicitando permiso para enviar datos.

19)Propiedad EOFEnable

void SetEOFEnable(BOOL bNewValue); BOOL GetEOFEnable();

La propiedad EOFEnable determina si el control MSComm busca el final de el archivo durante el proceso de entrada (EOF) carácter. Si se encuentra el carácter EOF, la entrada se detendrá y se activará el evento OnComm. En este momento, la propiedad CommEvent se establece en comEvEOF, donde bNewValue es una expresión booleana para determinar si el evento OnComm se activa cuando se encuentra el carácter EOF. encontró. Cuando bNewValue se establece en TRUE, el evento OnComm se activa cuando se encuentra el carácter EOF. De lo contrario, cuando el valor VALOR se establece en

FALSO (predeterminado), el evento OnComm no se activará cuando se encuentre el carácter EOF.

Nota: Cuando la propiedad EOFEnable se establece en FALSE, el control OnComm no buscará caracteres EOF en el flujo de entrada.

20) Atributo CDHolding

void SetCDHolding(BOOL bNewValue); BOOL GetCDHolding();

Determine si hay transmisión actual consultando el estado del CD. línea. CD es una señal enviada desde el módem a la computadora conectada que indica que el módem está en línea. Esta propiedad no tiene ningún efecto en tiempo de diseño y es de solo lectura en tiempo de ejecución. El valor de configuración del atributo es: cuando bNewValue es VERDADERO, la línea del CD es de nivel alto; cuando bNewValue es FALSO, la línea del CD es de nivel bajo; Tenga en cuenta que cuando la línea del CD es alta (CDHolding=TRUE) y se agota el tiempo de espera, el control MSComm establece la propiedad CommEvent en comEventCDTO (error de tiempo de espera del CD) y genera el evento OnComm.

Nota: Es especialmente importante detectar una transmisión perdida en una aplicación host, como un tablero de anuncios, porque la persona que llama puede colgar (abandonar la transmisión) en cualquier momento. El CD también se llama Recibir

Detección de señal de línea (RLSD).

21)Atributo DSRHolding

void SetDSRHolding(BOOL bNewValue); BOOL GetDSRHolding();

Determina el estado de la línea DSR. El módem envía la señal DSR a la computadora conectada indicando que está lista para funcionar. Esta propiedad no tiene ningún efecto en tiempo de diseño y es de solo lectura en tiempo de ejecución.

Cuando la propiedad DSRHolding devuelve TRUE, indica que la línea DSR está alta y cuando devuelve FALSE, indica que la línea DSR está baja. Cuando la línea DSR es alta (DSRHolding=TRUE) y se agota el tiempo de espera, el control MSComm establece la propiedad CommEvent en comEventDSRTO (tiempo de espera de preparación de datos) y genera el evento OnComm. Este atributo es particularmente útil al escribir rutinas de protocolo de enlace DSR/DTR para máquinas DTE (equipo terminal de datos).