资源简介
资源中包含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
相关资源
- Qt5串口通信-windows
- 新编Windows API参考大全.doc
- windows hook 框架(detours )
- windows网络编程_文件传输
- Windows扩展命令程序(源码)
- LabwindowsCVI 串口编程及事例.docx
- Windows_API_函数大全 C/C++
- VC源码获取WINDOWS系统所有的用户密码
- c语言 Windows_程序设计_第五版
- windows下的ffmpeg、MFC制作的播放器
- 逐梦旅程 Windows游戏编程之从零开始
- 使用socket套接字发送udp数据包
- plist 文件文本二进制互转
- Windows游戏编程大师技巧(CHM)
- Windows+C语言构建网络聊天室内含源程
- c++ 帮助手册 chm
- Hoo WinTail 最新版本(v4.2.982)破解补丁
-
C++调用Windows MediaPla
yer实现的多媒体 - WIndow下使用QT C++开发生成带Logo的二维
- winTC(windows下的c语言编译器
- php-cpp项目移值到windows的vs2017解决方案
- Programming Windows with MFC随书光盘源代码
- 精通Windows.API-函数、接口、编程(光
- C语言网页爬虫(附编译好的windows版)
- MFC与Windows编程MFC与Windows编程
- windows系统版本及OFFICE版本获取
- MinGW Windows 下gnu C/C++编译器
- 超级玛丽c++代码(经典小游戏)
- C++消消乐小游戏 windows程序设计课程设
- Windows下基于ModbusTcp的Server端开发C语言
评论
共有 条评论