Slavka_online
@Slavka_online
Интересная личность

Передать и считать данные с микроконтроллера с использованием libusb?

QMessageBox *msg = new QMessageBox(this);
 
    
    unsigned char input[] = {0x10};
 
    libusb_init(NULL);
    libusb_device_handle *dev = libusb_open_device_with_vid_pid(NULL, device->getVID(), device->getPID());
 
    if(dev == NULL) {
 
        msg->setText("Device no Find");
        msg->show();
 
        return; }
 
    int transferred;
    int ret;
    if (libusb_kernel_driver_active(dev,0))
            libusb_detach_kernel_driver(dev,0);
        if ((ret = libusb_set_configuration(dev, 1)) < 0)
        {
            msg->setText("Ошибка");
            msg->show();
        }
        if (libusb_claim_interface(dev, 0) < 0)
        {
            msg->setText("Ошибка");
            msg->show();
        }
 
     
   ret = libusb_interrupt_transfer(dev, 0x01, input, sizeof(input), &transferred, 1000);
 
    if (ret < 0){
 
        msg->setText("Ошибка");
        msg->show();
    }
 
     libusb_attach_kernel_driver(dev, 0);
     libusb_release_interface(dev, 0);
     libusb_close(dev); 
     libusb_exit(NULL); 
 
 
     msg->setText(QString(input[0]));
     msg->show();


вот код отправки данных, код срабатывает и не выдает ни одну ошибку, но данные не приходят, пытаюсь сменить контрольную точку на IN чтобы получить данные, реакция такая же. Хотя тривиальный пример идущий с Keil по зажиганию светодиодов на этом устройстве работает
  • Вопрос задан
  • 1724 просмотра
Пригласить эксперта
Ответы на вопрос 1
@monah_tuk
Изучите это руководство: habrahabr.ru/post/261955

А по сути, без дескрипторов USB говорить о чём-то сложно (на Linux: lsusb -v, на Windows: UsbView). Ну и проверить, что у вас действительно используется interrupt трансферинг и на самом устройстве код правильный.

А так, криминала не вижу: передача на устройство, а значит EP OUT, у вас это EP1, а значит 0x01. Так что, скорее всего, проблема на устройстве. Попробуйте, для начала, control transfering.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы