赞
踩
我正在写一个Linux程序(使用Qt 4.8和libusb 1.0),它将与自定义USB设备(当前正在由同事编程)进行通信。使用libusb异步批量传输,设备停止接收,如果我们空闲
第1步是让“心跳”以固定的时间间隔通过USB来回传输。 我目前正在使用异步批量传输。
对于测试,我已将“Send_Heartbeat()”放在按钮单击上。如果我点击LOT按钮并排队发送一些消息,只要我保持队列忙,消息就会继续发送,而我的USB设备会继续接收它们。
如果我停了几秒钟,然后恢复并添加更多消息到队列中,USB设备停止接收它们。
但是,我的节目的传输回调确实与0传递状态代码返回,表示成功,尽管我的USB设备无法接收他们。
我的问题:
为什么回调的传输状态表示成功,如果我的USB设备似乎已停止接受他们?
有没有人听说过这种类型的行为?
值得注意的是,如果我断开USB设备,我的回调中会返回正确的状态码,表明设备已经消失。
如果USB设备保持连接和运行,并且我“Detatch”,然后再“附加”强制重新连接,并尝试发送更多的测试心跳时,它的工作原理! USB设备再次开始接收消息。
我“Detatch”是以下呼叫:
libusb_release_interface()
libusb_reset_device()
libusb_close()
然后,我的“附加”是:
libusb_get_device_list()
libusb_get_device_descriptor()
libusb_open()
libusb_set_configuration()
libusb_claim_interface()
我的下一个步骤是缩小其中的libusb的命令是重新建立沟通。
同时,我希望有人认识到这些症状,并有一个建议。 由于这是我第一次编程USB通信,我想知道是否有一些我已经错过的基础。
谢谢!
2013-07-03
Doug
+0
难道你需要'attach_kernel_driver()'在分离来电? –
2013-07-15 11:59:02
+0
而且,你不需要在附加调用中使用'detach_kernel_driver()'吗? –
2013-07-15 11:59:47
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。