资源简介

资源中包含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个文件信息

评论

共有 条评论