Leyendo RS232 COM1,2,3,4

Gurama
05 de Abril del 2005
Amigos, estoy desarrollando un minisistema que lea del com1,2 el problema esta en que no lo lee, aluien me da una manito

aqui va el codigo del boton el activex esta declarado y configurado pero solo recibo basura, desde ya muchas gracias



WITH THISFORM.OLECONTROL1
.COMMPORT = 1

.SETTINGS = "1200,N,8,1"
.PORTOPEN = .T.
.INPUTLEN = 0
.INPUTMODE = 0
VALOR=""

FOR I = 0 TO 250

VALOR= .INPUT + CHR(13)
THISFORM.TEXT1.VALUE = VALOR

ENDFOR
.PORTOPEN = .F.
ENDWITH

georgie
05 de Abril del 2005
Hola
Recibes basura porque en realidad no estas esperando a que llegue data.
Comienzas a leer el buffer de recibir estando 茅l vaci贸. Debes de inicializar el ActiveX al cargar la forma por ejemplo dentro de Thisform.Init y luego esperar que occura el evento thisform.olecontrol1.OnCom. Dentro de este evento
detectar que el thisform.olecontrol1.CommEvent=2 entonces proceder a leer la data. En los puertos seriales como COM1 .. COMX ocurren varios eventos los cuales hay que tomar acci贸n en ellos.


Este fragmento debe de ir dentro del olecontrol1.CommEvent:

Local valor

DO CASE
*Errors
Case This.CommEvent=1001 && comEventBreak A Break was received.
Case This.CommEvent=1004 && comEventFrame Framing Error
Case This.CommEvent=1006 && comEventOverrun Data Lost.
Case This.CommEvent=1008 && comEventRxOver Receive buffer overflow.
Case This.CommEvent=1009 && comEventRxParity Parity Error.
Case This.CommEvent=1010 && comEventTxFull Transmit buffer full.
Case This.CommEvent=1011 && comEventDCB Unexpected error retrieving DCB]
* Events
Case This.CommEvent=5 && comEvCD Change in the CD line.
Case This.CommEvent=3 && comEvCTS Change in the CTS line.
Case This.CommEvent=4 && comEvDSR Change in the DSR line.
Case This.CommEvent=6 && comEvRing Change in the Ring Indicator.
Case This.CommEvent=2 && comEvReceive Received RThreshold # of chars.

Valor = this.input + CHR(13)
thisform.text1.value = valor

Case This.CommEvent=1 && comEvSend There are SThreshold number of characters in the transmit buf
Case This.CommEvent=7 && comEvEof An EOF charater was found in the input stream

ENDCASE

Espero ver servido de ayuda
Jorge

najera
05 de Abril del 2005
si tenes mas informacion sobre este tema de los coms. te agradeseria de antemano me los mandaras a: [email protected]


Muchas gracias ...

emmanuel_arg
05 de Abril del 2005
Hola amigos, estoy comenzando un proyecto de automatizacion de un invernadero.
Quisiera saber si alguien me puede ayudar, necesito capturar datos desde el puerto RS232,
los datos provienen de sensores y necesito registrarlo en una base de datos.
Muchas Gracias. Saludos. Emmanuel

georgie
05 de Abril del 2005
Hola!

Estoy en la mejor disposici贸n de ayudarte ya que hecho varias aplicaciones donde conecto a VFP al mundo real. Esto es leer sensores, controlar aparataos el茅ctricos utilizando X10 etc. Tendr铆as que ser mas especifico, lo primero seria averiguar el formato de la data que env铆an tus sensores.

Jorge