全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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年哈尔滨市香坊第二幼儿园招聘保育员1人笔试考试参考题库及答案解析
- 2025广西百色市那坡县定向招聘服务期满服务基层项目人员15人考试笔试备考试题及答案解析
- 2025年芜湖市劳动保障人力资源有限公司人才储备4人(三十)考试笔试备考题库及答案解析
- 中国石油大学(北京)油气资源与工程全国重点实验室招聘1人考试笔试模拟试题及答案解析
- 2025贵州六盘水市中医医院引进高层次人才笔试考试参考题库及答案解析
- 2025年哈尔滨道里区工程社区卫生服务中心招聘考试笔试备考题库及答案解析
- 2025湖南省兵器工业集团股份有限公司市场化选聘湖南酷睿科技有限公司总经理(职业经理人)1人考试笔试参考题库附答案解析
- 2026大理州南涧彝族自治县社会保险中心城镇公益性岗位人员招聘(2人)笔试考试备考题库及答案解析
- 2025福建福州市于山风景名胜公园管理处招聘炊事员1人笔试考试参考题库及答案解析
- 2025年天津中煤进出口有限公司招聘第五批电力人才55名考试笔试参考题库附答案解析
- 公共组织绩效评估-形考任务一(占10%)-国开(ZJ)-参考资料
- 供应商物料交付管理
- 2025安庆师范大学辅导员考试题库
- 19MW分布式光伏发电项目可行性研究报告(参考)
- 医院药房面试试题及答案
- 企业生产安全台账资料填写模板
- JJF(陕) 003-2019 砂浆稠度测定仪校准规范
- 【MOOC】工程图学-中国矿业大学 中国大学慕课MOOC答案
- DB33-T 1389-2024 树木保护性移栽技术规范
- 东北师大附属中学2025届高三物理第一学期期中教学质量检测试题含解析
- 帝国的兴衰:修昔底德战争史学习通超星期末考试答案章节答案2024年
评论
0/150
提交评论