资源简介
资源中包含USB通讯类,Win32测试程序,以及MFC界面测试程序,使用简单,vs2015开发
代码片段和文件信息
#include “CommUsb.h“
#include
CommUsb::CommUsb()
{
m_rBuffer[64] = { 0 };
m_handle = NULL;
m_size = 0;
m_dwResult = 0;
}
CommUsb::~CommUsb()
{
}
void CommUsb::ReadThread(CommUsb *usb)
{
ReadFile(usb->m_handle usb->m_rBuffer usb->m_size &usb->m_dwResult NULL);
}
BOOL CommUsb::DeviceOpen(HANDLE&handle WORD wVID WORD wPID)
{
BOOL bRet = FALSE;
GUID hidGuid;
HDEVINFO hardwareDeviceInfo;
SP_INTERFACE_DEVICE_DATA deviceInfoData;
PSP_INTERFACE_DEVICE_DETAIL_DATA functionClassDeviceData = NULL;
ULONG predictedLength = 0;
ULONG requiredLength = 0;
CloseHandle(handle);
handle = INVALID_HANDLE_VALUE;
deviceInfoData.cbSize = sizeof(SP_INTERFACE_DEVICE_DATA);
HidD_GetHidGuid(&hidGuid);
hardwareDeviceInfo = SetupDiGetClassDevs(&hidGuid NULL NULL (DIGCF_PRESENT | DIGCF_DEVICEINTERFACE));
for (int i = 0; i < 128; i++)
{
if (!SetupDiEnumDeviceInterfaces(hardwareDeviceInfo 0 &hidGuid i &deviceInfoData)) continue;
SetupDiGetDeviceInterfaceDetail(hardwareDeviceInfo &deviceInfoData NULL 0 &requiredLength NULL);
predictedLength = requiredLength;
functionClassDeviceData = (PSP_INTERFACE_DEVICE_DETAIL_DATA)malloc(predictedLength);
if (!functionClassDeviceData) continue;
functionClassDeviceData->cbSize = sizeof(SP_INTERFACE_DEVICE_DETAIL_DATA);
if (!SetupDiGetDeviceInterfaceDetail(hardwareDeviceInfo &deviceInfoData functionClassDeviceData predictedLength &requiredLength NULL)) break;
handle = CreateFile(functionClassDeviceData->DevicePath GENERIC_READ | GENERIC_WRITE 0 NULL OPEN_EXISTING 0 NULL);// 倒数第二个参数可以指定为异步FILE_FLAG_OVERLAPPED 0为同步
// cout <<“devicePath“<DevicePath< if (handle != INVALID_HANDLE_VALUE)
{
HIDD_ATTRIBUTES attri;
HidD_GetAttributes(handle &attri);
if ((attri.VendorID == wVID) && (attri.ProductID == wPID))
{
m_handle = handle; //将USB设备句柄存入类成员变量
bRet = TRUE;
break;
}
CloseHandle(handle);
handle = INVALID_HANDLE_VALUE;
}
}
SetupDiDestroyDeviceInfoList(hardwareDeviceInfo);
return bRet;
}
void CommUsb::DeviceClose()
{
CloseHandle(m_handle);
m_handle = INVALID_HANDLE_VALUE;
}
BOOL CommUsb::DeviceWrite(LPCVOID lpBuffer DWORD dwSize)
{
if (m_handle == INVALID_HANDLE_VALUE)
{
//MessageBox(NULL“数据写入失败““失败!“MB_OK);
return 0;
}
DWORD dwRet;
BOOL bRet;
PHIDP_PREPARSED_DATA PreparsedData;
HIDP_CAPS Capabilities;
HidD_GetPreparsedData(m_handle &PreparsedData);
HidP_GetCaps(PreparsedData &Capabilities);
m_rBuffer[0] = 0x00; //第一个字节为report Id不能省略
memcpy(m_rBuffer + 1 lpBuffer min(20 dwSize));
//这里写的长度要大于Capabilities.OutputReportByteLength
bRet = WriteFile(m_handle m_rBuffer Capabilities.OutputReportByteLength &dwRet NULL);
if (bRet)
{
//MessageBox(NULL“写入数据成功““成功!“MB_OK);
}
return bRet;
}
void CommUsb::Devi
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3820 2020-08-20 17:54 Project1\common\CommUsb.cpp
文件 735 2020-08-20 17:39 Project1\common\CommUsb.h
文件 61440 2020-08-20 17:59 Project1\Debug\Project1.exe
文件 238080 2020-08-21 11:47 Project1\Debug\USBMfcTest.exe
文件 748 2020-08-20 17:59 Project1\Project1\main.cpp
文件 6168 2020-08-19 17:00 Project1\Project1\Project1.vcxproj
文件 1176 2020-08-19 17:00 Project1\Project1\Project1.vcxproj.filters
文件 165 2020-08-18 17:27 Project1\Project1\Project1.vcxproj.user
文件 5076 2020-08-18 19:28 Project1\Project1\USBTest.cpp
文件 2067 2020-08-19 16:58 Project1\Project1.sln
文件 4093 2020-08-19 16:45 Project1\USBMfcTest\ReadMe.txt
文件 67777 2015-09-20 17:20 Project1\USBMfcTest\res\USBMfcTest.ico
文件 676 2020-08-19 16:45 Project1\USBMfcTest\res\USBMfcTest.rc2
文件 2066 2020-08-20 10:15 Project1\USBMfcTest\resource.h
文件 143 2020-08-19 16:45 Project1\USBMfcTest\stdafx.cpp
文件 1578 2020-08-19 16:45 Project1\USBMfcTest\stdafx.h
文件 240 2020-08-19 16:45 Project1\USBMfcTest\targetver.h
文件 109684 2020-08-21 11:45 Project1\USBMfcTest\USBMfcTest.aps
文件 2472 2020-08-19 16:45 Project1\USBMfcTest\USBMfcTest.cpp
文件 467 2020-08-19 16:45 Project1\USBMfcTest\USBMfcTest.h
文件 12112 2020-08-21 11:45 Project1\USBMfcTest\USBMfcTest.rc
文件 10779 2020-08-20 09:18 Project1\USBMfcTest\USBMfcTest.vcxproj
文件 2276 2020-08-19 17:02 Project1\USBMfcTest\USBMfcTest.vcxproj.filters
文件 165 2020-08-19 17:04 Project1\USBMfcTest\USBMfcTest.vcxproj.user
文件 6611 2020-08-21 11:47 Project1\USBMfcTest\USBMfcTestDlg.cpp
文件 1081 2020-08-20 14:02 Project1\USBMfcTest\USBMfcTestDlg.h
目录 0 2020-08-21 11:50 Project1\USBMfcTest\res
目录 0 2020-08-21 11:50 Project1\common
目录 0 2020-08-21 11:51 Project1\Debug
目录 0 2020-08-21 11:51 Project1\Project1
............此处省略5个文件信息
- 上一篇:Qt/C++ 网站爬虫源码
- 下一篇:2018华师计算机专硕918完整版.pdf
相关资源
- tcp udp 底层c++封装类windows和linux
- VFW(Video for Windows) for Delphi
- platformSDK
- windows下c实现telnet代码
- Windows下配置python_pcl全套资料
- OpenKE在windows环境下运行的C++动态链接
- C++编写windows服务程序
- 创建Windows系统服务demo2(c++版)
- 获取WINDOWS是否登录及登录用户名支持
- 纸牌 windows 纸牌
- windows下 c++实现ping地址源码两种
- MFC实现类似Windows绘图的文字输入功能
- windows下C++实现的HTTP web 服务器
- 五子棋AI代码 启发式搜索+算杀 内置禁
- Windows内存清理工具实现含源码及程序
- Windows MFC排序演示过程
- 自己写的一个MFC画线程序,可以设置
- WindowsVC++获取CPU整体使用率
- Windows下C语言实现文件、文件夹的复制
- C和C++ Windows代码移植到Linux
- Windows下Socket文件数据传输
- 基于Windows Socket的安全通信(C++实现)
- VS2013 CLR Windows窗体应用程序补丁
- MFC通过windowsAPI控制计算机关机,注销
- windows 64位redis2.6 API C++库和头文件
- SDK入门(用C和C++来调用WindowsAPI)
- WindowsCE或WM上C++加载显示GIF动画的程序
- VC6.0下开发的仿windows记事本-达尔魔记
- microphone.zip
- C语言windows库函数
评论
共有 条评论