TODOPIC
Lenguajes de programación para PC => Visual Basic => Mensaje iniciado por: Sacahe en 07 de Enero de 2011, 20:01:29
-
Hola amigos!!!
Estoy haciedo un proyecto donde envio desde un pic 18f2550 una cadena de 149 datos numericos, uno tras otro a traves del puerto USB al PC, en el PC tengo un programita en visual basic donde deseo visualizar la cadena de datos provenientes del PIC. La visualizacion la deseo hacer en un textbox, hasta ahora he conseguido visualizar los datos pero uno por uno. Y lo que deseo es visualizar de tal forma que el siguiente dato que envia el PIC se añada mas no reemplazca al anterior, me hice explicar? Les pongo el codigo fuente:
PIC - MicrocodeStudio - PBP
' ************************************************************
usbinit ' initialise USB...
INICIO
IF PORTB.0 = 0 THEN goto BLOQUE1
USBService
GOTO INICIO
BLOQUE1
for i=0 to 149
USBBuffer[8]= DATO1
FOR K=1 TO 250 'RETARDO
PAUSE 2 '
gosub DoUSBOut '
NEXT K '
next i
GOTO INICIO
' ************************************************************
Visual Basic
'*****************************************************************
' on read event...
'*****************************************************************
Public Sub OnRead(ByVal pHandle As Long)
' read the data (don't forget, pass the whole array)...
If hidRead(pHandle, BufferIn(0)) Then
' ** YOUR CODE HERE **
' first byte is the report ID, e.g. BufferIn(0)
' the other bytes are the data from the microcontrolller...
Text1.Text = BufferIn( 8 ) 'ESTA ES LA MANERA BASICA COMO ME FUCIONA PERO HE HECHO DE TODO Y NO DOY PARA VISUALIZAR TODA LA CADENA DE DATOS
End If
End Sub
' ************************************************************
Compañeros he tratado de multiples maneras y no lo he conseguido, he mirado varios post relacionados con el tema y nada. Despues que solucione esto la idea es guardar estos datos provenientes del PIC en un archivo por ejemplo .txt. Por favor la orentacion que me puedan dar que sea sencilla y facil de entender ya que no soy muy ducho en VB. GRACIAS!!!
-
Hola Sacahe
Si entendí bien tu pregunta, te sugiero reemplazar :
Text1.Text = BufferIn( 8 )
por :
Text1.Text = Text1.text+BufferIn( 8 )
Creo que hay preguntas similares en el foro (obviamente con la misma respuesta).
Saludos,
Jorge
-
Para poder realizar lo que deseas debes utilizar punteros. Es decir, debes pasar los valores por referencia.
Tengo entendido que cuando utilizas la funcion de envio de datos del pic a la PC ambos utilizan un buffer, un buffer es un arreglo de datos, por lo tanto para poder escribir todos a la vez a como tu deseas debes utilizar el puntero del buffer.
-
Gracias compañeros por atender mi solicitud!!
Amigo jorgeaf_59 hice tal cual como me dices pero al compilar el programa me genera un error: "no coincide los tipos". lo que hice fue colocar: Text1.Text = Text1.text + Str(BufferIn( 8 )) y en el textbox si se me visualizan los datos pero cada dato se me repite una infinidad de veces. por ejemplo, los primeros datos que envia el pic son 20 - 56 - 4 bueno en el textbox se me visualiza asi:
20 20 20 20 20 20.....
56 56 56 56 56 56.....
4 4 4 4 4 4 4 4 4 4.....
Falta algo!!!!
:-/ Amigo bigluis sera que me puedes explicar mejor lo del puntero del buffer, y si es posible ilustrarmelo en codigo? :-/
-
Hola Sacahe,
No creo que pueda aportarte algo más, tanto por desconocimiento del protocolo USB como del basic que utilizás para el PIC.
Sin embargo te sugiero cambiar:
gosub DoUSBOut '
NEXT K
por:
NEXT K
gosub DoUSBOut '
porque no entiendo sino como se hace la pausa.
Con respecto al Str que tuviste que agregar, espero no haberte hecho perder demasiado tiempo, pero mi propuesta es de lápiz y papel, sin posibilidad de probar en la práctica, disculpame.
Suerte y cordiales saludos,
Jorge
-
Compañero Jorge mis respetos, no se me habia ocurrido que el problema estaba en el programa de PBP, claro ya me funciona!!!!