/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Error comunicando con un dispositivo USB con API WIN32

 
      Índice del Foro elrincondelc.com -> Windows
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
_Guybrush_



Registrado: 29 May 2008
Mensajes: 14

MensajePublicado: 16/03/2009 2:17 am
Título: Error comunicando con un dispositivo USB con API WIN32

Buenas a todos.

No se si este es el foro apropiado para formular mi cuestion pero entiendo que sí ya que al fin y al cabo el problema lo tengo empleando la API de Windows. Estoy trabajando con el visual studio para generar la aplicacion.

El tema es que me quiero comunicar con una placa que conecto por USB al ordenador y transmitirle asi datos (El USB se identifica por el puerto csr0). Para ello por lo que he leido en internet debo primero abrir el dispositivo mediante el createfile y a continuacion hacer uso de la funcion writefile.

Algo hago mal ya que me da un error, no al compilar ni ejecutar, si no al detectar los datos entrantes en la placa. Quiero decir que el dispositivo se abre bien ya que devuelve un valor apropiado la funcion de createfile, y el writefile tambien parece que funciona correctamente ya que devuelve el valor de bytes escritos y si funcionara mal deberia devolver un 0. Pese a ello, en el momento en que ejecuto wl writefile la aplicacion que tengo en la placa casca. De todas formas creo que la aplicacion de la placa esta bien ya que la he tomado de otro sitio dedicado a ello.

Os copio mi codigo ya que es cortito y a ver si alguien me puede echar una mano con esto.

void main (void) {
HANDLE hFile;
int wmWritten;

int data[3] = {0x03, 0x7e, 0x12};

printf("Inicio la aplicacion\nSize data %d\n", sizeof(data));

hFile = CreateFile("\\\\.\\CSR0", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
printf("Handle %d\n", hFile);

if(hFile == INVALID_HANDLE_VALUE)
printf("No funciona\n");

WriteFile(hFile,data,sizeof(data),&wmWritten,0);

printf("Datos escritos: %d\n", wmWritten);

CloseHandle(hFile);
}


un saludo a todos y gracias.
Volver arriba
eagleoneraptor



Registrado: 20 May 2008
Mensajes: 187
Ubicación: Buenos Aires(Argentina)

MensajePublicado: 18/03/2009 10:31 am
Título:

Intenta abriendo el descriptor (hFile) usando los flags para el uso compartido del mismo (3er parametro de CreateFile), también puede que se necesiten Atributos de Seguridad al abrirlo, pero no te fíes completamente de mi, ya que no estoy muy seguro, son sugerencias para que pruebes...

Otra cosa que observo en tu código que tendrías que arreglar son las siguientes:

1) main siempre (o por lo menos en el estandar) debe devolver int, por lo que si tu programa finaliza correctamente, debe devolver el valor apropiado (EXIT_SUCCESS).

2) En tu programa, en el caso de que el archivo falle al abrirse, la función WriteFile se ejecutara igual, lo que no es muy recomendable si el archivo no esta abierto Wink . La parte que tienes que corregir quedaría así:

Código:
if(hFile == INVALID_HANDLE_VALUE){
    printf("No funciona\n");
    return EXIT_FAILURE;
}


Las macros EXIT_SUCCESS y EXIT_FAILURE estan definidas en stdlib.h

Un Saludo!
_________________
"Aquel que hace una bestia de si mismo se libra del dolor de ser un hombre". Dr. Johnson
Volver arriba
_Guybrush_



Registrado: 29 May 2008
Mensajes: 14

MensajePublicado: 31/03/2009 2:33 am
Título:

Aupa.

Acabo de ver tu respuesta, asi que gracias por tu tiempo (mas vale tarde que nunca). Al final lo arregle usando la API que me proporcionaba una libreria que pude conseguir en internet y ya se me habia olvidado que habia posteado aqui.

Lo dicho, un saludo
Volver arriba
      Índice del Foro elrincondelc.com -> Windows
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com