Programación de comunicación serie VisualBasic
1 descripción del control de comunicación mscomm.vbx
El control de comunicación mscomm.vbx se puede agregar directamente al formulario desde la caja de herramientas de VB y se puede utilizar para la comunicación. Si no existe tal control en la caja de herramientas, use los controles personalizados de las herramientas para agregar mscomm.vbx desde el subdirectorio del sistema de Windows a la caja de herramientas de vb.
1.1 Métodos de comunicación
mscomm.vbx tiene 2 formas diferentes de manejar y resolver los problemas de desarrollo y diseño de varios software de comunicación
1. Es similar a la función de devolución de llamada de ventana cuando se escribe software de Windows en C/C y es una forma poderosa de solucionar problemas. En el trabajo real, a menudo tenemos que lidiar con muchos eventos relacionados en la comunicación, por ejemplo: cuando los datos de la línea llegan al extremo local o el estado de la línea cd y la línea de señal rts cambian, debemos usar los eventos correspondientes para. Seguimiento y proceso. Se utiliza este control. Se implementa el evento oncomm, que también incluye la detección y el manejo de errores de comunicación y otros problemas. El valor commevent devuelve el evento de comunicación o código numérico de error más reciente. Ejemplos detallados de errores y eventos de controles de comunicación son:
mscomm-er-break recibió 1 señal de interrupción
señal de mscomm-er-cdtocd agotada
mscomm-ev -cdcd cambio de señal
2.Modo de consulta. Es responsabilidad del programador leer el valor de commevent y manejar los errores o eventos que ocurran. Por lo general, el diseño de aplicaciones simples puede adoptar este enfoque.
1.2 Propiedades de los controles de comunicación
La clave para utilizar controles de comunicación para compilar programas de comunicación es comprender y establecer con precisión las propiedades de los controles de comunicación. mscomm.vbx proporciona 27 propiedades sobre controles de comunicación, como:
commport: establece o devuelve el número de puerto de comunicación.
Configuración: Establece o devuelve el formato de comunicación de datos en forma de cadena: velocidad en baudios, paridad, bits de datos y bits de parada.
portopen: establece o devuelve el estado del puerto de comunicación (incluida la apertura y el cierre de un puerto de comunicación)
3. Ejemplo
El fondo de la aplicación de este programa es dcc95. El software del sistema de monitoreo automático del colector de polvo electrostático resuelve el problema de comunicación entre 1 computadora industrial (estación maestra) y 32 microcontroladores (subestaciones). La estructura de la red de autobuses entre la estación maestra y la subestación adopta el estándar de comunicación rs-485 y realiza la comunicación de datos en forma de preguntas y respuestas. Dado que las 32 subestaciones envían comandos de comunicación (comandos de enlace descendente) a la estación maestra, la estación maestra continúa enviando comandos de enlace descendente después de recibir los comandos de respuesta correspondientes (comandos de enlace ascendente) enviados de regreso por las subestaciones. Según los requisitos de las funciones del sistema, la estación maestra necesita enviar dos tipos de comandos: (1) comando sincrónico, que se activa mediante un temporizador y se envía una vez cada ciclo ls (2) comando aperiódico, que se activa mediante el; operador Provocado al mover el botón de comando correspondiente, se envía de forma aperiódica. El software del sistema de monitoreo automático está instalado en la estación principal y el programa de comunicación también está instalado en la estación principal como parte del software del sistema de monitoreo automático.
Este artículo solo enumera la lista de programas de demostración básicos para realizar pruebas al depurar programas de comunicación. Durante la prueba, se utilizó una PC como estación principal y otra PC simuló el trabajo de 32 subestaciones. Las dos PC utilizaron comunicación por puerto serie rs232c. Agregue 1 control de comunicación, 2 controles de temporizador y 1 control de botón de comando al formulario (formulario) del programa de demostración de comunicación de la estación principal. El control de comunicación (mscomm1) se utiliza para acceder al puerto serie, enviar y recibir datos del temporizador periódico (; periódico) se utiliza para controlar la estación maestra para enviar comandos periódicos a cada subestación cada segundo; el control del botón de comando (comando no periódico) y el control del temporizador no periódico (no periódico) se usan para enviar comandos aperiódicos.
La transmisión de datos utiliza comunicación basada en eventos. El atributo rtreshlod se establece de acuerdo con diferentes comandos de envío, lo que hace que el evento oncomm reciba datos.
2.1 Programa de inicialización para cada control en el formulario
Establezca los parámetros de funcionamiento del puerto serie de comunicación, establezca el intervalo de interrupción del temporizador periódico en ls y el intervalo de interrupción del Temporizador no periódico a 0,5 s.
subform-load()
mscomm1.commport=2'Seleccione el puerto serie com2
mscomm1.settings="9600, n8, 1"' Bit de onda velocidad 9600, sin bit de paridad, 8 bits de datos y 1 bit de parada
mscomm1.inputlen=0'la entrada leerá todo el contenido del buffer de recepción
mscomm1.inbuffersize=1024'. Establezca la longitud en bytes del búfer de recepción
mscomm1.portopen=true'Abra el puerto de comunicación
mscomm1.inbuffercount=0'Borre los datos del búfer de envío
mscomm1.outbuffercount=0'Borrar los datos del búfer de recepción
periodic.inteval=100'Establezca el intervalo de tiempo de ls para que el comando de telemetría se envíe una vez cada ls
nonperiodic. 500'Establezca un intervalo de tiempo de 0,5 s y consulte si el botón de comando está activado para determinar si se deben enviar comandos periódicos
command-pressed=false'El botón de comando está inactivo
durante- periodic=false'La transmisión de datos de comandos periódicos aún no ha comenzado
during-nonperiodic=false'La transmisión de datos de comandos periódicos aún no ha comenzado
endsub
2.2 Aperiódico programa de envío de comandos
Los comandos aperiódicos se envían en el programa de interrupción del temporizador no periódico de acuerdo con el estado del botón de comando y el estado de transmisión de datos del comando periódico.
subnonperiodic-command-click()
command-pressed=true' activación del botón de comando
endsub
subnonperiodic-timer()
ifduring-periodic=trueorcommand-pressed=false
thenexitsub' Si la transmisión de datos del comando periódico aún no ha finalizado o el botón de comando no está activado, salga del programa que envía comandos aperiódicos.
command-pressed=false'Devuelve el botón de comando a un estado inactivo
callsenddata(nonperiodic-command)'Envía un comando no periódico
mscomm1. rthreshold= r-nonperiodic-byte' Después de enviar un comando no periódico, configure el atributo rthreshold para que la estación maestra active el evento oncomm después de recibir el número establecido de bytes
endsub
2.3programa de temporización periódica
Enviar comandos periódicos en el programa de interrupción del temporizador periódico:
subperiodic-timer()
ifduring-nonperiodic=truethenexitsub'if no periódico Si la transmisión de datos del comando aún no ha finalizado, el programa para enviar comandos aperiódicos se cerrará.
during-periodic=true'Establece el estado de transmisión de datos del comando periódico en en curso
callsenddata(periodic-command)'Envía comandos periódicos
mscomm1 .rthreshold =r-periodic-byte'Después de enviar el comando periódico, la estación maestra recibe r-remot-edata-bytes, que pueden activar el evento oncomm
endsub
2.4Evento oncomm programa
De acuerdo con el valor de configuración del atributo rthreshold, cuando el carácter de byte correspondiente se recibe en el búfer de recepción, se activa el evento oncomm y los datos se reciben en el programa de interrupción.
submscomm1-oncomm()
selectcasemscomm1.commevent'Aquí puede insertar código para manejar varios errores o eventos
casemscomm-ev-receive
p>receivestring$=mscomm1.input
selectcasemscomm1.rthreshold
caser-periodic-byte'datos de respuesta del comando periódico
calldisposedata(periodic - command)'Procesar datos recibidos
duringperiodic=false'Establecer el estado de transmisión de datos del comando periódico al final
caser-nonperiodic-byte'Datos de respuesta de comandos no periódicos
calldisposedata(nonperiodic-command)'Procesar datos recibidos
during-nonperiodic=false'Establecer el estado de transmisión de datos del comando no periódico en finalizar
endselect
endselect
endsub
Con la actualización continua de la versión de vb, vb se convertirá en la herramienta de desarrollo de aplicaciones más rápida, fácil de usar y potente, y es el cliente ideal a nivel empresarial. Herramienta de desarrollo de software de aplicaciones de servidor Una de las herramientas preferidas.