TODOPIC
Lenguajes de programación para PC => Visual Basic => Mensaje iniciado por: atlasdelcarinakeel en 28 de Septiembre de 2005, 09:55:00
-
Que tal a todos, este post esta en otro subforo, y alli me recomendaron que lo postera en el subforo de visual basic asi que alla va, espero que puedan ayudarme, voy a colocar el post tal como lo puse en el otro subforo:
Que tal a todos, use el generador EasyHID para generar el codigo de comunicacion entre un PIC y el PC a traves del puerto USB,
la cuestion es que no entiendo la sintaxis del lenguaje en bajo nivel (PICBASIC) y el del alto nivel(VISUAL BASIC), estoy usando un PIC18F4455, y cuando lo conecto al puerto USB el sistema lo detecta, pero no se como enviar datos hacia el PIC desde el PC y viceversa. Lo que pude descubrir son los procedimientos del programa generado en visual basic para enviar y recibir datos pero no entiendo la sintaxis estos son los procedimientos:
"*****************************************************************
" 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 ** "se que aqui tengo que escribir el codigo para leer el dato pero no se la sintaxis
" first byte is the report ID, e.g. BufferIn(0)
" the other bytes are the data from the microcontrolller...
End If
End Sub
"*****************************************************************
" this is how you write some data...
"*****************************************************************
Public Sub WriteSomeData()
BufferOut(0) = 0 " first by is always the report ID
BufferOut(1) = 10 " first data item, etc etc
" write the data (don"t forget, pass the whole array)...
hidWriteEx VendorID, ProductID, BufferOut(0)
End Sub
En que parte de estos procedimientos tengo que escribir el codigo, y como seria la sintaxis si quisiera enviar(al PIC) y recibir(desde el PIC) la letra "A" en un TextBox
por ejemplo.
Y lo mismo para el programa en PicBasic, en que parte del codigo recibo y envio la letra "A" y como seria la sintaxis,
el codigo del PICBASIC es el siguiente:
" ************************************************************
" * receive data from the USB bus *
" ************************************************************
DoUSBIn:
USBBufferCount = USBBufferSizeRX " RX buffer size
USBService " keep connection alive
USBIn 1, USBBuffer, USBBufferCount, DoUSBIn " read data, if available
return
" ************************************************************
" * wait for USB interface to attach *
" ************************************************************
DoUSBOut:
USBBufferCount = USBBufferSizeTX " TX buffer size
USBService " keep connection alive
USBOut 1, USBBuffer, USBBufferCount, DoUSBOut " if bus available, transmit data
return
Si alguien a trabajado con el EasyHID, espero que me pueda ayudar, si necesitan que coloque todo el codigo de visual y picbasic lo puedo subir.
De antemano gracias a todos.
PD: disculpen lo extenso del post.
-
No tengo idea de que es el EasyHID, parece interesante. A ver:
"*****************************************************************
" 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 ** "se que aqui tengo que escribir el codigo para leer el dato pero no se la sintaxis
" first byte is the report ID, e.g. BufferIn(0)
" the other bytes are the data from the microcontrolller...
End If
End Sub
*************************
Lo que dice eso (creo) "si BufferIn(0) es verdadero, o sea distinto de cero entonces ya se recibieron datos.
BufferIn tiene que ser un array y BufferIn(0) puede llegar ser la longitud de los datos. El resto del array (BufferIn(1), BufferIn(2).........) contiene los datos.
Creo que es así nomás de sencillo.
"*****************************************************************
" this is how you write some data...
"*****************************************************************
Public Sub WriteSomeData()
BufferOut(0) = 0 " first by is always the report ID
BufferOut(1) = 10 " first data item, etc etc
" write the data (don"t forget, pass the whole array)...
hidWriteEx VendorID, ProductID, BufferOut(0)
End Sub
***************************
Lo mismo pero al revés:
Supongamos que querés enviar la sequencia 4, 6, 3, 8, 10.
Entonces:
Dim BufferOut(5) as integer
BufferOut(0) = 5 "No se que es el report ID, supongo que es la longitud de los datos a enviar o recibir.
"Ahora vienen los datos:
BufferOut(1) = 4
BufferOut(2) = 6
BufferOut(3) = 3
BufferOut(4) = 8
BufferOut(5) = 10
Y después lo enviás con lo que te proponen ellos:
hidWriteEx VendorID, ProductID, BufferOut(0)
La duda que tengo es que tipo de dato debería ser el array "BufferOut", yo lo tomé como enteros pero podría ser string o long.
Si fuera string para pasar los datos a un TextBox lo único que habría que hacer sería:
txtBox.Text = BufferOut(1) "Muestro el primer dato.
Salu2.
-
Gracias Colores2, voy a intentar hacer eso, y despues te cuento. Por cierto el EasyHID es un software que genera un codigo fuente para PIC en PICBASIC y codigo fuente en visual basic y otros lenguajes de alto nivel para hacer una comunicacion USB entre un PC y un PIC que tenga modulo USB (18F4455 en mi caso), puedes bajar el programa completamente gratis en:
http://www.mecanique.co.uk/products/usb/easyhid.html
-
Buenas Yo el EasyHid ese lo he usado y no me funciona ... conecta y todo, o vamos eso parece, pero no envia ni recibe ya que en codigo del visual basic no puedes indicarle por que Pipe estas recibiendo datos o enviando datos. Si alguien consigue que funcione que me lo diga pq a mi no me funciona sin embargo el programa en C# que hay en otro subforo es el unico que me funciona q envia y recibe datos, pero por contra partida, no lleba interrupciones para tratar los datos.
Bueno si alguien consigue un programa fiable por Visual Basic q lo cuente q es interesante. ![Angelito Angelito]()
Saludos