Para capturar de un puerto serial, se utiliza el control msComm (que es un control activeX de Microsoft)
Se configura muy facil en tiempo de diseño y de ejecución.
Cuando un dato ingresa se ejecuta el evento onComm y el dato queda en la propiedad Input del control.
El control se llama (en la lista de controles activeX) Microsoft Communicatios Control, version 6
El nombre del archivo es: mscomm32.ocx
Tenes que tener en cuenta abrir el puerto y cerrarlo y nada mas.
cada vez que entre un dato por el puerto serial, el control dispara el evento onComm
Para abrir el puerto, tiene que ser en el init del formulario o luego de la deficion, usas la propiedad
portOpen=.t. y portOpen=.f. para cerrarlo..
Este seria un codigo de ejemplo para el evento onComm
ValorIngreso=this.input
wait ValorIngreso window nowait
Otra cosa para tener en cuenta es que tenes que detectar en la cadena que ingresa un caracter de control, que se define en el hardware, pero casi siempre es CHR(13) es decir, enter.
La ayuda del control es muy amplia y tiene ejemplos.
El control buscalo en la carpeta windows/system32 o en la pagina de Microsoft o en cualquier sitio de descargas o buscalo en la carpeta windows/system32
Enviar datos a los puertos seriales:
cCadena = "Texto a enviar"
nHwd = Fopen("COM1:")
If nHwd <> -1
Fwrite(nHwd, cCadena, Len(cCadena))
Fclose(nHwd)
EndIf