# Interface en Visual Basic Para comunicacion PIC-PC



## Iored (Abr 28, 2007)

Saludos para todos

Me encuentro elavorando un proyecto sobre comunicacion entre un PIC y un  PC por medio de el puerto serie RS232, y me funciona la parte de enviar los datos desde el PIC al PC. Hice una aplicacion en visual basic que recibe los datos... 

Pero no me ha quedado del todo bien la aplicacion, porque no he podido configurarle a la aplicacion el MSComm de forma que guarde los datos en un archivo en el instante en que lleguen, no he podido aprender a manejar el detector de deventos del MSComm, de modo que me toco abrir el puerto con la aplicacion y hacer la recepcion manual de los datos cuando este seguro que ya estan en el buffer del puertio...

Mi intres es que sea automatica la aplicacion, que cuando lleguen los datos inmediatamente se guarden en el Archivo y que pueda seguir recibiendo datos el programa... a continuacion adjunto el codigo que he hecho en visual basic



```
Dim dato As String
Dim NumArchivo As Integer

Private Sub Command1_Click()

Text1.Text = "ESPERANDO DATOS"

Text1.Text = MSComm1.Input
dato = CStr(Text1.Text)
Open "INVENTARIO.dat" For Append As #NumArchivo
Print #NumArchivo, dato
Close #NumArchivo

Text1.Text = "Recepcion finalizada"

MSComm1.PortOpen = False    'cerrar el puerto al salir del programa


End Sub


Private Sub Form_Load()
MSComm1.Settings = "9600,n,8,1"      'velocidad, paridad
MSComm1.CommPort = 1                 'elegir el #del puerto
MSComm1.PortOpen = True
NumArchivo = FreeFile()         ' numero que se le asigna al archivo al abrirlo

End Sub

Private Sub CERRAR_Click()
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False    'cerrar el puerto al salir del programa
End If
End
End Sub
```

Agradesco cualquier ayuda al respecto


----------



## ppt (May 1, 2007)

Estoy haciendo algo similar y creo qque lo que tienes que utilizar es el evento OnComm del MSComm, por lo menos asi lo estoy haciendo yo. Seria algo asi:

Private Sub MSComm1_OnComm()
    buffer = buffer & MSComm1.Input
End Sub

de esta manera cada vez que se produce el evento (cada vez que recibe un dato) lo añadira a "buffer"


----------



## Iored (May 1, 2007)

Gracias... pero ya lo resolví... utilicé el evento MSComm1.CommEvent = comEvReceive poniendo RThreshold como 2... luego activo un temporizador para que me garantice que todos los datos han llegado al buffer y los escribo en el archivo... 

Lo del temporizador lo hice por que solo voy a utilizar las lineas de datos y la tierra del puerto...

Gracias de todas formas por la ayuda


----------



## minssss (Feb 6, 2010)

hola estoy haciendo un proyecto de comunicacion del pic a con la pc y no se como enviar desde el pic lo que tengo guardado en una variable y que lo reciba visual basic y que muestre un mensaje con el numero que tiene la variable, estare agradecido


----------



## Meta (Feb 8, 2010)

Aquí creé hace tiempo un manual sobre el Visual Basic y PIC por puerto serie.

http://www.abcdatos.com/tutoriales/tutorial/v12.html

Saludo.


----------



## zoomg80 (Mar 4, 2010)

minssss dijo:


> hola estoy haciendo un proyecto de comunicacion del pic a con la pc y no se como enviar desde el pic lo que tengo guardado en una variable y que lo reciba visual basic y que muestre un mensaje con el numero que tiene la variable, estare agradecido


 
Hola
estoy haciendo un proyecto similar con un PIC conectado al puerto serie de la PC, necesito leer en caracter  que me envia el pic para hacer un conteo en Visual Basic por ejemplo si me llega "A" incremento un contador_A +1 y lo quiero plasmar en un label. pero solo me cuenta 1 y no incrementa mas auqnue los datos se reciben correctamente. el programa es el siguiente:

Private Sub MSComm1_OnComm()
Dim Com1 As Variant
Dim Contador_A As Integer
Dim Contador_B As Integer
Contador_A = 0
Contador_B = 0
If MSComm1.CommEvent = comEvReceive Then
Com1 = Com1 + MSComm1.Input
Text1.Text = Com1
Select Case Com1
Case "A"
     Contador_A = Contador_A + 1
     Label20.Caption = Contador_A

Case "B"
     Contador_B = Contador_B + uno
     Label21.Caption = Time
End Select
End If
End Sub

En el case B puedo ver la hora cada vez que el pic envia un caracter B, si se actualiza, pero cuando recibe "A" no he conseguido incrementar mi contdor y verlo en en label20. Alguin puede apoyarme

GRacias de antemano


----------



## wicho01 (Nov 26, 2010)

Disculpen pero soy un super  novato y quería ver sino me podían recomendar un manual para esto
gracias


----------



## PiTter M (Ene 8, 2011)

hola bueno soy nuevo en esto con visual basic y qria comunicar un pic con la PC pero 
al mandar una frase de un textbox lo manda muy rapido y program mi pic para q prosese el caracter q mando de la PC y cuando aya terminado el pic le responda a la PC con el mismo caracter el problema es q no mpuedo mandar caracter por caractes de una frase la pc manda todo de un golp m pueden ayudar el circuito q estoy realizando es una matriz de leds de 5 x 8 

ayudita


----------

