continuo con problemas con el MSComm....

17/07/2003 - 18:33 por ELLA-LARAÑA | Informe spam
Hace un par de dias comente que me estaba volviendo loco con una apli que
maneja un aparato por el COM. Utilizando el MSComm de las narices consigo
enviarle las instrucciones (son en ASCII y bastante sencillas) pero no tengo
narices de "capturar la respuesta"... aqui teneis un cachito del codigo pa
que se entienda:

MSComm1.Output = "; 208 10" & Chr(13) & Chr(10) ' RESETEAR
comdata = MSComm1.Input

Bueno, pues Comdata se queda en blanco, cuando EXISTE una respuesta del
equipo, en cambio, si ejecuto la apli paso a paso (F8) si que se queda la
respuesta en la variable
he pobado con diferentes loops pero naa...
En fin, que si alguien me ayuda pues genial..
Un saludo...

Preguntas similare

Leer las respuestas

#1 Victor Koch
17/07/2003 - 19:01 | Informe spam
Proba lo que te envío después de hacer

MSComm1.Output = "; 208 10" & Chr(13) & Chr(10) ' RESETEAR

Jeje, no esta muy prolijo, tuve que hacerle algunos cambios para vos.

Dim ETXencontrado As Boolean
Dim ETX10 As Boolean
Dim ETX13 As Boolean
Dim Continuar As Boolean
Dim tfinal As Long
Dim xpos As Integer
Dim ASCentrada As Integer
Dim gDatoRecibido as string

' *** tiempo maximo 20 segundos ***
Const ctiempomaximo = 20

' *** Flag para saber si hay error ***
Continuar = True

' *** Flag para saber si encontre un ETX ***
ETXencontrado = False
ETX10 = False
ETX13 = False

' *** Espero el Inicio de un Paquete hasta ctiempomaximo de segundos****
tfinal = TIMER + ctiempomaximo

' *** En gDatoRecibido tengo el dato recibido ****
gDatoRecibido=""

Do While (ETXencontrado = False) And (TIMER <= tfinal) And (Continuar True)
' *** Veo si llego algo ***
Do While (MSComm1.InBufferCount = 0) And (TIMER <= tfinal)
DoEvents
Loop ' !!! WHILE port vacio AND (TIMER <= tfinal)

' *** Veo si tengo un Time out ***
If (TIMER > tfinal) Then
Continuar = False ' tengo un TIME OUT
End If
' *** Analizo la informacion que entro ***
Do While (MSComm1.InBufferCount > 0) And (ETXencontrado = False)
And (Continuar = True)

' *** Leo Un byte y Analizo
ASCentrada = Asc(MSComm1.Input)

Select Case ASCentrada
Case 10
ETX10=true
ETXencontrado = (ETX10=True and ETX13=True)
Case 13
ETX13=true
ETXencontrado = (ETX10=True and ETX13=True)
Case Else
gDatoRecibido = gDatoRecibido +
Chr$(ASCentrada)
End Select
Loop '!!! De WHILE (MSComm1.inbuffercount > 0) AND (ETXecontrado False) AND (Continuar = True)

Loop '!!! De (ETXecontrado = False) AND (TIMER <= tfinal) AND (continuar
= True)


Un saludo, Víctor Koch.


"ELLA-LARAÑA" escribió en el mensaje
news:
Hace un par de dias comente que me estaba volviendo loco con una apli que
maneja un aparato por el COM. Utilizando el MSComm de las narices consigo
enviarle las instrucciones (son en ASCII y bastante sencillas) pero no


tengo
narices de "capturar la respuesta"... aqui teneis un cachito del codigo pa
que se entienda:

MSComm1.Output = "; 208 10" & Chr(13) & Chr(10) ' RESETEAR
comdata = MSComm1.Input

Bueno, pues Comdata se queda en blanco, cuando EXISTE una respuesta del
equipo, en cambio, si ejecuto la apli paso a paso (F8) si que se queda la
respuesta en la variable
he pobado con diferentes loops pero naa...
En fin, que si alguien me ayuda pues genial..
Un saludo...


Respuesta Responder a este mensaje
#2 ELLA-LARAÑA
18/07/2003 - 09:18 | Informe spam
Gracias una vez mas Victor...
Pero aunque parezca mentira tampoco funciona.
Se "escapa" la respuesta, y no tengo forma de capturarla... es algo
realmente extraño... no puedo creerme que esto sea tan complicado...
Un saludo y AYUDAAA XD
Gracias a to2...


"Victor Koch" escribió en el mensaje
news:
Proba lo que te envío después de hacer

MSComm1.Output = "; 208 10" & Chr(13) & Chr(10) ' RESETEAR

Jeje, no esta muy prolijo, tuve que hacerle algunos cambios para vos.

Dim ETXencontrado As Boolean
Dim ETX10 As Boolean
Dim ETX13 As Boolean
Dim Continuar As Boolean
Dim tfinal As Long
Dim xpos As Integer
Dim ASCentrada As Integer
Dim gDatoRecibido as string

' *** tiempo maximo 20 segundos ***
Const ctiempomaximo = 20

' *** Flag para saber si hay error ***
Continuar = True

' *** Flag para saber si encontre un ETX ***
ETXencontrado = False
ETX10 = False
ETX13 = False

' *** Espero el Inicio de un Paquete hasta ctiempomaximo de


segundos****
tfinal = TIMER + ctiempomaximo

' *** En gDatoRecibido tengo el dato recibido ****
gDatoRecibido=""

Do While (ETXencontrado = False) And (TIMER <= tfinal) And (Continuar
True)
' *** Veo si llego algo ***
Do While (MSComm1.InBufferCount = 0) And (TIMER <= tfinal)
DoEvents
Loop ' !!! WHILE port vacio AND (TIMER <= tfinal)

' *** Veo si tengo un Time out ***
If (TIMER > tfinal) Then
Continuar = False ' tengo un TIME OUT
End If
' *** Analizo la informacion que entro ***
Do While (MSComm1.InBufferCount > 0) And (ETXencontrado False)
And (Continuar = True)

' *** Leo Un byte y Analizo
ASCentrada = Asc(MSComm1.Input)

Select Case ASCentrada
Case 10
ETX10=true
ETXencontrado = (ETX10=True and ETX13=True)
Case 13
ETX13=true
ETXencontrado = (ETX10=True and ETX13=True)
Case Else
gDatoRecibido = gDatoRecibido +
Chr$(ASCentrada)
End Select
Loop '!!! De WHILE (MSComm1.inbuffercount > 0) AND (ETXecontrado > False) AND (Continuar = True)

Loop '!!! De (ETXecontrado = False) AND (TIMER <= tfinal) AND


(continuar
= True)


Un saludo, Víctor Koch.


"ELLA-LARAÑA" escribió en el mensaje
news:
> Hace un par de dias comente que me estaba volviendo loco con una apli


que
> maneja un aparato por el COM. Utilizando el MSComm de las narices


consigo
> enviarle las instrucciones (son en ASCII y bastante sencillas) pero no
tengo
> narices de "capturar la respuesta"... aqui teneis un cachito del codigo


pa
> que se entienda:
>
> MSComm1.Output = "; 208 10" & Chr(13) & Chr(10) ' RESETEAR
> comdata = MSComm1.Input
>
> Bueno, pues Comdata se queda en blanco, cuando EXISTE una respuesta del
> equipo, en cambio, si ejecuto la apli paso a paso (F8) si que se queda


la
> respuesta en la variable
> he pobado con diferentes loops pero naa...
> En fin, que si alguien me ayuda pues genial..
> Un saludo...
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida