Autor Tema: Proyecto PicUSB  (Leído 510325 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: Proyecto PicUSB
« Respuesta #150 en: 01 de Junio de 2007, 05:33:18 »
Hola Geo, quizá la librería libusb-win32 sea un camino para conseguir compatibilidad con Vista ya que es código abierto... a ver! Respecto a linux, le pegaré un ojo al wx ... estoy muy pez con ese SO..!!... gracias por la info ;)

Desconectado Geo

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 922
    • Mexchip
Re: Proyecto PicUSB
« Respuesta #151 en: 01 de Junio de 2007, 21:22:06 »
Cierto, me había olvidado de probarlo en Windows Vista. Mañana mismo lo intento :).

La imaginación es el límite.
Visita mi blog, en inglés o en español :).
Mini curso de introducción a VHDL en MEXCHIP :-/

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: Proyecto PicUSB
« Respuesta #152 en: 02 de Junio de 2007, 19:50:07 »
Bueno voy a ir posteando por aquí los avances que haga con el driver para Vista... es un campo muy nuevo este de los drivers asi que no aseguro un final feliz, pero se intentará!

En primer lugar, vamos a necesitar la DDK, si consultamos la página de Microsoft nos encontramos con dos distintas:
http://www.microsoft.com/whdc/driver/foundation/WhichDDK.mspx

Una es la "Windows Server 2003 Service Pack 1 DDK" que se utiliza para crear drivers para versiones de sistemas operativos anteriores a Windows Vista, es decir, (2k, XP, XP64, 2k3, 2k3 64) si teneis interés en ella se puede descargar de aquí (230Mb):
http://www.microsoft.com/whdc/devtools/ddk/default.mspx

La otra es "Windows Vista WDK", esta es la que nos va a interesar ya que el driver compatible con el XP ya lo tenemos, por lo que en el peor de los casos, si no tuviera retrocompatibilidad, le añadimos un par de lineas al .inf del driver nuevo que creemos para que lea el antiguo, es decir, el que proporciona Microchip. Bien, una vez sabemos que tenemos que bajar la WDK (Windows Driver Kit), vamos a ver de donde, se puede obtener por dos sitios distintos, la página de Microsoft siguiendo los pasos que indican en esta página, en el vínculo "How to Get..." y pinchando en este, despúes sobre "How to Participate..."
http://www.microsoft.com/whdc/DevTools/WDK/default.mspx

Otra forma más rápida y puesto que el software lo ofrecen de forma gratuita, aunque rebuscada, es descargarlo del eMule (2,3Gb):
ed2k://|file|Microsoft.Windows.Vista.Driver.Kit.RTM-XiSO.FSJ.iso|2492934144|59661A4054C50B6B0B59B3A3831CDEF5|/

Una vez, descargado, el siguiente paso es empezar a mirar ejemplos e intentar entender algo!, asi que, eso es lo que voy a estar haciendo hasta que os vuelva a pegar otro rollo como el que acabo de soltar!

saludos.

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: Proyecto PicUSB
« Respuesta #153 en: 03 de Junio de 2007, 07:48:59 »
Bueno he encontrado una pequeña luz, parece que la tendencia va a ser utilizar algo llamado WinUSB, es un driver que está integrado en Vista, y que es compatible con XP(aunque no lo lleva integrado, habrá que copiarlo). Lo particular de este driver es que se va a poder usar de una forma parecida a como se usa el puerto COM. Vamos a tener que crear un .inf q lo una todo y usar este driver y su dll en vez de la que teníamos de microchip. Os dejo con unos links por si quereis ir mirando cosillas, yo me pongo ya a estudiar! que siempre me pongo a cacharrear con los examenes a la 'vista' jejeje

http://www.osronline.com/ShowThread.cfm?link=108714
http://osdir.com/ml/lib.libusb.devel.general/2006-12/msg00027.html
http://blogs.msdn.com/peterwie/archive/2007/01/10/fixing-the-umdf-usb-samples-to-install-both-on-xp-vista.aspx
http://msdn2.microsoft.com/en-us/library/ms790696.aspx
http://66.102.9.104/search?q=cache:n_UmlO6BJokJ:forum.insanelymac.com/index.php%3Fact%3DPrint%26client%3Dprinter%26f%3D63%26t%3D39172+WinUSB.sys&hl=es&ct=clnk&cd=10&gl=es&client=firefox-a

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: Proyecto PicUSB
« Respuesta #154 en: 03 de Junio de 2007, 09:43:18 »
Habemus driver compatible con Vista x86, x64 y XP!!!!!!! :D :D aún no lo posteo x aquí pq está por pulir y tengo q crear una aplicación para que realmente se vea que funciona.... pero el PicUSB ya se instala en Vista x64!!  :):):)

Desconectado Geo

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 922
    • Mexchip
Re: Proyecto PicUSB
« Respuesta #155 en: 03 de Junio de 2007, 11:24:46 »
En cuanto a libusb-win32, todavía no tuve oportunidad de probar, en el foro comentan algunos que les funciona sin problemas en Windows Vista pero a algunos otros no, aunque se ha comentado por allí la posibilidad de utilizar WinUSB en alguna futura implementación.
La imaginación es el límite.
Visita mi blog, en inglés o en español :).
Mini curso de introducción a VHDL en MEXCHIP :-/

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: Proyecto PicUSB
« Respuesta #156 en: 03 de Junio de 2007, 11:35:43 »
Hola Geo, a los que le funciona en Vista la libusb creo q es solo para la versión x86, es decir, la de 32bits. Con esto que ando haciendo va a servir también para la x64, ya que cambia en algunos aspectos el tema de drivers, pero bueno, la cosa está solucionada, e incluso con el iconito de marras en el Panel de Control! ahora tendré q pelearme un poco con el WinUSB a ver como se envian/reciben datos. En la página de las msdn q puse antes aparece. En fin, poquito a poco. La verdad estaría bien crear algo unificado y para todas las plataformas, es la idea del libusb. Mientras tanto, me conformo con unificar en windows con el WinUSB! :p

Desconectado Geo

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 922
    • Mexchip
Re: Proyecto PicUSB
« Respuesta #157 en: 03 de Junio de 2007, 22:56:35 »
Ah, no había pensado en eso :).

Bien, lo que probé: PicUSB con la dll de Microchip en Windows Vista no funciona (sin modificar nada del proyecto que funciona en XP), solamente la primer instrucción enviada y después el PIC ya no hace caso. Con la libusb-win32 en Windows Vista 32 bits funciona igual que en Windows XP, no tuve ningún problema (solamente instalar el driver y listo). Lo que no sé es con respecto a la versión x64, no tengo a la mano para poder probar, aunque libusb-win32 incluye el driver para x64 también.

Lo de WinUSB, ¿lo estás manejando en C++ o con C#?
La imaginación es el límite.
Visita mi blog, en inglés o en español :).
Mini curso de introducción a VHDL en MEXCHIP :-/

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: Proyecto PicUSB
« Respuesta #158 en: 04 de Junio de 2007, 03:25:54 »
anda, el libusb incluye driver para vista x64??? jode, juraría haber leído en los foros que no daban soporte todavía! pues voy corriendo a leerlo, pq el trabajo podría estar hecho ya! XDDD

Gracias por el apunte

pd: el WinUSB aún no lo he tocado en lo que a programación se refiere, pero en principio lo haría con VC#, mas que nada, pq de VC++ ni idea! :p
« Última modificación: 04 de Junio de 2007, 03:28:01 por J1M »

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: Proyecto PicUSB
« Respuesta #159 en: 04 de Junio de 2007, 06:28:17 »
malas noticias... el driver no es para Vista x64, sino para XP x64 :(:( ... bueno, seguiré con la romántica idea del WinUSB! :p ... aunque creo q hasta el finde no voy a poder volver a trastear (eso si logro controlar mi furia interior! jejej)

Desconectado softjad

  • PIC10
  • *
  • Mensajes: 41
Re: Proyecto PicUSB
« Respuesta #160 en: 06 de Junio de 2007, 13:34:35 »
Hola a todos,

Tengo un problema con el usb,
¿Qué tengo que poner en la función de recibir en el  c# para recibir este dato:?


Código: [Seleccionar]
TX_array[17]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17];
 usb_put_packet(1, TX_array, 17, USB_DTS_TOGGLE);

Saludos

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: Proyecto PicUSB
« Respuesta #161 en: 07 de Junio de 2007, 21:34:14 »
Hola J1M, este proyecto es excelente!  :P 

Bueno queriendo avanzar mas cn esto tuve unos problemas el intentar mandar del PIC al USB letras. Ocea agrande el TExtBox y cambie resultado por:
Código: [Seleccionar]
resultado="PRUEBA"; cambiando int8 de envia[] por char pero ni asi funciono, enves se mostro los numeros 234.

Creo q el problema esta en q "ResultadoPIC()" no puede cambiar los numeros q manda el pic por letras, o algo asi. Nose q estare haciendo mal, podrias ayudarme ??


salu2  8) 8)

Desconectado juanpavela

  • PIC10
  • *
  • Mensajes: 37
Re: Proyecto PicUSB
« Respuesta #162 en: 10 de Junio de 2007, 13:35:04 »
hola apenas vengo a entrar a este fantastico foro propuesto por J1M, empeze a leer pero sinceramente no entiendo nada, yo trabajo con pic y agradeceria que me dijeran que debo hacer primero, en mi picc tengo unos ejemplos que son el usb_mouse, usb_hid, usb_scope, deberia quemarlos asi como si nada e inmediatamente puedo tener un ejemplo de como empezar atrabajar con usb??, mi pic es un 18f2550, les agradazco de antemano y espero me puedan ayudar con este buen tema
gracias

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: Proyecto PicUSB
« Respuesta #163 en: 11 de Junio de 2007, 08:48:39 »
Hola a todos, perdon por el retraso, ando de examenes...

En primer lugar, peleaos con el código, dadle vueltas, buscad ejemplos similares por internet y en último recurso, preguntad... que así es como se aprende! ;)

- softjad: Sigue el ejemplo PicUSBNUT, es lo mismo que lo que tratas de hacer, pero al revés, a ver si así tienes suerte. De primeras no veo el fallo en el código :S... supongo que has cambiado el tamñano de los buffer de escritura/lectura.

- jeremylf: Tengo mucho morro pero, la respuesta también te sirve la del compañero anterior. Para decirte algo que funcione tendría que hacer el código :S pq el visual c# y los 'cast' de funciones son 'muy suyos' ... intenta buscar ejemplos sobre el tema en páginas como csharpcorner.

- juanpavela: Lo mas sencillo que te vas a poder encontrar es el ejemplo PicUSB, dale vueltas y vueltas, verás que al final terminas viendo donde está "la parte superior y la inferior", de primeras, en esto como en todo, es dificil entender nada, dedicale un tiempo y verás q en nada le tienes el truquillo pillado!

Perdonad por las respuestas tan 'Fuzzy' ....

un saludo!

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: Proyecto PicUSB
« Respuesta #164 en: 11 de Junio de 2007, 21:05:41 »
Creo q lo de enviar desde el PIC al PC texto esta algo dificil y requiere de un nuevo codigo en el C# como mencionas J1M, es algo mas avanzado me supongo asique lo dejare por el momento de lado. Pues bien, ahora probando y entendiendo todo esto me dio un error al pasar mas de 1 byte del PIC al PC y pues lo mira y mira y no encuentro ningun fallo  :? ... Creo q es parecido al probema de softjad.

Esto tengo en el CCS:
Código: [Seleccionar]
//Definiciones para interactuar con el USB:
#define modo      recibe[0]
#define param1    recibe[1]
#define param2    recibe[2]
#define dato0      envia[0]
#define dato1    envia[1]


void main(void)
{
   //Variables:
   int8 recibe[3];
   int8 envia[2];   
               
   while (TRUE)
   { 
      if(usb_enumerated())          //si el PicUSB está configurado
      {
         if (usb_kbhit(1))          //si el endpoint de salida contiene datos del host
         {
            usb_get_packet(1, recibe, 3); //cojemos el paquete de tamaño 3bytes del EP1 y almacenamos en recibe
           
            if (modo == 0) // Modo_Suma
            {
                  dato0=24;
                  dato1=4;
                  usb_put_packet(1,envia,2,USB_DTS_TOGGLE); //enviamos el paquete de tamaño 1byte del EP1 al PC
            }
         }
      }
   }
}

Y en el C#:
Código: [Seleccionar]
public uint Tiempo()
        {
            uint dato = 0;

            byte* receive_buf = stackalloc byte[2];

            DWORD RecvLength = 2;

            ReceivePacket(receive_buf, &RecvLength);
            dato = receive_buf[0];

            return dato;
        }

Para el envio de dato del PC al PIC uso SumaPIC().
Cuando esta asi: dato=receive_buf[0] Si funciona y devuelve 24, pero cuando pongo enves del 0 el 1... muestra 0, cuando deberia mostrar 4 :? :?.

Q estara pasando?? Ya vi tb el PicUSBNUT y no encuentro alguna falla (de lo poco q se) al enviar datos del PIC a la PC  :? 


salu2 8) 8)