11

QT上位机开发(usb设备访问)

 1 year ago
source link: https://blog.csdn.net/feixiaoxing/article/details/135588408
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        利用usb接口访问底层下位机,这是一种很常见的方式。目前比较简单的做法有两种,一种是usb转串口,另外一种是利用libusb访问下位机设备。前面一种看着是usb,其实是串口;后面一种则主要针对mcu等设备。今天,我们借着学习qt的机会,练习下如何利用libusb库进行上位机、下位机的通讯。

1、创建一个widget的qt工程

        创建的目的,主要还是构建一个qt版本,用于编译。

2、usb设备插入到pc

        一旦usb设备插入到电脑当中,我们就可以在设备管理器中发现这个设备。目前为止,因为还没有驱动和这个设备关联,所以设备显示为不可用的状态。

3、给设备安装libusb驱动

        安装驱动的方法比较简单。首先是安装zadig软件。等zadig软件安装好了之后,就可以利用zadig给usb设备安装libusb驱动。这一步非常重要,只有安装了驱动之后,后续我们开发qt上位机的时候,才能利用libusb库操作这个设备。同时,在安装的时候,注意记录一下vendor id号、product id号,编程的时候用得到。

7b9fc05b304444eeb261b8b0090f7261.png

4、安装libusb第三方库

        安装的方法,其实就是利用nuget进行安装的。选中“引用”,右击“管理NuGet程序包”,输入libusb查找即可,选择第一个选项,单击下载,

49b7bbcc1e7f430d8b8aa1fc64a0e0ea.png

5、设置include目录路径

        当前情况下,工程是找不到libusb的include地址的,需要手动添加,即,

C:\Users\feixiaoxing\Desktop\QtWidgetsApplication\packages\libusb.1.0.21\src\include

6、设置链接lib库,注意顺便加上目录

        如果缺少这个步骤,待会链接是不会通过的,

C:\Users\feixiaoxing\Desktop\QtWidgetsApplication\packages\libusb.1.0.21\lib\native\x86\libusb-1.0.lib

7、添加源代码

        整个代码倒没有想象得那么复杂。首先初始化libusb,接着打开设备,读取数据,写入数据,关闭设备,关闭libusb。注意一下,这里的读取数据和写入数据,使用的函数都是libusb_bulk_transfer,只不过两者的endpoint不一样,前者是0x81,后者是0x01。



newCodeMoreWhite.png

8、调试和测试

        调试的时候,需要提前把libusb的libusb-1.0.dll文件,拷贝到exe的目录下面。不然没有办法启动和调试exe。另外在调试过程中,可以结合mcu上面的串口打印一起调试,这样效果会更好一点,效率也会更高一点。


Recommend

  • 7
    • maskray.me 4 years ago
    • Cache

    用udev自动挂载usb设备

    用udev自动挂载usb设备 前几天看了 udev 的介绍,今天正好 #ubuntu-cn@freenode 里有人问,就把这个老大难问题解决掉了。 代码如下: KERNEL!="sd[b-z]?", GOTO="automount_ex...

  • 10

    把USB设备穿透给虚拟机里的系统 最近买了一个NUC8,i5版本,因为听说好装黑苹果,买来之后,看到这么小一个电脑,真的是感叹科技进步速度之快。不过我并不喜欢 双系统,也不喜欢macOS,我已经用Linux桌面+Windows虚拟机这套组合8年了,一切都是得心应...

  • 5

    本文讲述如何配置树莓派(或其他 Linux 机器),使其在检测到指定 USB 设备插入后,通过网络共享该 USB 设备。 应用场景实例 可以解决以下场景之需求: 多个人需要调试开发板,但是串口线只有一个,来回插拔串口线麻...

  • 7

    UEFI开发探索88- YIE002USB开发板(11 UEFI下访问HID设备) 请保留-> 【原文:  https://blog.csdn.net/luobing4365 和 http://yiiyee.cn/blog...

  • 0

    嵌入式设备应用开发(上位机配合)

  • 10

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         c# wpf如果是用来开发非标上位机的,那么和plc的通信肯定是少不了的。而且,大部分plc都支持modbus协议,所以这个时候如果有一个库可以帮助我们和plc设备进行mod...

  • 3

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         目前很多嵌入式设备都支持usb访问,特别是很多mcu都支持高速usb访问。和232、485下个比较,usb的访问速度和它们基本不在一个数量级上面。因此,使用usb进行上位...

  • 6

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         前面我们学习了数据库sqlite,不过这是一种小型的数据库,作为内部使用还可以。但是,如果要与外面的其他供应商进行联调的话,最好还是采用sql server、oracle、...

  • 6

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         plc是工控领域很重要的一个器件。简单的plc一般就是对io进行控制...

  • 3
    • blog.csdn.net 1 year ago
    • Cache

    QT上位机开发(MySql访问)

    QT上位机开发(MySql访问)

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK