Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

USB

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: USB Responder citando

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?

Question Question Question
Volver arriba
Mensaje    Asunto: lo llevas crudo Responder citando

lo llevas crudo
Volver arriba
Mensaje    Asunto: Responder citando

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
Mostrar mensajes de anteriores:   
Cambiar a:  
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


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.