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...
 

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...


Preguntas similares