当前位置:   article > 正文

libusb linux 异步传输,使用libusb异步批量传输,设备停止接收,如果我们空闲

libusb异步传输通信

我正在写一个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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/711491
推荐阅读
相关标签
  

闽ICP备14008679号