You are on page 1of 4

Adquisicin de datos en un puerto serie (RS232)

Se encuentra ninguna teora de este modo de comunicacin. Simplemente, la lista de tareas a realizar, junto con un programa de ejemplo en VBA5. Objetivo: Recoger directamente en una hoja de clculo Excel de los valores producidos por un organismo externo los medios utilizados en el ejemplo:

Excel 97 o superior (slo para Windows) VBA5 o superior activeX Mscomm32.ocx (*) balance equipado con una salida RS232 con su documentacin un pequeo programa en Visual Basic o VBA

(*) Este ActiveX no se incluye con Office 2000 o versiones anteriores, pero slo con Visual Basic. Primera bsqueda en los archivos del sistema de archivos "MScom *. ocx". Si lo son, saltar el siguiente prrafo, de lo contrario usted puede ahorrar mediante la instalacin del programa ActiveX XL_RS232 (copia gratuita) La distribucin incluye el archivo "pesees.xls" con el siguiente ejemplo. Aplicacin: - descargue el archivo XL_RS232.ZIP - descomprimir el archivo - ejecutar SETUP.EXE - abrir el archivo "pesees.xls" - ejecutar la macro para comprobar el funcionamiento - para adaptar el programa VBA para comunicarse con el puerto serie en el archivo "pesees.xls" El siguiente ejemplo utiliza el puerto COM1. Es posible comunicarse con el puerto paralelo (no documentado aqu), utilizando el control ActiveX de IOport.ocx (shareware) para win98 o control NTport.ocx NT.

La ejecucin del programa


Es fundamental contar con la documentacin del dispositivo para conectarse a determinar la configuracin del puerto serie. El programa puede ser adaptado a cualquier 97 MS-Office o Visual Basic. Desde Excel, seleccione el editor de VBA ( ALT + F11).

Inserte un mdulo insertar un formulario de usuario en la "caja de herramientas", busque el icono de MSCOMM simbolizado por un telfono. Si no lo tiene, haga clic en la caja de herramientas con el botn derecho del ratn y haga clic en "controles adicionales, y marca" Microsoft de control de comunicaciones ". colocar el control en el formulario de usuario MSCOMM colocar un CommandButton en el formulario de usuario colocar un control Label en el formulario de usuario doble clic en el objeto CommandButton y escriba el siguiente cdigo:

Private Sub CommandButton1_Click () 'Limpiar el buffer MSComm1.InBufferCount = 0 'selecciona un puerto serie MSComm1.CommPort = 1 '1 es el nmero de puerto que se puede cambiar "Ajuste de los valores del puerto son proporcionados por el fabricante de dispositivo. 'Estos valores se pueden introducir aqu (no es muy "limpio"!) "o en un proceso de inicializacin (mejor) "o en la propiedad" Configuracin "control "Lo ideal es ofrecer el usuario puede cambiar estos valores en un men "" "La escala utilizada en este ejemplo necesita los siguientes valores: 1200 baudios, bit de paridad, 7 bits de datos, bit de parada MSComm1.Settings = "1200, o, 7,2" indica que el control tiene que leer un solo carcter 'carcter que se utiliza para identificar la estabilizacin de la balanza MSComm1.InputLen = 1 'abrir el puerto MSComm1.PortOpen = true 'Recorrer el vaco como el carcter ledo no es un signo ms (+) Hacer mientras MSComm1.Input <> "+" bucle"de lectura en el uso de 01 de mayo res caracteres y se almacena en el dilogo y la hoja activa MSComm1.InputLen = 5 = Label1.Caption MSComm1.Input ActiveCell.Value = CSng (Label1.Caption) ActiveCell.Offset (1, 0). Seleccione "cerrar el puerto MSComm1.PortOpen = false

End Sub En este ejemplo, la escala transmite datos de forma continua. El programa lee estos valores mediante la bsqueda de el signo +, en este caso entre los elementos sucesivos de los datos. Muy a menudo, es posible hacerlo de otra manera: - el dispositivo est a la espera de una orden del programa - las seales de programa para el dispositivo que espera un valor - La unidad responde con un valor y luego espera a que el en el siguiente orden. rdenes o cdigos de cambio son proporcionados por el fabricante del equipo. Private Sub CommandButton1_Click() 'Vider le buffer MSComm1.InBufferCount = 0 'choisir un port srie MSComm1.CommPort = 1 ' 1 est le n de port que vous pouvez modifier 'Paramtrage du port; les valeurs sont fournies par le constructeur de l'appareil. 'Ces valeurs peuvent tre entres ici (pas trs "propre"!) 'ou dans une procdure d'initialisation (c'est mieux) 'ou dans la proprit "Setting" du contrle 'L'idal tant d'offrir l'utilisateur la possibilit de changer ces valeurs partir d'un menu "Rglage" 'La balance utilise dans cet exemple requiert les valeurs suivantes: 1200 bauds, bit de parit, 7 bits de donnes, bit d'arrt MSComm1.Settings = "1200,o,7,2" ' indique au contrle qu'il doit lire 1 seul caractre 'ce caractre servira reprer la stabilisation de la balance MSComm1.InputLen = 1 'ouvre le port MSComm1.PortOpen = True

'Boucle dans le vide tant que le caractre lu n'est pas un signe plus (+) Do While MSComm1.Input <> "+" Loop 'lecture sur le port des 5 1ers caractres et stockage dans la boite de dialogue et dans la feuille active MSComm1.InputLen = 5 Label1.Caption = MSComm1.Input ActiveCell.Value = CSng(Label1.Caption) ActiveCell.Offset(1, 0).Select 'ferme le port MSComm1.PortOpen = False End Sub