Libusb-win32的库能否支持连续多次写和读呢?
我在调用usb_bulk_write批量写入的时候发现写完之后如果没有调用usb_bulk_read的话就会返回超时错误;也就是write和read必须一一对应才能正常使用,请问这是我的底层软件和设备的问题呢还是libusb-win32就是只能支持这样操作?
Libusb-win32的库能否支持连续多次写和读呢?
我在调用usb_bulk_write批量写入的时候发现写完之后如果没有调用usb_bulk_read的话就会返回超时错误;也就是write和read必须一一对应才能正常使用,请问这是我的底层软件和设备的问题呢还是libusb-win32就是只能支持这样操作?
下午好🌅🌅🌅
本答案参考ChatGPT-3.5
根据您的描述,libusb-win32的库在批量写入后必须一一对应地进行读取才能正常使用,如果不这样做,就会返回超时错误。这通常是因为USB设备可能会发送ACK/NAK等特定的应答(比如数据已经传输完毕),如果没有立即读取确认应答,那么会导致下一次发送的命令无法得到正确的响应。
针对这个问题,可以考虑以下解决方案:
1.编写状态机:在发送指令时,先发送问询指令,然后循环读取应答直到读到ACK为止,再继续发送下一条指令。这个方案需要在应用程序中进行状态机的编写,相对较为复杂。
2.使用多线程:使用一个线程进行数据的写入,另一个线程进行数据的读取,两个线程通过消息队列或共享内存进行通信。这个方案需要使用多线程技术,而且对于需要高实时性的应用程序可能存在问题。
3.采用超时机制:在写入命令时设置一个较长的超时时间,等待设备的应答。如果超时则表示设备没有响应,需要进行重发或者其他处理。这个方案相对比较简单,但在应用场景较为复杂时可能不太适用。
建议您先尝试第三个方案,然后根据具体情况选择调整方案。