# Proyecto PC-PIC por usb con PicBasicPro + Vb2008 + Pic18f2550



## drmesmer (Feb 15, 2010)

Buenas, ya que mas o menos controlo el pic basic pro y tengo nociones de visual basic pues me he planteado crear un proyecto para mi trabajo.

Las herramientas serian Pic Basic Pro, Visual Basic 2008 y Pic 18f2550 (usb)

El proyecto seria crear un interface para PC con visual basic que controle una serie de motores manejados por un PIC que reciba configuracion del PC a traves del puerto USB.

Veo mucha información por internet pero llevo unos dias y no llego a encontrar algo ni remotamente claro. Muchas cosas estan en C, otras en proton, en fin a ver si alguien de aqui me puede echar un cablecillo. 

Mientras tanto seguiré buscando por aqui y google....

Bueno pues parece que he encontrado algo que por fin entiendo....

El EasyHID Wizard me genera los codigos para Pic Basic Pro y Visual Basic. He estado mirando y aun no lo entiendo pero bueno. Lo mas jodido ha sido que el codigo para Visual es del Vb5.0 y al yo tener el Vb2008.NET pues hace una conversion pero luego a la hora de compilar da algunos fallos asi que a ver si alguien se anima y me da soluciones...


----------



## Moyano Jonathan (Feb 16, 2010)

drmesmer como estás 
Para ayudarte un poco con tu proyecto te paso el código en VB.net para usar la librería easyHID..
Espero que te ayude !


----------



## drmesmer (Feb 16, 2010)

Gracias Moyano, he tenido que instalar el vb6 para que funcione pero probaré este project porque prefiero vb2008.

Veremos a ver....


----------



## thenot (May 10, 2010)

gracias Moyano por el codigo!!! no habia podido pasar el codigo del 6 al 2008 y esto me viene de lujo!!! el vb6 no me gusta para nada.. tuve que buscar por la web el vb6 para poder ver si me funcionaba lo que estaba haciendo, y para convertir al 2008 me pasaba lo mismo que drmesmer..

Saludos!!
ahora que tengo esto seguiré buscando y probando como reproducir audio wav, o reproducir cualquier tipo de audio (dar direcciones de calles en voz) en PBP y seguir con mi proyecto


----------



## Meta (May 31, 2010)

Mejor ya usen el Visual Basic 2010, no se queden en lo antiguo. Ya está en español.

http://www.microsoft.com/express/Downloads/#2010-Visual-Basic

Saludo.


----------



## Moyano Jonathan (May 31, 2010)

meta....en si las mejoras que presenta el Visual Studio 2010 no afectan en nada a los programa de control por USB...pero si ya tienen instalado el 2010 pueden pasar el proyecto con minimas modificaciones o ninguna.


----------



## Meta (May 31, 2010)

Puedes pasarlo directamente del 2008 al 2010 sin modificaciones. Lo he comprobado. Lo que notarás es que el C# 4.0 o SV 2010 es más robusto, estable y chupa más recurso el IDE, no el .exe. ejjejeje.


----------



## alfredoluisavila (Jun 1, 2010)

Moyano Jonathan dijo:


> drmesmer como estás
> Para ayudarte un poco con tu proyecto te paso el código en VB.net para usar la librería easyHID..
> Espero que te ayude !



Hola Jonathan: Soy un seguidor de tus programas. Estoy utilizando el pic18F2550 con CCS y el visual basic 6.0 gracias a una aplicación de encendido y apagado de un led que publicaste hace tiempo.
Ahora estoy tratando de modernizarme y pasarme a VB2008. Bajé tu aplicación para VB2008 pero no me detecta el pic. Es decir, siempre me aparece desconectado. Tienes alguna idea de que puede ser? Puede ser el vendor ID o product ID ?
Desde ya muchas gracias.
Alfredo


----------



## Meta (Jun 1, 2010)

Mejor te modernizas con el Visual Basic 2010.


----------



## thenot (Jun 2, 2010)

Alfredo mira revisa el post que deje en este tema..
https://www.forosdeelectronica.com/...aves-modulo-usb-pic18f2550-17458/index52.html


----------



## VISCAYA (Jun 4, 2010)

hola a todos..
igualmente me encuentro tratamdo de conectar el 18f2550 al usb de la pc he utilizado el easy hid y todo muy bien..
mi problema es el siguiente, he metido una secuencia de encendido de led al pic al conectarlo a la pece todo bien pero no me reconoce el pic "dispositivo desconocido", cuanto lee, cundo llega he esta linea,
USBOut 1, USBBuffer, USBBufferCount, DoUSBOut 
se para todo y no funciona mas. 
no tengo la mas minima idea de lo que puede estar pasando si alguin puede alludarme le estare muy agradecido
estoy compilado con PBP y mpasm..
gracias


----------



## Rodro (Abr 30, 2011)

Hola drmesmer, tengo problemas al copilar el codigo q me genera el eadyHID wizard de microcode, salen ciertos errores q no e podido depurar.

Como el error de Bad bank number, q luego al descomentar la segunda linea del condigo de el archivo .bas q se incluye, tiene q ver con el RAM_END declarado en un archivo, aunke lo modifike para expandir el espacio de memoria, siguen saliendo errores, como el de unable to fit usbreservedmemory.

Espero me pueda proporcionar los codigos en los q ya este funcionando su aplicacion para saber cual es mi error.

Tambien note q el easyHID wizard no me deja abilitar la casilla de enable interrupst for usb servicing, lo cual ase q se pierda la conexion usb.

Saludos y de antemano gracias. Espero su pronta respuesta


----------



## Incetmp (Dic 28, 2011)

Saludos 
soy nuevo en este tema... queria pedirte de favor el codigo para el pic 18f2550 para el poderlo usar con el codigo que subio Moyano... se los agradeceria mucho


----------



## KIKE8507 (Ene 19, 2012)

EXELENTE aporte compañero


----------



## syryus (Ene 19, 2012)

Una cosa que no tengo clara. Con el EASYHID sale un archivo para grabar el PIC y otro para trabajar sobre el en Visual Basic 6. ¿Hay alguna manera de trabajar en Visual Studio 2010 con ese archivo que genera EASYHID?

Un saludo


----------



## Meta (Feb 15, 2012)

syryus dijo:


> Una cosa que no tengo clara. Con el EASYHID sale un archivo para grabar el PIC y otro para trabajar sobre el en Visual Basic 6. ¿Hay alguna manera de trabajar en Visual Studio 2010 con ese archivo que genera EASYHID?
> 
> Un saludo




Hola:

Lo ideal es trabajar desde cero con Visual Basic 2010 o el Visual C# 2010 si esas librerías y anticuado para los días que estamos en la era .NET.

Con el timepo habrá más métodos. Desde el 2008 hasta ahora ha mejorado estas cosas y cada vez se ven más dispositivos por USB y sin el easy ese.

Saludo.


----------



## fernandoae (Feb 17, 2012)

Yo tengo hecha una aplicacion que se conecta al pic por usb hid, en xp no tengo ningun problema, envio y recibo bien los datos, pero ya en seven no pasa nada, que puede ser? el vb? el win?


----------



## Moyano Jonathan (Feb 17, 2012)

> Yo tengo hecha una aplicacion que se conecta al pic por usb hid, en xp no tengo ningun problema, envio y recibo bien los datos, pero ya en seven no pasa nada, que puede ser? el vb? el win?



Depende. En win 7 32 bits no tendrías que tener problemas....pero al parecer la librería mcHID.dll no es compatible con 64 bits....A mi me está sucediendo lo mismo con algunas aplicaciones que había escrito en Visual C# 2008 no funcionan bajo Visual C# 2010 x64...todavía no se como solucionarlo.

Un saludo !



> Lo ideal es trabajar desde cero con Visual Basic 2010 o el Visual C# 2010 si esas librerías y anticuado para los días que estamos en la era .NET.
> 
> Con el timepo habrá más métodos. Desde el 2008 hasta ahora ha mejorado estas cosas y cada vez se ven más dispositivos por USB y sin el easy ese.



Todavía pueden usarse las librerías para Visual C#, VB.net y VC++ 2010 ....pero en x32...no hay forma de hacerlo funcionar en x64.


----------



## fernandoae (Feb 17, 2012)

Una pena, si sabes como solucionarlo avisame, pensaba hacer un robot con la netbook  y manejarlo por usb con un pic...


----------



## Meta (Feb 17, 2012)

Hay qu ebuscar al go más acual y moderno pra no quedarse atrás, el easy parece no actualizarse al 64 bits. Por algo será. Por algo hay qu ebuscar nuevas formas.


----------



## fernandoae (Feb 17, 2012)

Alguna sugerencia compañero? yo hice un joystick con hid, pero recien estoy empezando... habra que ver si hay algo por ahi. Me faltan muchas horas de estudio todavia


----------



## mnicolau (Feb 17, 2012)

Yo tuve problemas para ejecutar aplicaciones en SO x64 (compiladas en Visual Studio 2010), mientras que en 32 bits funcionaban sin problemas. Era una aplicación de control USB de un PIC, aunque no utilizando ese modo HID, sino BULK.

Para solucionarlo, coloqué en la opción "Destino de la plataforma": x86 (en lugar de Any CPU que viene por defecto). Con ese cambio las aplicaciones me corren correctamente en ambos sistemas.

Saludos


----------



## fernandoae (Feb 17, 2012)

Esto de los 32 y 64 bits es para dolores de cabeza y problemas de compatibilidad nomás! en windows 7 tenés idea como hacerlas andar en modo de 32 bits? que se yo, con lo compatibilidad o algo...


----------



## electrobicho (Feb 18, 2012)

alguien sabe de donde puedo descargar el easyhid?


----------



## fernandoae (Feb 18, 2012)

Si si, de megaupload    jaja. Despues me fijo si lo encuentro y te lo paso! saludos.


----------



## electrobicho (Feb 18, 2012)

descargeue de 4shared pero no se instala


----------



## miborbolla (Jun 21, 2012)

Hola Moyano, tengo una pequeña duda sobre el codigo que nos compartiste y el cual agradesco infinitamente, la duda es con respecto a la siguiente seccion;
	
	



```
' Si se conecta el dispositivo al host...
    Public Sub OnPlugged(ByVal pHandle As Integer)
        If hidGetVendorID(pHandle) = VendorID And hidGetProductID(pHandle) = ProductID Then
            Me.estado.BackColor = Color.Green
            Me.estado_conexion.Text = "CONECTADO"
        End If
    End Sub

    ' Si se desconecta el dispositivo del host...
    Public Sub OnUnplugged(ByVal pHandle As Integer)
        If hidGetVendorID(pHandle) = VendorID And hidGetProductID(pHandle) = ProductID Then
            hidSetReadNotify(hidGetHandle(VendorID, ProductID), False)
            Me.estado.BackColor = Color.Red
            Me.estado_conexion.Text = "DESCONECTADO"
        End If
    End Sub
```

No logro hacer que el "cuadro de estado" y el "estado_conexion" cambien de estado cuando conecto/desconecto mi dispositivo (pic12f2550), sin embargo tengo comunicación ya que puedo enviar y recibir datos con las funciones WriteSomeData() y onread().

Lo curioso de todo es que corriendo tu aplicación compilada "easyHID_VB.net 2008.exe" que esta incluida en la carpeta : \easyHID_VB.net 2008\easyHID_VB.net 2008\bin\release, ahí si que me funciona el cambio de estado.

No se si me falte cambiar el código, llamar a alguna función o configuración del propio visual basic 2010, que es la versión donde lo estoy compilando ojala me pudieras orientar al respecto, o es una travesura mas por migrar al visual basic 2010 y habrá que descubrir el problema. Por cierto estoy trabajando bajo Windows 7 (32bits)

De antemano te agradezco como siempre la ayuda que nos prestas.

Saludos


----------



## Moyano Jonathan (Jun 21, 2012)

> o es una travesura mas por migrar al visual basic 2010 y habrá que descubrir el problema.



Es eso 

El problema a mi se me presentó cuando quise pasar una aplicación hecha en Visual C# 2008, para VC# 2010. Ni siquiera me compilaba; lo que tuve que hacer es reescribir el código completamente y me funcionó...no hice ningún cambio, solo reescribí el código.

Trabajar con esta librería igual no es lo más recomendable, es mucho mejor usar la hid.dll de windows, con esa librería se acaban todos los problemas de compatibilidad, pero todavía no he realizado pruebas concretas.

Igual te digo que si podés enviar y recibir datos, analices el evento que trata los mensajes de conexión y desconexión, quizás estás comentiendo algún error o hay que tener algún otro punto en cuenta. Usá try - catch en las funciones...con eso te vas a dar cuenta si lo que haces es válido o estás cometiendo errores. A mi me es de gran ayuda.

Saludos !


----------



## miborbolla (Jun 23, 2012)

Hola Moyano:

Siguiendo tu consejo  "es mucho mejor usar la hid.dll de windows" me di a la tarea de buscar información al respecto y encontré el siguiente sitio en internet:

http://www.lvr.com/hidpage.htm

de Jan Axelson´s el cual me a parecido muy bueno con respecto al tema que comentamos en este post , baje y he tratado de traducir al español una de sus aplicaciones para visual basic 2008 que dejo anexada (ya parcialmente traducida).

Pero debo confesar que me queda grande para mis conocimientos de principiante con visual basic y el .net, alcanzo a comprender que dentro de todo el proyecto hay un archivo (HidDeclarations.vb) que es centro o parte neuralgica de este proyecto.

Con toda mi ignorancia, he logrado cosas bastante buenas, y tengo compatibilidad tanto en winxp, vista y win7 (32bits) lo cual es un aliciente para proseguir y tomar como base el trabajo de Jan Axelson´s. 

Quizas ya conozcas el trabajo que comento, y el motivo principal de mi comentario aparte de compartir lo que he investigado, es que pudieses comentarme al respecto y/o si tienes alguna plantilla para visualbasic 2008 o visual basic 2010 (que es el que uso), que sea mas básica con respecto al uso del HID.DLL que lo que encontre.

Reciba todo el foro un cordial saludo.


Nota.- Por el lado del microcontrolador PIC, por el momento me queda muy claro todo, estoy usando un programa muy básico que envía al USB 8 bytes en el buffer, y uno de los buffers que recibo del usb, lo dejo desplegado con leds.


----------



## miborbolla (Jun 27, 2012)

Simplemente para anexar a mis comentarios que con respecto a la programación en windows 64 bits, el programa base que he dejado en el ultimo comentario es que funciona perfectamente tanto en 32 y 64 bits sin ningún cambio en la programación.

Por mi parte dejo por finiquitada la búsqueda de una plantilla para visual basic 2010 que tanto buscaba y agradezco como siempre la ayuda prestada en tan bien nutrido foro.


Reciban un cordial saludo.


----------



## santes (Jul 23, 2012)

Hola que tal, lo que pasa es que no puedo abrir con el vb2010 express el archivo del hid del 2008, no se a que se deba, he estado trabajando con este modo en vb6, y he decido actualizarme, pero al hacer la conversion, me dice que no se a podido convertir todo, y de ahi vienen los problemas, si yo traspasar ael codigo del vb6 al vb2010 funcionaria?
gracias por leerme.


----------



## 13Avallejo82 (Oct 6, 2013)

Moyano Jonathan dijo:


> drmesmer como estás
> Para ayudarte un poco con tu proyecto te paso el código en VB.net para usar la librería easyHID..
> Espero que te ayude !




-----Hola Moyano Jonathan, quisiera me puedas ayudar con un inconveniente al compilar el código que me general el EasyHID en Microcodestudio usando PBP me da un total de 21 errores, entre los cuales tengo los siguientes: 

PBPPIC18.LIB ERROR Redefinition of label ifndef
PBPPIC18.LIB ERROR bad expression (en la linea que tiene este texto if (OSC == 3)    )
PBPPIC18.LIB ERROR Redefinition of label NOLIST
PBPPIC18.LIB ERROR Redefinition of label LIST
PBPPIC18.LIB ERROR Redefinition of label OSC_VALID

Te agradecería mucho si me puedes dar una idea del motivo por el cual el código generado por el EasyHID no se compila, muchas gracias.......


----------



## 13Avallejo82 (Oct 10, 2013)

Moyano Jonathan dijo:


> drmesmer como estás
> Para ayudarte un poco con tu proyecto te paso el código en VB.net para usar la librería easyHID..
> Espero que te ayude !



Hola moyano, muchas gracias por ese programa, te cuento que estoy tratando de hacer una conexión USB entre un PIC18F2550, el código generado por EasyHID wizard luego de leer por la red he logrado compilarlo y grabarlo en el PIC; agradecería me puedas aclarar ciertas dudas: Al conectarlo no me reconocía pro fue porque estaba trabajando con un cristal de 4MHZ y lo puse de 20MHz y el XP le reconocio y apareció el mensaje de nuevo dispositivo reconocido y salio el nombre que puse en EasyHID Wizard, al conectar con win 7 de 32 o 64 bits no me sale el mensaje con el nombre que puse en HID wizard y empieza a buscar driver posterior a lo cual luego de un tiempo me dice dispositivo reconocido "Dispositivo de entrada USB" así lo cataloga el windows, he copiado la el dll denominado mcHID.dll en system 32 de mi windows 7 de 32 bits pero al ejecutar el programa "easyHID_VB.net 2008" en la label denominada "estado_conexion" sigue con la palabra "DESCONECTADO" no me lo reconoce saco el USb y lo vuelvo a colocar y no hay cambio, me podría dar una idea de que puede ser, te agradezco mucho y gracias por los buenos aportes nuevamente.


----------



## Moyano Jonathan (Oct 10, 2013)

Hola como estás.

Con respecto a los programas hechos en Basic..no te sabría ayudar por que uso C para mis programas y las librerías trabajan diferente. Con respecto a Windows 7 de 32 o de 64 bits la PC te lo tendría que reconocer exactamente igual por que es un dispositivo HID y no requiere que instales ningún driver.
Con respecto a la conexión desconexión defectuosa que me mostras puede ser un problema de la PC.
El software para VB.net está un poco desactualizado y quizás no funcione correctamente, vas a tener que investigarlo más a fondo.


----------

