Autor Tema: propiedad input del mscomm  (Leído 2741 veces)

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

Desconectado JorgitoFRyOle

  • PIC12
  • **
  • Mensajes: 79
propiedad input del mscomm
« en: 11 de Enero de 2005, 05:34:00 »
Buenas:

Tengo una duda sobre la propiedad input del control del puerto serie, esta propiedad te permite leer los datos del buffer de recepcion de datos del PC que llegan de la placa,mi pregunta es:
¿cada vez que se ejecuta input se leen todos los datos que haya el buffer de recepcion o solo 1byte por lo que se tendria que hacer el control para leerlos todos?

A ver si alguien me puede resolver esta dudilla que me ha surgido. Gracias

1saludo

Desconectado wqtrp

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 170
RE: propiedad input del mscomm
« Respuesta #1 en: 11 de Enero de 2005, 16:43:00 »
hola, mira el input depende de otras propiedades y como esten seteadas...
revisa el .InputLen = x, creo q indica cuantos chars leer con el input
y tambien el .InputMode que indica como son los chars a recibir.

Suerte.

Desconectado IngLAOFX

  • PIC10
  • *
  • Mensajes: 43
RE: propiedad input del mscomm
« Respuesta #2 en: 11 de Mayo de 2005, 03:36:00 »
Hola, respecto a lo de la lectura del buffer, lo determina la propiedad inputlen, cuando esta a 0, te lee todo el buffer, si la pones a 1, te lee solo un byte cada vez que utilizes la instruccion mscomm1.input,  y asi sucecivamente..

No soy un as en cuanto a visual basic, no se bien bien como maneja los datos,y todo eso, pero te contare mi experiencia:

Yo recibia a traves del serial una secuencia de datos, provenientes de un PIC que efectuaba conversiones analogico a digital, de 10 bits cada muestra, entonces, por cada muestra enviaba 2 bytes, la parte alta y la baja, por cada canal respectivamente.

Primero pense en leer el buffer cada 2 bytes, con inputlen=2, y despues en una variable, guardaba el primer byte, con la instruccion mid(), algo como sigue:

temp2 = mscomm1.input
temp1 = 256*asc(mid(temp2,1,1))
temp1 = temp1 + asc(mid(temp2,2,1))


y de esa manra, segun yo, obtenia en la variable temp1 el resultado de digamos el primer canal del adc, pero no....:S creo que fallaba debido a la forma en que maneja las cadenas el VB, como el modo de transmision estaba puesto en modotexto, pues habia algo que no entendia acerca de como trata el VB los datos, probe el modo binario y tampoco di con la solucion.

Asi que decidi establecer el inputlen =1, y aunque se extiende un poco el codigo, pero ahora si leia y procesaba lo que debia, y pum, asi arregle el problema de la lectura...Muchas risas espero haberme dado a entender..Muchas risas

Por lo pronto publicare un nuevo post para resolver una duda extra.. pero hasta pronto..Muchas risas
Gana Mas Una Bruja Rentando Su Palo De Escoba A 10Euros por Vuelta Que Uno Prediciendole Un Esplendoroso Futuro A La Clase Obrera En Una Semana