(1)USB_HID上位机开发
Qt hidapi的获取和添加教程可以看看大佬的文章:Qt USB HID通讯_qt usb通讯_@Turbo@的博客-CSDN博客
前言
记录一下进入新公司后做的第一个项目
提示:以下是本篇文章正文内容,下面案例可供参考
一、使用QT开发USB_HID配套上位机
开源版QT下载链接:Download Qt OSS: Get Qt Online Installer,后续更新当QT启动时提示缺少QT5Core.dll的解决办法
二、流程步骤
1.在xxx.pro文件中引入库
LIBS += -L$$PWD/hidapi-win/x64/ -lhidapi
2.打开与读写USB设备
(1)在头文件中(此处拟定为usb.h)添加如下内容:
#include <hidapi-win/include/hidapi.h>
#define BUFFER_SIZE 64
hid_device *hid_handler = nullptr;
hid_device_info *hid_info = nullptr;
unsigned char BUFFER[BUFFER_SIZE];
(2)打开USB设备:
bool USB::USB_OPEN()
{
hid_info = hid_enumerate(0x2F81,0x5721);//枚举设备,以获得USB设备ID或设备路径
hid_init();//初始化USB设备
hid_handler = hid_open_path(hid_info->path);//根据设备路径打开USB设备
hid_free_enumration();//释放枚举所用到的USB设备链表
hid_set_nonblocking(hid_handler,1);//设备USB设备的阻塞状态,0 - 阻塞,1 - feizus
}
(3)读取USB设备中的数据
void USB::Read_Message()
{
QString str;
//1、该函数中读取数据的长度应于下位机发送数据长度保持一致,或者说与OUTReport的长度一致
//2、也可以使用hid_read(hid_handler,BUFFER)函数读取数据
hid_read_time(hid_handler,BUFFER,64,1);
for(int i = 0;i < 64; i++){
str += tr("%1").arg(BUFFER[i]);
}
qDebug()<<str;
str.clear();
}
(4)向USB设备中写入数据
//此处仅为测试时使用的,data中的数据可根据需求更改
void USB::WriteMessage()
{
QString str;
unsigned char data[64];
data[0] = 0x00;
for(int i = 0; i < 63;i ++){
data[1 + i] = 0x01;
}
hid_write(hid_handler,(unsigned char *)data,sizeof(data));
for(int i = 0; i < 64;i++){
str += tr("%1").arg(data[i]);
}
qDebug()<<str;
}
(5)关闭USB设备
void USB::close()
{
hid_free_enumeration(hid_info);
hid_close(hid_handler);
}
总结
本文仅仅简单介绍了QT下USB_HID的开发,后续更新MM32 USB的开发。