编码检测USB设备

[复制链接]
927|10
 楼主| chenjunt 发表于 2018-8-9 17:19 | 显示全部楼层 |阅读模式
我在编码检测USB设备的时候遇到一个问题,一直解决不了。待检测的USB设备是自行设计的,可以正常工作。
supernan 发表于 2018-8-9 17:22 | 显示全部楼层
楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因
 楼主| chenjunt 发表于 2018-8-9 17:24 | 显示全部楼层

在程序中,我用OnUSBChange(WPARAM wParam, LPARAM lParam)函数响应WM_DEVICECHANGE消息。为了简单起见,我将代码简化如下:

LRESULT CMainFrame::OnUSBChange(WPARAM wParam, LPARAM lParam)
{
DEV_BROADCAST_HDR *pDEV = (DEV_BROADCAST_HDR*)lParam;

if (wParam == DBT_DEVICEARRIVAL)
{
AfxMessageBox("OK");
}

if (wParam == DBT_DEVICEREMOVECOMPLETE)
{
AfxMessageBox("NO");
}

  return CWnd::OnDeviceChange(wParam, lParam);
}

由于担心没有注册消息,我又添加了函数RegisterForDevChange(HWND hDlg, PVOID *hNotifyDevNode),代码如下

void CMainFrame::RegisterForDevChange(HWND hDlg, PVOID *hNotifyDevNode)
{
   DEV_BROADCAST_DEVICEINTERFACE *pFilterData =  
(DEV_BROADCAST_DEVICEINTERFACE*)  
_alloca(sizeof(DEV_BROADCAST_DEVICEINTERFACE));
   ASSERT (pFilterData);

UUID GUID_CLASS_INPUT;
UuidFromString((unsigned char*)"36FC9E60-C465-11CF-8056-444553540000", &GUID_CLASS_INPUT);

  ZeroMemory(pFilterData, sizeof(DEV_BROADCAST_DEVICEINTERFACE));

  pFilterData->dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE);
   pFilterData->dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
   pFilterData->dbcc_classguid = GUID_CLASS_INPUT;  

  *hNotifyDevNode = RegisterDeviceNotification(hDlg, pFilterData, DEVICE_NOTIFY_WINDOW_HANDLE);
}
 楼主| chenjunt 发表于 2018-8-9 17:27 | 显示全部楼层
这个函数在窗体创建时调用。

按照我的设想,在我的USB设备拔插的时候应该有WM_DEVICECHANGE消息,触发响应函数,而函数的参数wParam应该是DBT_DEVICEARRIVAL或者DBT_DEVICEREMOVECOMPLETE。

但实际测试时,我发现WM_DEIVCECHANGE消息始终能发出,函数能正确响应,可wParam的值始终为7,不是我们需要的值。
supernan 发表于 2018-8-9 17:29 | 显示全部楼层
程序不变拿U盘和移动硬盘作了测试,能正确获取DBT_DEVICEARRIVAL或者DBT_DEVICEREMOVECOMPLETE吗?
 楼主| chenjunt 发表于 2018-8-9 17:32 | 显示全部楼层
可以正确获取
houcs 发表于 2018-8-9 17:35 | 显示全部楼层
如果标准USB设备能正常说明你的程序没问题。
yinxiangh 发表于 2018-8-9 17:39 | 显示全部楼层
是不是你自己的USB设备驱动做的不标准?
ousj 发表于 2018-8-9 17:41 | 显示全部楼层

因为那个USB类无法在我前面提到的设备上应用,所以只能自己想办法解决。
zyf部长 发表于 2018-8-9 17:44 | 显示全部楼层
做上位机就是这么郁闷,下位机不对出相应的接口,会把你累死。
 楼主| chenjunt 发表于 2018-8-9 17:47 | 显示全部楼层
呵呵,感同身受啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

718

主题

7868

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部