前提・実現したいこと
ホスト:win10
ドライバ:libusb1.0
usb通信にてIO転送を行いたい。
発生している問題・エラーメッセージ
libusb_bulk_transferの受信をした際に、LIBUSB_ERROR_TIMEOUTが返ってきてしまう。
下記の場合に正常な返り値が返っていることは確認済み。
・libusb_bulk_transferの送信
・libusb_control_transferの送受信
該当のソースコード
/* バルク転送 受信 */ int function1() { int ret; unsigned char buf[31]; memset(buf,0xFF,sizeof(buf)); int actual; int request = LIBUSB_ENDPOINT_IN | EP2; ret = libusb_bulk_transfer(s_handle, request, buf, sizeof(buf), &actual, 1000); ★LIBUSB_ERROR_TIMEOUTが返ってくる★ return ret; } /* バルク転送 送信 */ int function2() { int ret; int actual; int request = LIBUSB_ENDPOINT_OUT | EP1; unsigned char buf[64]; ret = libusb_bulk_transfer(s_handle, request, buf, size, &actual, 1000); return ret; } /* コントロール転送 受信 */ int function3() { int ret; unsigned char buf[8]; memset(buf,0xFF,sizeof(buf)); uint8_t bmRequestType = LIBUSB_ENDPOINT_IN | LIBUSB_REQUEST_TYPE_STANDARD | LIBUSB_RECIPIENT_DEVICE; uint8_t bRequest = LIBUSB_REQUEST_GET_STATUS; uint16_t wValue = 0; uint16_t wIndex = 0; uint16_t wLength = 1; ret = libusb_control_transfer(s_handle,bmRequestType, bRequest, wValue, wIndex, buf, wLength, 1000); return ret; } /* コントロール転送 送信 */ int function4() { int ret; unsigned char buf[8]; memset(buf,0xFF,sizeof(buf)); uint8_t bmRequestType = LIBUSB_ENDPOINT_OUT|LIBUSB_REQUEST_TYPE_CLASS|LIBUSB_RECIPIENT_INTERFACE; uint8_t bRequest = LIBUSB_REQUEST_SET_CONFIGURATION; uint16_t wValue = 0; uint16_t wIndex = 0; uint16_t wLength = 8; ret = libusb_control_transfer(s_handle,bmRequestType, bRequest, wValue, wIndex, buf, wLength, 1000); return ret; }
補足情報
デバイス情報
ツール:usbvviewより
Endpoint Descriptor: bEndpointAddress: 0x01 OUT Transfer Type: Bulk wMaxPacketSize: 0x0040 (64) bInterval: 0x00 Endpoint Descriptor: bEndpointAddress: 0x82 IN Transfer Type: Bulk wMaxPacketSize: 0x0040 (64) bInterval: 0x00
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。