#include <stdio.h>
#include <stdlib.h>
#include <libusb-1.0/libusb.h>
int main() { libusb_device_handle *handle;
libusb_context *ctx = NULL;
int r;
// Inicializar libusb
r = libusb_init(&ctx);
if (r < 0) { fprintf(stderr, "Error al inicializar libusb: %s\n", libusb_strerror_name(r));
return EXIT_FAILURE;
}
// Abrir el dispositivo USB (reemplaza con el VID y PID de tu dispositivo)
handle = libusb_open_device_with_vid_pid(ctx, 0x1234, 0x5678);
if (handle == NULL) { fprintf(stderr, "No se pudo abrir el dispositivo USB\n");
libusb_exit(ctx);
return EXIT_FAILURE;
}
// Claim the interface (reemplaza con el número de interfaz correcto)
r = libusb_claim_interface(handle, 0);
if (r < 0) { fprintf(stderr, "Error al reclamar la interfaz: %s\n", libusb_strerror_name(r));
libusb_close(handle);
libusb_exit(ctx);
return EXIT_FAILURE;
}
// Enviar datos (reemplaza con el endpoint correcto y los datos que deseas enviar)
unsigned char data[] = {0x01, 0x02, 0x03, 0x04}; int actual_length;
r = libusb_bulk_transfer(handle, (1 | LIBUSB_ENDPOINT_OUT), data, sizeof(data), &actual_length, 1000);
if (r == 0) { printf("Datos enviados: %d bytes\n", actual_length); } else { fprintf(stderr, "Error al enviar datos: %s\n", libusb_strerror_name(r));
}
// Liberar la interfaz y cerrar el dispositivo
libusb_release_interface(handle, 0);
libusb_close(handle);
libusb_exit(ctx);
return EXIT_SUCCESS;
}