FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Consulta: bucle de lectura puerto COM
Posts: 139
Joined: Sun Apr 23, 2006 09:00 AM
Consulta: bucle de lectura puerto COM
Posted: Mon Mar 25, 2013 09:34 PM

Hola a todos.
Tengo un aut贸mata que env铆a informaci贸n peri贸dicamente al puerto serie. 驴Podr铆a alguien indicarme qu茅 debo hacer para leer la informaci贸n de dicho puerto y enviarla a un fichero de texto? Se supone que este programa deber铆a estar en un bucle permanente escuchando dicho puerto.
He visto los programas de ejemplo de FWH\SAMPLES pero no lo tengo muy claro, as铆 que alg煤n programa de ejemplo me facilitar铆a bastante las cosas.
Gracias por adelantado.

Un saludo,

Fernando

Las Palmas de Gran Canaria
Posts: 654
Joined: Mon May 29, 2006 03:14 PM
Re: Consulta: bucle de lectura puerto COM
Posted: Mon Mar 25, 2013 10:00 PM
Code (fw): Select all Collapse
lOkSalir:=.F.
nComm:=OpenComm("COM1:9600,N,8,1",2048,512)
**************************************************************
do while .not. lOkSalir
   nBytes :=2048
   cBuffer:=space(nBytes)
   nBytes:=ReadComm(nComm,@cBuffer)
   cDatosRecibidos:=left(cBuffer,nBytes)
enddo
**************************************************************
CloseHandle(nComm)


La variable lOkSalir puedes usarla para salir del bucle.

Por ejemplo con un boton de "Parar":
REDEFINE BUTTON oBoton ID 100 OF oDlg ACTION {lOkSalir:=.T.}
Mi abuelo dec铆a: Los aviones vuelan porque Dios quiere, y los helic贸pteros ni Dios sabe porque vuelan.

FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013
Posts: 120
Joined: Wed Mar 11, 2009 07:32 PM
Re: Consulta: bucle de lectura puerto COM
Posted: Mon Mar 25, 2013 10:06 PM
hola

yo tengo asi instalado en una bascula
1.-abro el puerto con este codigo
Code (fw): Select all Collapse
聽 nComm := OpenComm( "COM4",1024,128)
聽 聽if ! BuildCommDcb( "COM4:9600,e,8,1", @cDcb )
聽 聽 聽 nError = GetCommError( nComm )
聽 聽 聽 MsgInfo( "ERROR DE BASCULA: " + Str( nError ) )
聽 聽 聽// ? "no hay bascula se cieera"
聽 聽 聽// quit
聽 聽ELSE
聽 聽ENDIF


ya estando abierto el puerto
metes un ciclo en un do while o en un meter como gustes

2.- pongo el ciclo

Code (fw): Select all Collapse
DO WHILE .T.
聽 聽 聽 聽 
聽 聽 聽 聽 pp:=space(80)
聽 聽 聽 聽 for i:= 1 to 2000
聽 聽 聽 聽 next i
聽 聽 聽 聽 聽 聽 聽 
聽 聽 聽 聽 READCOMM(NCOMM,@PP)
聽 聽 聽 聽 
聽 聽 聽 聽 datos:=ObtenV(PP)
聽 聽 聽 聽
聽 聽 聽 聽 
聽 聽 聽 聽 
聽 聽 聽 聽
聽 聽 聽 聽 IF datos>=40
聽 聽 聽 聽 聽 聽? "tomate la foto we jiji",
聽 聽 聽 聽 聽 聽SELECT BASCU 
聽 聽 聽 聽 聽 聽BASCU->(DBAPPEND())
聽 聽 聽 聽 聽 聽REPLACE BASCU->REGI WITH "PRIMER WE"
聽 聽 聽 聽 聽 聽REPLACE BASCU->PESO WITH PENDE
聽 聽 聽 聽 聽 聽BASCU->(DBUNLOCK())
聽 聽 聽 聽 聽 聽bASCU->(dbcommit())
聽 聽 聽 聽 聽 
聽 聽 聽 聽 ENDIF
聽 聽 聽 聽 聽 
聽 聽 聽 聽 pp:=space(60)
聽 聽 聽 
聽 聽Enddo


3.- la funcion obtenv lo que hace es tomar el dato leeido que queda pp y hago x conversion a como manda la informacion el readcom

4.- el dato pp lo puedes mandar a un achivo con fcreate y fwrite

5.- en este ejemplo es para un sistema que tengo que toma la lectura del camion que esta pasando por la bascula
si el pesador no toma el peso el sistema en automatica detecta que si paso algo por la bascula mas de 40 kilos ,, me toma una foto de lo que esta en la buscula ,, lo guarda en archivo dbf,,, y al final en pocas palabras con esto hemos corrido a pesadores jijiji


saludos
Benjamin Casarrubias Moreno
Cd. Obreg贸n, Sonora, M茅xico
chino72vale@hotmail.com
Fivewin 24.04, Harbour 3.3, xharbour 1.2.1, Fivelinux, Visual Estudio 2022
Oracle Api Rest, SDK Contpaq, Facturaci贸n Electr贸nica, XML DIOT 2025
Posts: 139
Joined: Sun Apr 23, 2006 09:00 AM
Re: Consulta: bucle de lectura puerto COM
Posted: Tue Mar 26, 2013 07:28 PM

Amigos, muchas gracias por el par de ejemplos que me han mandado y que me servir谩n de mucho para el programa.

Un saludo,

Fernando

Las Palmas de Gran Canaria

Continue the discussion