编写在USB接口读写数据的C++程序

编写在USB接口读写数据的C++程序

ID:47332296

大小:39.50 KB

页数:10页

时间:2019-08-15

编写在USB接口读写数据的C++程序_第1页
编写在USB接口读写数据的C++程序_第2页
编写在USB接口读写数据的C++程序_第3页
编写在USB接口读写数据的C++程序_第4页
编写在USB接口读写数据的C++程序_第5页
资源描述:

《编写在USB接口读写数据的C++程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、使用一个GUIDguidHID_1查找并打开一个USB设备extern"C"intPASCALSearchUSBDevice(){HANDLEhUsb;intnCount,i,j;//标记同一设备个数HDEVINFOhDevInfoSet;BOOLbResult;PSP_DEVICE_INTERFACE_DETAIL_DATApDetail=NULL;memset(m_sysversion,0,20);GetSysVersion(m_sysversion);//检索相关GUID的USB设备总设备个数if(!GetUSBList()){return0;}//取得一个该GUID相关

2、的设备信息集句柄hDevInfoSet=::SetupDiGetClassDevs((LPGUID)&guidHID_1,//GUID_CLASS_USB_DEVICE,//classGUIDNULL,//无关键字NULL,//不指定父窗口句柄DIGCF_PRESENT

3、DIGCF_DEVICEINTERFACE);//目前存在的设备//失败...if(hDevInfoSet==INVALID_HANDLE_VALUE){returnNULL;}//申请设备接口数据空间nCount=0;bResult=TRUE;for(i=0;i<34;i++){bDeviceOpen[i]=

4、FALSE;memset(m_DeviceDesc[i],0,256);}SP_DEVICE_INTERFACE_DATAifdata;//设备序号=0,1,2...逐一测试设备接口,到失败为止while(bResult){ifdata.cbSize=sizeof(ifdata);//枚举符合该GUID的设备接口bResult=::SetupDiEnumDeviceInterfaces(hDevInfoSet,//设备信息集句柄NULL,//不需额外的设备描述(LPGUID)&guidHID_1,//GUID_CLASS_USB_DEVICE,//GUID(ULONG)nCou

5、nt,//设备信息集里的设备序号&ifdata);//设备接口信息if(bResult){ULONGpredictedLength=0;ULONGrequiredLength=0;//取得该设备接口的细节(设备路径)bResult=SetupDiGetInterfaceDeviceDetail(hDevInfoSet,//设备信息集句柄&ifdata,//设备接口信息NULL,//设备接口细节(设备路径)0,//输出缓冲区大小&requiredLength,//不需计算输出缓冲区大小(直接用设定值)NULL);//不需额外的设备描述//取得该设备接口的细节(设备路径)predi

6、ctedLength=requiredLength;//if(pDetail)//{//pDetail=NULL;//}pDetail=(PSP_INTERFACE_DEVICE_DETAIL_DATA)::GlobalAlloc(LMEM_ZEROINIT,predictedLength);pDetail->cbSize=sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);bResult=SetupDiGetInterfaceDeviceDetail(hDevInfoSet,//设备信息集句柄&ifdata,//设备接口信息pDetail,//设备

7、接口细节(设备路径)predictedLength,//输出缓冲区大小&requiredLength,//不需计算输出缓冲区大小(直接用设定值)NULL);//不需额外的设备描述if(bResult){//复制设备路径到输出缓冲区//::strcpy(pszDevicePath[nCount],pDetail->DevicePath);if(strcmp(m_sysversion,"winnt")==0){charch[18];for(i=0;i<17;i++){ch[i]=*(pDetail->DevicePath+8+i);}ch[17]='';if(strcmp(ch

8、,"vid_0471&pid_0666")==0)//比较版本号,防止意外出错{memset(&READ_OS,0,sizeof(OVERLAPPED));memset(&WRITE_OS,0,sizeof(OVERLAPPED));READ_OS.hEvent=CreateEvent(NULL,//nosecurityTRUE,//explicitresetreqFALSE,//initialeventresetNULL);//nonameif(READ_OS.hEvent==NULL){

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。