libusb开发通讯问题
libusb开发通讯问题
本篇文章继续记录使用libusb通讯是遇到的问题
问题描述:
使用libusb与一台新的虚拟串口下位机通讯,扫描、打开、关闭都是正常的,就是无法收发数据,也没有报错,这是为什呢,检查了usb驱动,虚拟串口驱动已经被安装成usb驱动,没有问题,我又换一种虚拟串口的设备试一试,没有问题,所以代码是没有错误的,是不是有哪些设置没有设好,这里暂且称两台设备为A(使用libusb无法通讯的虚拟串口设备)、B(使用libusb可以通讯的虚拟串口设备);我又使用串口工具与这两种设备通讯,发现使用串口工具也没法与A设备通讯了,B设备依然是正常的,这时候我就怀疑是不是A设备是坏的,所以就去找A设备开发工程师,问他是不是设备坏了,但是他在他电脑上使用串口工具通讯是正常的,这就奇怪了,这时候我发现我和他使用的串口工具不同,所以我就把他的串口工具拷贝到我的电脑上试一试,发现使用他的串口工具就是好的,这时候我大概找到原因了,我仔细对比两个串口工具发现了不同,一个串口工具设置的DTR、RST,一个没有设置,因此导致串口通讯失败,所以我就查找使用libusb设置DTR、RST的方法,设置DTR、RST后果然通讯正常了。
设置是使用控制传输设置的,设置代码:
int rc = libusb_control_transfer(dHand, 0x21, 0x22, 0x02 | 0x01, 0, nullptr, 0, 10);
if (rc < 0) {
fprintf(stderr, "Error during control transfer: %s\n",
libusb_error_name(rc));
}
在设备打开后添加以上代码就可以正常通讯了。
根据以上代码设备是可以正常通讯了,可是使用了一段时间后又出现问题了,真的是一个坑填上又出现一个,永远都是填不完的坑啊。
问题描述:
手动插拔设备时是没有问题的,一切都很正常,但是使用软件关闭设备通讯,再次打开设备是就打开不了,使用debug单步调试发现,问题出现在DTR、RST上面,软件关闭设备通讯后再次打开设备这只DTR、RST时就会阻塞在里面无法退出,就算加了超时也没有。
我在想是不是关闭设备的时候没有禁用DTR、RST才导致这个问题,于是我在关闭前禁用DTR、RST:
int rc = libusb_control_transfer(dHand, 0x21, 0x22, 0x00, 0, nullptr, 0, 10);
if (rc < 0) {
fprintf(stderr, "Error during control transfer: %s\n",
libusb_error_name(rc));
}
经验证,禁用DTR、RST还是没用,这是为很么呢,百思不得其解,于是我就去查找各种关于使用libusb设置DTR、RST的资料,最后终于在GitHub让我找到了,是在GitHub中一个js使用libusb的工程中发现了,那里面有使用libusb设置DTR、RST的完整步骤,具体是哪个工程不记得了,研究了下这个工程中的使用步骤发现原来我设置DTR、RST时使用的接口传参传错了,但是我很好奇的是为什么传错参数了还可以正常通讯,一直没想明白(想不明白就先不想了),正确的传参是:libusb_control_transfer第五个参数应该是通讯的接口号。
使能DTR、RST:
int rc = libusb_control_transfer(dHand, 0x21, 0x22, 0x02 | 0x01, interfaceNumber, nullptr, 0, 10);
if (rc < 0) {
fprintf(stderr, "Error during control transfer: %s\n",
libusb_error_name(rc));
}
//禁用DTR、RST:
int rc = libusb_control_transfer(dHand, 0x21, 0x22, 0x00, interfaceNumber, nullptr, 0, 10);
if (rc < 0) {
fprintf(stderr, "Error during control transfer: %s\n",
libusb_error_name(rc));
}
- 分享
- 举报
-
浏览量:7296次2020-08-14 23:09:45
-
浏览量:15879次2020-12-02 22:54:46
-
浏览量:9110次2020-08-18 21:11:17
-
浏览量:8053次2020-08-19 22:30:28
-
浏览量:10483次2020-08-18 21:37:52
-
浏览量:4818次2020-08-11 18:51:18
-
浏览量:4846次2020-08-19 22:25:39
-
浏览量:6528次2020-08-15 17:22:26
-
浏览量:2373次2020-08-23 21:47:22
-
浏览量:2528次2020-08-14 15:09:41
-
浏览量:1568次2023-03-02 16:27:17
-
浏览量:971次2023-11-30 11:48:53
-
浏览量:4950次2020-08-11 17:39:02
-
浏览量:4776次2020-08-15 17:29:07
-
浏览量:592次2023-10-24 17:47:15
-
浏览量:3814次2020-08-14 17:18:54
-
浏览量:4947次2020-09-20 22:00:55
-
浏览量:1975次2023-09-19 16:02:04
-
浏览量:5093次2022-07-21 14:02:50
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
小王子🤴
感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明