Algunas notas sobre el control MSCOMM
El control de comunicación MSComm de VB5.0/6 proporciona una serie de interfaces de comando de comunicación estándar, que permiten el establecimiento de conexiones de puerto serie y se pueden conectar a otros dispositivos de comunicación (como un módem).
También puede enviar comandos, intercambiar datos y monitorear y responder a varios errores y eventos que pueden ocurrir durante el proceso de comunicación, lo que le permite crear full-duplex, controlado por eventos.
Programa de comunicación dinámico, eficiente y práctico. Sin embargo, en el proceso de diseño del software de comunicación real, el control MSComm no es tan perfecto ni tan fácil de controlar como se imagina. Especialmente en chino Wln
Habrá más problemas al comunicarse bajo 95/98. A continuación se comenzará con la introducción básica y luego se discutirán gradualmente los problemas que surgen en la programación del control MSComm y las técnicas de programación.
1. Comunicarse con el control de MSComm
1. Conocimientos básicos de comunicación serial.
Generalmente, las computadoras tienen uno o más puertos serie, que son com1, com2,..., estos puertos serie también proporcionan dispositivos externos y PC para transmisión de datos y
El paso de la carta. Estos puertos serie actúan como intérpretes entre la CPU y los periféricos. Cuando los datos de caracteres se envían desde la CPU al periférico, estos datos de caracteres se convierten en bits en serie.
Transmitir datos; al recibir datos, los datos del flujo de bits se convierten en datos de caracteres y se pasan a la CPU. Además, en términos del sistema operativo, Windows utiliza un controlador de comunicación.
(COMM.DRV) llama a funciones API para enviar y recibir datos. Cuando se llaman funciones API con declaraciones o controles de comunicación, COMM.DRV las interpreta y las pasa al controlador del dispositivo.
Como programador de vB, necesitas escribir programas de comunicación. Sólo necesita conocer la interfaz proporcionada por el control de comunicación a la función AP1 de comunicación de Windows. En otras palabras, simplemente configure y monitoree el
Simplemente confíe en las propiedades y eventos del control.
2. Usando el control Mscomm
Antes de comenzar a utilizar el control MSComm. Primero es necesario comprender sus propiedades, eventos o errores.
Descripción de la propiedad
CommPort establece o devuelve el número del puerto de comunicación
La configuración establece o devuelve la velocidad en baudios, la paridad, los bits de datos y los bits de parada como cadenas
PortOpen establece o devuelve el estado del puerto de comunicación. Los puertos también se pueden abrir y cerrar
La entrada devuelve y elimina caracteres en el búfer de recepción.
La salida escribe la cadena en el búfer de envío.
La propiedad CommEvent devuelve uno de los siguientes valores para un evento o error de comunicación. Estas constantes también se pueden encontrar en la biblioteca de objetos del control.
Descripción del valor constante
ComEventBreak1001 recibió una señal de interrupción
ComEventCTSTO1002ClearToSendTimeout. Al enviar caracteres, dentro del evento especificado por el sistema, la línea CTS (ClearToSend) está en nivel bajo
ComEventDSRTO1003DataSetReadyTimeout. Al enviar caracteres, dentro del evento especificado por el sistema, la línea DSR (DataSetReady) está en nivel bajo
Error del marco de datos ComEventFrame1004. El hardware detectó un error en el marco de datos.
Desbordamiento del puerto ComEventOverrun1006. El carácter en el hardware aún no ha sido leído, llega el siguiente carácter y se pierde
ComEventCDTO1007CarrierDetectTime. Al enviar caracteres, la línea CD (CarrierDetect) tiene un nivel bajo dentro del evento especificado por el sistema. CD
También llamado RLSD (ReceiveLineSingalDetect, detección de señal de línea de recepción)
ComEventRxOver1008 recibe desbordamiento del búfer. No hay espacio en el buffer de recepción
ComEventRxParity1009 Error de paridad. Hardware detectado error de paridad 7
ComEventTxFull1010 El búfer de envío está lleno. Mientras se ponen en cola los caracteres de envío, el búfer de envío está lleno.
ComEventDCB1011 Se produjo un error inesperado al recuperar el puerto DCB (DeviceControlBlick).
Los eventos de comunicación incluyen las siguientes configuraciones:
Descripción del valor constante
El número de caracteres en el búfer de envío ComEvSend1 es inferior al valor de umbral
ComEvReceive2 recibió caracteres Rthreshold. Este evento continúa generándose hasta que los datos en el búfer de recepción se eliminan usando la propiedad Entrada.
La línea ComEvCTS3CTS(ClearToSend) cambió
La línea ComEvDSR4DSR(DataSetReady) cambió. Este evento ocurre cuando DSR cambia de 1 a 0
La línea ComEvCD5CD (CarrierDetect) cambia cuando ComEvRing6 detecta una señal de timbre. Algunos URAT (UniversalAsynchronousReciver-
-Transmisores, Receptor-Transmisor Asíncrono Universal) no soporta este evento
ComEvEOF7 recibió un carácter EOF (carácter ASCII 26)
Mensajes de error (control MSComm) La siguiente tabla enumera los mensajes de error que el control MSComm puede capturar:
Descripción del valor constante
ComInvalidPropertyValue380 Valor de propiedad no válido
Propiedad ComSetNotSupported383 de solo lectura
Propiedad ComGetNotSupported394 de solo lectura
Esta presencia no es válida cuando se abre el puerto ComPortOpen8000.
La configuración del tiempo de espera 8001 debe ser mayor que 0
ComPortInvalid8002 Número de puerto no válido
Los atributos 8003 solo son válidos en tiempo de ejecución
8004 Las propiedades son de solo lectura en tiempo de ejecución
Se ha abierto el puerto ComPortAleadyOpen8005
8006 El identificador del dispositivo no es válido o no es compatible
8007 La velocidad en baudios del dispositivo no es compatible
8008 El tamaño de byte especificado no es válido
8009 Error de parámetro predeterminado
8010 Hardware no disponible (bloqueado por otros dispositivos)
La función 8011 no puede asignar cola
El dispositivo ComNoOpen8012 no está abierto
8013 El dispositivo ya está abierto
8014 La notificación de comunicación no se puede utilizar
ComSetCommStateFailed8015 no puede establecer el estado de comunicación
8016 No se puede configurar el blindaje de eventos de comunicación
ComPortNotOpen8018 Esta presencia solo es válida cuando el puerto está abierto
8019 Dispositivo ocupado
ComReadError8020 Error de lectura del dispositivo de comunicación
ComDCBError8021 Se produjo un error interno al recuperar el bloque de control del dispositivo del puerto
Después de comprender las propiedades básicas anteriores, puede comenzar a escribir programas de permisos de comunicación. Cree un nuevo archivo de proyecto en VB5.0/6.0. Agregar grupo MicrosoftCommControl5.0
File, agregue el botón Comando a Simplified Form1 y asígnele el nombre CmdTest, asigne al control MSComm el nombre MSComm1 y agregue el siguiente código de programa.
PrivateSubcmdTestClick()'Abrir el puerto serie
MSComml.CommPort=2'Establecer Com2
IfMSComml.PortOpen=FalseEntonces
MSComm1.Settings="9600,n,8,1"'velocidad de baudios de 9600, sin paridad, 8 bits de datos, 1 bit de parada
MSComm1.PortOpen=True'Abrir el puerto serie
endif
MSComm1.OutBufferCount=0'Borrar el búfer de envío
MSComm1.InBufferCount=0'Deslizar el búfer de recepción
'Al enviar datos de caracteres, asegúrese de finalizar con un retorno de carro (vbcr)
MSComm1.Output="¡Este es un buen libro!"&vbCr
'Ingrese el número de teléfono o envíe el comando AT
MSComm1.Output="ATDT05778191898,&vbCr
'Al enviar datos de matriz de caracteres, tenga en cuenta que a ByteArray se le debe asignar un valor por adelantado
DimByteArrayasbyte()
'Definir matriz dinámica
ReDimByteArray(1)
'Redefinir el tamaño de la matriz
Matriz de bytes(0)=0
Matriz de bytes(1)=1
MSComm1.Output=ByteArray
FinSub
evento privadoSubMScomm()
SeleccionarCaseMSComm1.CommEvent
CasecomEvRecibir
DimBufferComoVariante
MSComm1.InputLen=0
'Recibir datos binarios
MSComm1.InputMode=ComInputModeBinary
Búfer=MSComm1.Entrada
'Recibir datos de caracteres
MSComm1.InputMode=comInputModeTexto
Búfer = MSComml.Entrada
Caso más
Selección final
Finsub
(Procedimiento 1)
1 2Lea el texto completo en la página siguiente