資源簡(jiǎn)介
資源中包含USB通訊類(lèi),Win32測(cè)試程序,以及MFC界面測(cè)試程序,使用簡(jiǎn)單,vs2015開(kāi)發(fā)

代碼片段和文件信息
#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);//???倒數(shù)第二個(gè)參數(shù)可以指定為異步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設(shè)備句柄存入類(lèi)成員變量
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“數(shù)據(jù)寫(xiě)入失敗““失敗!“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;??//第一個(gè)字節(jié)為report?Id不能省略
memcpy(m_rBuffer?+?1?lpBuffer?min(20?dwSize));
//這里寫(xiě)的長(zhǎng)度要大于Capabilities.OutputReportByteLength
bRet?=?WriteFile(m_handle?m_rBuffer?Capabilities.OutputReportByteLength?&dwRet?NULL);
if?(bRet)
{
//MessageBox(NULL“寫(xiě)入數(shù)據(jù)成功““成功!“MB_OK);
}
return?bRet;
}
void?CommUsb::Devi
?屬性????????????大小?????日期????時(shí)間???名稱(chēng)
-----------?---------??----------?-----??----
?????文件???????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個(gè)文件信息
評(píng)論
共有 條評(píng)論