TODOPIC

Lenguajes de programación para PC => Visual Basic => Mensaje iniciado por: loverman24 en 04 de Abril de 2006, 11:38:00

Título: Dudilla con VB y caracteres
Publicado por: loverman24 en 04 de Abril de 2006, 11:38:00
Hola a todos, os comento mi duda:

Tengo un soft hecho en vb q recibe datos provenientes de un pic, el pic me los envia gracias al printf, tal como sigue:

printf ("%c%c%1.0f    ", modo, canal, v_ohmicom);

resulta que esto envia, como maximo AA11000, es decir, 7 caracteres.

Bien, en la recepcion de datos en visual tengo hecho:

Private Sub Form_Load()
MSComm1.CommPort = 4
MSComm1.Settings = "9600,N,8,1
MSComm1.PortOpen = True
MSComm1.RThreshold = 6
End Sub

Private Sub MSComm1_OnComm() "Se genera el evento
MSComm1.Settings = "9600,N,8,1"
If MSComm1.InputLen > 5 Then
MSComm1.PortOpen = False
MSComm1.PortOpen = True
Exit Sub
End If
Buffer = MSComm1.Input
If Buffer = " " Then Exit Sub
canal = Left$(Buffer, 2)
lectura = Mid$(Buffer, 3, 5)

como veis, el evento oncomm salta cuando se recibe el 6º caracter, y luego, ya en el evento, descarto el ultimo, el 6º, y me quedo con los 5 primeros, siendo canal los dos primeros y lectura los restantes. Mi pregunta es:

¿por que me funciona?

como pueden salirme bien hasta AA11000? si tiene 7 caracteres?? pq me sale todo? esa es mi duda, no lo entiendo.

si alguien pudiera ayduarme

gracias, un saludo
Título: RE: Dudilla con VB y caracteres
Publicado por: karen81 en 04 de Abril de 2006, 13:44:00
el evento oncomm se produce cuando se recibe un numero de caracteres igual o mayor que el indicado en la propiedad RThreshold, por lo que como el pic envia 7 caracteres de una vez, cuando se produce el evento y lees el buffer de recepcion vas a estar leyendo los 7 caracteres, para leer solamente 6 caracteres cuando configures el MSComm1 debes poner la propiedad MSComm1.InputLen = 6, asi el MSComm leera del bufer de recepcion solo 6 caracteres, como no la has puesto en este momento MSComm1.InputLen es igual a 0, es decir leera todo lo que halla en el buffer de recepcion

saludosFlash.
Título: Re: Dudilla con VB y caracteres
Publicado por: BrunoF en 06 de Abril de 2006, 12:15:17
Bueno. ahi karen te paso la respuesta al problema. Podes probar hacer asi, sin tener que tocar la propiedad InputLen:

Private Sub MSComm1_OnComm() 'Se genera el evento
MSComm1.Settings = "9600,N,8,1" 'a esta linea sacala de aca y ponela en el evento Form_Load
Buffer = MSComm1.Input
If len(Buffer) > 5 Then
MSComm1.PortOpen = False
MSComm1.PortOpen = True
Exit Sub
End If
If Buffer = " " Then Exit Sub
canal = Left$(Buffer, 2)
lectura = Mid$(Buffer, 3, 5)
End Sub

Exitos...