记录:USB_HID上位机与下位机开发

1 篇文章 0 订阅
1 篇文章 0 订阅

(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的开发。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值