Leyendo RS232 COM1,2,3,4
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
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
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
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
si tenes mas informacion sobre este tema de los coms. te agradeseria de antemano me los mandaras a: [email protected]
Muchas gracias ...
Muchas gracias ...
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
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
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
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
