# Comunicar pic con vb utilizando puerto serie



## ecazcarra (May 10, 2008)

Hola, necesitaria que alguien me pasase un programa ejemplo en que un pic se comunique con el pc utilizando el puerto serie y el programa visual basic, a poder ser el codigo del pic en ccs.
Un saludo


----------



## MaMu (May 12, 2008)

ecazcarra dijo:
			
		

> Hola, necesitaria que alguien me pasase un programa ejemplo en que un pic se comunique con el pc utilizando el puerto serie y el programa visual basic, a poder ser el codigo del pic en ccs.
> Un saludo



Hay muchos Pics, cual es de tu interés?

Saludos


----------



## ecazcarra (May 12, 2008)

Hola MaMu, utilizo el 16F887, con el hyperterminal y la instrucción printf me va perfecto, pero con vb no lo consigo, el pueto lo abro pero yo creo que el problema es de sincronismo, pq a veces lo lee y a veces lee sin haber nada, el envio es de texto, pq no se como hacerlo en binario. Y en la dirección de vb a pic no he conseguido nada, pq no se que instrucciones utilizar. Los datos que envio son de temperatura, presión,...
Un saludo.


----------



## MaMu (May 12, 2008)

Te fijaste en el Datasheet del 16F887? (mssp section) está toda la data que necesitas saber para controlar envío y recepción.



> *Section 12.1, Note1:*
> Note 1: When the SPEN bit is set the RX/DT I/O pin
> is automatically configured as an input,
> regardless of the state of the corresponding
> ...





> *Section 12.1.2.1, Note*
> Note: When the SPEN bit is set the TX/CK I/O
> pin is automatically configured as an
> output, regardless of the state of the
> ...



Saludos


----------



## jcristhian_1 (May 21, 2011)

Hola he entablado una comunicacion vb puerto serie con un PIC programado con mikrobasic
la idea es que VB envie por el puerto serie el caracter "x" , el pic muestree el primer canal 0 analogico a 10 bits,
luego VB envie "y" y el pic muestree el canal analogico 1 y envie la data
luego vb envia "z" el pic muestrea y envia la data de 10 bits
Las peticiones de envio al pic las hago cada 100ms usando un timer, sin mayor problema
pero cuando quiero disminuir el tiempo entre peticiones para aumentar la velocidad de muestreo  la data se vuelve invalida y origina un error de desbordamiento en VB que no se de donde proviene 
 Alguien sabe como hacerlo de una mejor manera.
la idea princiapal es muestrear 3 canales analogicos y enviar la data por el puerto serie a Vb para graficar esas muestras.
Adjunto el programa VB, El programa en Mikrobasic y la simulacion en proteus.


----------



## jcristhian_1 (May 22, 2011)

Leyendo un poco encontre sobre el evento OnComm el cual varia el valor de la propiedad CommEvent, cuando esta propiedad toma el valor de dos, aplicando un _If commRx.CommEvent = 2,_ se detecta en tiempo real cada vez que ha llegado un nuevo dato, para procesar dato por dato la propiedad InputLen debe ser 1
y la propiedad RThreshold debe ser 1 en caso de querer procesar varios datos cambiar el valor de estas propiedades ymodificar el programa, en el mensaje anterior lo pense hacer con timer pero de esta otra  forma es mucho mas eficiente.

Para mas informacion consultar este pdf
http://www.frro.utn.edu.ar/repositorio/catedras/electrica/2_anio/fundamentos_informatica/apuntes/visual_basic/Manejo%20Puertos.pdf

Adjunto 
El programa VB , la simulacion y el programa para el pic16f877a en mikrobasic, para que la simulacion corra deben instalar el virtual serial port driver y simular 2 puertos serie, se puede obtener en demo.


----------

