 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
deccico Invitado
|
Publicado: Sab 28 Dic, 2002 10:25 pm Asunto: USB |
|
|
Tengo que implementar el uso de un dispositivo que se conecta por USB.
Para ello dispongo de su driver, mi pregunta es simple
¿cómo implemento el uso del puerto USB?
 |
|
| Volver arriba |
|
 |
1 Invitado
|
Publicado: Sab 04 Ene, 2003 1:07 am Asunto: lo llevas crudo |
|
|
| lo llevas crudo |
|
| Volver arriba |
|
 |
JR Invitado
|
Publicado: Jue 30 Ene, 2003 11:09 am Asunto: |
|
|
Bueno, no se hace cuanto que publicaste tu consulta, pero la he leido hoy.
Es un tema algo jodido, pero no imposible.
Conoces un libro llamado "USB design by example"? trae ejemplos en VB.
En la siguiente WEB tienes ejemplos, (ninguno en BCB), pero si podras aprovechar las llamadas a las API de los fuentes de otros lenguajes y un compontente para Delphi 4
http://www.usb-by-example.com/Examples/index.htm#Download
Hay dos maneras de acceder, mediante el HID driver, y a pelo con las API
ya sabes con "Create file..."
Lo que tengo hecho yo es con createfile:
Creamos un formulario con un Tedit, boton, y un Radiobuton con 2 posiciones: ok y fallo.
Trata de acceder a los controladores que hay instalados, cuyo nombre es el siguiente:
\\.\HCD1
\\.\HCD2
\\.\HCD....
Es lo que tendras que poner en el TEdit antes de darle al boton.
typedef struct _VENDOR_REQUEST_IN
{
char bRequest;
WORD wValue;
WORD wIndex;
WORD wLength;
char direction;
char bData;
} VENDOR_REQUEST_IN;
TForm1 *Form1;
void __fastcall TForm1::Button1Click(TObject *Sender)
{
HINSTANCE device;
HINSTANCE template_file;
HINSTANCE RESULT;
VENDOR_REQUEST_IN my_request ;
char a[256];
AnsiString b;
LPVOID a_long=0;
LPDWORD bytes_recibidos=0;
device=CreateFile(Edit1->Text.c_str(),GENERIC_WRITE,FILE_SHARE_WRITE,NULL,OPEN_EXISTING,0,template_file);
if(device!=INVALID_HANDLE_VALUE)
{
try
{
//hallamos el numero de bytes que tiene el nombre del dispositivo.
if(DeviceIoControl(device,0x220424,0,0,&a_long,260,(unsigned long *)&bytes_recibidos,NULL))
{
DeviceIoControl(device,0x220424,&a,sizeof(a),a_long,260,bytes_recibidos,NULL);
}
CloseHandle(device);
}
catch(...){ShowMessage("Error del dispositivo");}
}
else
{
RadioGroup1->ItemIndex=1;
CloseHandle(device);
}
if (bytes_recibidos!=0)
ShowMessage(b);
}
//---------------------------------------------------------------------------
Cuando visualiza la informacion recibida aparecen caracteres extraños, pero es porque realmente nos envia los caracteres en formato de 16 bits, y hay que tratarlos. Yo tuve que dejar aqui el tema, ahora ya no tengo tiempo de continuar.
La aplicacion solo sirve para ver que controladores estan activos, despues de ello, puedes acceder a unos descriptores que contienen informacion de los dispositivos instalados, luego acceder a los dispositivos (o a los HUB) y acceder a sus descriptores y asi sucesivamente. Realmente es largo el tema. Te aconsejo que te compres el libro que he citado antes y tengas paciencia.
Suerte al que lo intente.
Un saludo |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|