【Qt项目】USBHID:读取数据
来源:互联网 发布:人工智能入门书籍 编辑:程序博客网 时间:2024/06/08 06:33
date:2017/04/12 11:10
调用HIDAPI可实现读数据功能,但是功能十分单一,无法满足需求。
最简单的调用如下:
1 void Widget::myhid_read(){2 res = hid_read(handle,buf_IN,2);3 for(int i = 0;i < 2;i++){4 qDebug("buf[%d]:0x%02x",i,buf_IN[i]);5 } 6 }
使用按钮click()操作调用该方法:
1 void Widget::on_readButton_clicked()2 {3 qDebug("read data.");4 myhid_read();5 }
但是使用的时候发现,每次点击read按钮运行一次myhid_read(),输出一个包的数据。hid设备产生了多少个数据包就要点多少次按钮才能全部接收。因此需要对它进行改造。
1 void Widget::myhid_read(){ 2 qDebug("hid read start"); 3 res = hid_set_nonblocking(handle, 0); 4 5 while (1) { 6 res = hid_read(handle,buf_IN,2); 7 for(int i = 0;i < 2;i++){ 8 qDebug("buf[%d]:0x%02x",i,buf_IN[i]); 9 } 10 }11 }
这里第3行设置接收为阻塞式,HIDAPI文档说明如下:
/** @brief Set the device handle to be non-blocking. In non-blocking mode calls to hid_read() will return immediately with a value of 0 if there is no data to be read. In blocking mode, hid_read() will wait (block) until there is data to read before returning. Nonblocking can be turned on and off at any time. @ingroup API @param device A device handle returned from hid_open(). @param nonblock enable or not the nonblocking reads - 1 to enable nonblocking - 0 to disable nonblocking. @returns This function returns 0 on success and -1 on error. */
HIDAPI提供两种读设备的方式,阻塞和非阻塞。阻塞是指在进入读设备函数后,直到有数据被读取才退出,而非阻塞则不等待数据的到来,没有数据则返回0
设置阻塞后,点击read按钮,开始循环接收数据。但是未设置终止标志,即启动接收后软件一直等待接收数据直到退出软件。
现考虑:
1、提取报文数据总长度做判断量,接收包数与总包数相等则退出;
2、设置数据结束符,接收到特定结束符则退出接收。
0 0
- 【Qt项目】USBHID:读取数据
- CPP VS08 usbhid 数据解析
- QT串口读取数据
- 浅析usbhid驱动如何源源不断的获取usb鼠标数据
- Qt读取JSON和XML数据
- Qt读取JSON和XML数据
- QT快速读取显示SQLite3数据库数据
- QT下GPS数据读取与处理!!!
- Qt 从csv文件中读取数据
- Qt读取/写入Excel数据--QAxObject
- 如何在QT中读取串口数据
- Qt实现读取显示obj文件——读取数据
- qt数据写入文件和读取文件里的数据
- 【drp项目】——读取xml数据
- Qt从网络读取数据写入本地二进制文件
- QT从Listwidget中逐行读取数据到文本中
- 基于Qt ECG 心电数据的读取!
- 使用Qt从excel读取数据至数据库
- 【Qt项目】串口通信:PLC对LPC的音量控制
- plsql程序设计详解(一)
- Android查看某个App功能是Native实现还是Webview实现
- 建站技巧:WordPress报错 Error500:“WordPress Internal Server Error”
- Qt技巧:获取QTextEdit文本内容
- 【Qt项目】USBHID:读取数据
- DOM Element类节点
- Qt技巧:加载第三方API
- Qt技巧:Error LNK2019解决办法
- 回流(reflow)与重绘(repaint)
- Redis一致性hash(php版)
- apache和nginx开启https
- javaee中servlet-jar中类找不到
- CSS中选择器的优先级