qq_29720391 2024-05-11 15:18 采纳率: 50%
浏览 14
已结题

 Libusb-win32的库批量读写

 Libusb-win32的库能否支持连续多次写和读呢?

 我在调用usb_bulk_write批量写入的时候发现写完之后如果没有调用usb_bulk_read的话就会返回超时错误;也就是write和read必须一一对应才能正常使用,请问这是我的底层软件和设备的问题呢还是libusb-win32就是只能支持这样操作?

  • 写回答

4条回答 默认 最新

  • 檀越@新空间 2024-05-11 15:18
    关注

    下午好🌅🌅🌅
    本答案参考ChatGPT-3.5

    根据您的描述,libusb-win32的库在批量写入后必须一一对应地进行读取才能正常使用,如果不这样做,就会返回超时错误。这通常是因为USB设备可能会发送ACK/NAK等特定的应答(比如数据已经传输完毕),如果没有立即读取确认应答,那么会导致下一次发送的命令无法得到正确的响应。

    针对这个问题,可以考虑以下解决方案:

    1.编写状态机:在发送指令时,先发送问询指令,然后循环读取应答直到读到ACK为止,再继续发送下一条指令。这个方案需要在应用程序中进行状态机的编写,相对较为复杂。

    2.使用多线程:使用一个线程进行数据的写入,另一个线程进行数据的读取,两个线程通过消息队列或共享内存进行通信。这个方案需要使用多线程技术,而且对于需要高实时性的应用程序可能存在问题。

    3.采用超时机制:在写入命令时设置一个较长的超时时间,等待设备的应答。如果超时则表示设备没有响应,需要进行重发或者其他处理。这个方案相对比较简单,但在应用场景较为复杂时可能不太适用。

    建议您先尝试第三个方案,然后根据具体情况选择调整方案。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月20日
  • 已采纳回答 5月20日
  • 创建了问题 5月11日