libusb系列-007-qt下使用libusb1.0.26源码(代码片段)

DreamLife. DreamLife.     2022-12-12     562

关键词:

libusb系列-007-Qt下使用libusb1.0.26源码

文章目录


关键字: DebianLinuxQtlibusb源码

内容背景:

最近项目终于切到Linux下开发了,所以最近的记录都是发生在Debian 10 以及Arm Debain 10 下,Qt版本5.12.3。这几天真是问题多多,收获满满,不过目前阶段仅仅停留在解决问题,至于原理性的东西,还得慢慢消化。最近好多问题都是直接群里问大神,感谢各位大神助我成长。

开始本来USB传世使用的是HIDUSB,后面计划开发一个专用的驱动,到最后,因为最终系统一直定不下来,最终成了使用libusb了。大部分人都是直接使用libusb 的库的,把源码直接放在项目中参与编译的应该很好,哎,我就是那个大冤种,那么请跟随我一起看我如何给自己完坑踩坑吧。

摘要

哎呀,终于轮到我写我踩的大坑了。这里要贴出我领悟到的重大人声哲理。

其实,所谓的困难,都是我们自己。

其实我最开始接触libusb的时候,就有把libusb源码搞进项目里的想法,因为前面使用QCustomPlot库 CJSON库``HUDUSB库都是直接包含一个头文件和一个源码即可完成源码的引入,那么到libusb库的时候,我就有了同样的想法了,但是当我打开libusb库的源码包是,是直接闷逼的状态,所以当场就点击了右上角的X

第二次是尝试编译lib库,结果还是一地鸡毛,找了好几个教程,都是没有成功,所以再次点击右上角的X

第三次,尝试直接把源码放在Qt里面编译,不错所料,好几百个错误,又一次点击右上角X

第四次,准备好好研究一番再搞。终于算是成功了吧,1.0.9 顺利整合到源码中,1.0.26 在Demo里面测试可以了初始化USB了,不过我注视掉了部分时间相关的函数,应该会有部分问题,应该还是少了那个库所致,暂时只能到这里,因为我项目中原来使用的库就是1.0.9 所以这源码也是1.0.9 的,保持下一致性。

安装编译环境

这个环节看是很数次,其实就是在第三篇文章libusb系列-003-Linux下libusb源码编译的一部分,因为我们需要通过make 知道linux,需要那些源码。所以需要安装编译环境

sudo apt install -y make dh-autoreconf
sudo apt install -y libudev-dev

确认需要的文件

这里就要切到libusb系列-003-Linux下libusb源码编译,找一张图一下都需要什么文件。

按照上面的内容,把需要的源码文件添加到Qt工程中。

开始编译

接着按照理想的进度,应该是我们点击Qt Creator中的Buil按键,等待绿条走完,就可以了大功告成了,

错误1:找不到文件

命名已经包含了,结果还是找不到文件如下图所示

这个问题其实还是很好解决的,改下包含路径即可。这个步骤需要循环操作好多次,直到没有了对应的报错。

错误2:expected

额,这个错误我也不知道该怎么形容,反正就是好导出宏有关系。如下图所示

因为我们要直接使用源码,没有导出一说了,所以我就把导出宏删除了,这个也要循环操作好多轮,直到没有再说。

错误3:SCM_CREDENTALS

说是这个宏没有定义 SCM_CREDENTALS

这个就要找对应的宏定义,一路找上去,最后会发下如下图所示的定义,所以只需要在对应的宏使用的地方增加一个宏 __USE_GNU_

百度也有其他的方法,我测试不好使,上面是我测试好使的,可能和系统有关。百度内容如下

错误4:类型冲突

这个是翻译过来的,这个问题我到现在其实也没有解决,只是我把对应的实现给注释掉了,具体影响未知,也期待大佬评论区指点一波

报错内容如下

找遍整个项目,也只有3个地方出现,不存在冲突呀

解决这个问题,也尝试过加 extern "C",但是无解,报错依旧

错误5 assert断言错误

这个更是找不到解决方法,报错如下,都断言错误。

字面意思都是未定义,但是我真的可以向上找到定义。

所以,我理解的断言就是类似抛出异常被,所以我就不抛出了,直接注释掉。如下图所示

错误6:关于时间的错误

这个同样,我的解决方法就是注释掉使用的地方,这个应该是我没有引用到那个系统的库,应为我跳到对应的函数接口,注释都是写着如果系统不提供,就自己实现他。所以我就注释掉了,但是其实应该是有一个库可以提供这些代码的,示例如下

也是一样,循环操作,直到没有报错,如果到这里,你都解决完了,那么应该就是可以编译过了。

测试libusb

测试代码如下,其实也是就一行

 qDebug() << libusb_init(NULL);

测试结果如下

工程源码

Debian 10 下 Qt 5.12.3 使用libusb 1.0.26源码工程示例

那么我注释掉这些东西,不知道对整个库是否有印象,所以还希望大佬们在评论区指正呀。


libusb系列-004-qt下使用libusb库(代码片段)

libusb系列-004-Qt下使用libusb库文章目录libusb系列-004-Qt下使用libusb库摘要复制库到指定目录在Pro中包含库文件包含头文件多说一句关键字:Debian、Linux、Qt、libusb、源码内容背景:最近项目终于切到Linux下开发了,所以最... 查看详情

libusb系列-001-libusb简介(代码片段)

libusb系列-001-libusb简介文章目录libusb系列-001-libusb简介摘要基本信息简介支持平台官网如何使用下载神奇的1.0.9版本关键字:Debian、Linux、Qt、libusb、源码内容背景:最近项目终于切到Linux下开发了,所以最近的记录都是... 查看详情

libusb系列-003-linux下libusb源码编译(代码片段)

libusb系列-003-Linux下libusb源码编译文章目录libusb系列-003-Linux下libusb源码编译摘要源码下载及解压下载源码解压下载的源码压缩包打开终端准备编译环境安装makedh-autoreconf安装libudev-dev编译错误的教程增加执行bootstrap.sh指令再编译mak... 查看详情

libusb系列-002-windows下libusb源码编译(代码片段)

libusb系列-002-Windows下libusb源码编译文章目录libusb系列-002-Windows下libusb源码编译摘要Windows下编译libusb库下载源码进入msvc目录选择对应的项目工程编译查看编译好的库文件关键字:vs、编译、Qt、libusb、windows内容背景:最近... 查看详情

linux下使用c语言和libusb开发usbhid

玩转USB系列:Linux下使用C语言和libusb开发USBHID实验环境开发步骤安装libusb试试好用否我们来与HID设备通讯!探索、学习与注意:1.&ctx是个什么鬼2.print_devs(devs)->print_devs(&devs);3.操作端口这类程序加上sudo!4.libusb_interrupt_tran... 查看详情

linux下libusb库的安装与使用

一、下载libusb下载网址:http://www.libusb.org/这里我选择的是下载:libusb-1.0.24二、安装libusb解压后libusb-1.0.24,得到的是源代码。$tar-jxvflibusb-1.0.24.tar.bz2$cdlibusb-1.0.24$./configure--prefix=/usr/local/li 查看详情

linux下交叉编译libusb的方法及编译一个使用了libusb库的test程序的方法(代码片段)

linux交叉编译libusb的方法下载libusb下载网址:libusb-BrowseFilesatSourceForge.net交叉编译libusb将下载好的libusb压缩包解压后进入该文件执行下列指令./configure--build=i686-linux--host=arm-linux--prefix=/home/xfc/usb/installCC 查看详情

libusb系列-005-部分api简介(代码片段)

libusb系列-005-部分API简介文章目录libusb系列-005-部分API简介摘要libusb_initlibusb_open_device_with_vid_pidlibusb_kernel_driver_activelibusb_detach_kernel_driverlibusb_claim_interfacelibusb_release_interfacelibusb_attac 查看详情

linux下libusb库的安装与使用

一、下载libusb下载网址:http://www.libusb.org/这里我选择的是下载:libusb-1.0.24二、安装libusb解压后libusb-1.0.24,得到的是源代码。$tar-jxvflibusb-1.0.24.tar.bz2$cdlibusb-1.0.24$./configure--prefix=/usr/local/libusb-1.0.24$make$makeinstall三、... 查看详情

知道 USB 设备的端点

...的OUT或IN端点是什么?例如,libusb_interface_descriptor(来自libusb1.0库)的bNumEndpoints显示我的USB驱动器有3个端点,但我怎么知道它们的idnumber是多少? 查看详情

windows下qt+libusbpc程序与斑马打印机使用usb通信(代码片段)

Qt没有USB类,所以这里我决定使用第三方库libusb。1、下载libusb,下载网址:https://sourceforge.net/projects/libusb/ 2、把下载下来libusb压缩包解压,解压后有个INSTALL_WIN.txt,关于Windows环境下编译安装。  (1)我先安装了MinGW,但... 查看详情

libusb3.0

...buffer太大时,读不到数据问题? 2)linux下,usb3.0 libusb_claim_interfacefail,error=-5对于一些linux标准支持的设备(如HID设备),可能需要使用libusb_detach_kernel_driver,或libusb_set_auto_detach_kernel_driver,将kernel提供的驱动卸载掉,否... 查看详情

交叉编译ft4232eeprom开源工具libftdi记录

libftdi下载地址https://www.intra2net.com/en/developer/libftdi/download.phpLibftdi依赖libusblibconfusegettext-0.19首先安装依赖文件sudoapt-getinstalllibboost-all-dev一、交叉编译libusb1.gitclonehttps://github.com/libusb/lib 查看详情

设备在 PyUSB 上不可用

...WebUSB库找不到我的设备的见解。我用brewinstalllibusb安装了libusb1ontheMacviaHomebrew。运行lsusb-vv以获取设备详细信息。还要为PyUSB设置几个环境变量:exportPYUSB 查看详情

如何使用 libusb 和 libusb_get_device_descriptor()?

】如何使用libusb和libusb_get_device_descriptor()?【英文标题】:Howtouselibusbandlibusb_get_device_descriptor()?【发布时间】:2013-01-2105:43:51【问题描述】:我正在学习第一次在Ubuntu12.10上使用libusbv1.0.0。这是我用来尝试了解如何使用此API的一... 查看详情

libusb使用

xxx 查看详情

通过 libusb 与 USB 设备通信的蛮力方法

】通过libusb与USB设备通信的蛮力方法【英文标题】:BruteforcemethodtocommunicatewithUSBdevicevialibusb【发布时间】:2013-12-1103:16:12【问题描述】:我有一个USB设备(6个灯:2个红外灯、2个白灯、2个LED),我无法使用windows驱动程序(我也... 查看详情

在 Android 上使用 libusb 而不生根

】在Android上使用libusb而不生根【英文标题】:UsinglibusbonAndroidwithoutrooting【发布时间】:2013-04-2412:19:50【问题描述】:我正在尝试通过OTG从基于Android的智能手机与USB设备进行通信。我能够使用AndroidUSBHostAPI与我的设备进行通信。U... 查看详情