全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VC+6.0 中使用libUsb库进行Hid USB设备通讯1、首先在/wiki/libusb-win32#下载得到libusb-win32库和一些例子,插上需通讯的HID USB设备,打开下载的库,里面有个可执行文件,运行它,根据提示(注意PID和VID选好你所插的设备)生成inf文件并安装它。2、完成上一步就可以打开vc+6.0 开发应用程序和HID USB设备通讯了,注意要把与刚才生成的inf文件同文件夹下的lib文件、dll文件和usb.h文件添加到工程文件夹下,并在Project-Settings-Link下的Object/library modules中添加libusb.lib库文件,还有添加usb.h头文件。3、程序中用到的全局变量:#define MY_VID 0x8888#define MY_PID 0x0006usb_dev_handle *handle;HANDLE m_hDevice=INVALID_HANDLE_VALUE;CWinThread *m_pReadReportThread=NULL;OVERLAPPED ReadOverlapped;char ReadReportBuffer16=0;BYTE KeyStatus=0;volatile BOOL m_bReadReportRunFlag=FALSE;4、然后在OnInitDialog()下添加如下代码: struct usb_bus *busses, *bus; / usb_dev_handle *handle = NULL; /这个需定义为全局变量,在读线程中也许使用 usb_init(); usb_find_busses(); usb_find_devices(); busses = usb_get_busses(); for(bus = busses; bus; bus = bus-next) struct usb_device *dev; for(dev = bus-devices; dev; dev = dev-next) struct usb_device_descriptor *desc = &(dev-descriptor); if(desc-idVendor = 0x8888) & (desc-idProduct = 0x0006) handle = usb_open(dev); if (!handle ) MessageBox(error opening device: n%sn, usb_strerror(); return false; usb_set_configuration(handle,1); usb_claim_interface(handle,0);这是libusb的初始化代码,接下来就可以读写USB数据了。5、写数据:自己添加个按钮并生成按钮事件函数,在其中添加写USB过程WriteReportBuffer0=0x01; usb_bulk_write(handle,0x01,WriteReportBuffer,1,10);6、读数据:读USB设备需在创建一个不断读取USB数据的线程。在OnInitDialog()中添加创建线程代码:m_pReadReportThread=AfxBeginThread(ReadReportThread, this, THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED, /0, NULL); if (m_pReadReportThread=NULL) CString strLog; strLog=读报告线程创建不成功!; :AfxMessageBox(strLog); CloseHandle(m_hDevice); m_hDevice=INVALID_HANDLE_VALUE; exit(0); m_pReadReportThread-m_bAutoDelete=FALSE; m_pReadReportThread-ResumeThread(); /唤醒线程7、读线程函数也是全局函数,代码如下:UINT ReadReportThread(LPVOID lpParam) CLibUsbHidTestDlg *pDlg=(CLibUsbHidTestDlg *)lpParam; ReadOverlapped.Offset=0; ReadOverlapped.OffsetHigh=0; ReadOverlapped.hEvent=CreateEvent(NULL,TRUE,FALSE,NULL); m_bReadReportRunFlag=TRUE; while (TRUE) if (!m_bReadReportRunFlag) /Exit Thread Code if (ReadOverlapped.hEvent!=NULL) CloseHandle(ReadOverlapped.hEvent); ReadOverlapped.hEvent=NULL; return 0; ResetEvent(ReadOverlapped.hEvent); usb_bulk_read(handle, 0x81, ReadReportBuffer, sizeof(ReadReportBuffer), 100); KeyStatus=ReadReportB
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机制地毯修整工改进测试考核试卷含答案
- 松香蒸馏工岗前技术实务考核试卷含答案
- 测量与控制系统(单元)装调工岗前技术改进考核试卷含答案
- 公厕保洁员操作能力模拟考核试卷含答案
- 锅炉除灰、脱硫、脱硝设备检修工安全培训水平考核试卷含答案
- 2025河南鹤壁能源化工职业学院下半年招聘高层次人才3人备考题库附答案解析(夺冠)
- 2025福建厦门港务贸易有限公司社会招聘1人备考题库带答案解析
- 2025马鞍山宁马城际招聘车站协理员70人考试参考题库含答案解析(夺冠)
- 2024年随州市特岗教师招聘真题汇编附答案解析
- 射阳六上数学试卷及答案
- T/CAPE 11005-2023光伏电站光伏组件清洗技术规范
- 2025年云南省中考数学-26题二次函数降次幂题35道
- 中国创伤骨科患者围手术期静脉血栓栓塞症预防指南(2025)解读
- 公共组织绩效评估-形考任务一(占10%)-国开(ZJ)-参考资料
- 供应商物料交付管理
- 2025安庆师范大学辅导员考试题库
- 19MW分布式光伏发电项目可行性研究报告(参考)
- 医院药房面试试题及答案
- 企业生产安全台账资料填写模板
- JJF(陕) 003-2019 砂浆稠度测定仪校准规范
- 【MOOC】工程图学-中国矿业大学 中国大学慕课MOOC答案
评论
0/150
提交评论