Autor Tema: Dudilla con VB y caracteres  (Leído 2355 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado loverman24

  • PIC12
  • **
  • Mensajes: 66
Dudilla con VB y caracteres
« 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

Desconectado karen81

  • PIC10
  • *
  • Mensajes: 22
RE: Dudilla con VB y caracteres
« Respuesta #1 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.

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Dudilla con VB y caracteres
« Respuesta #2 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...
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.