精华内容
下载资源
问答
  • vc检测usb设备的拔插状态

    千次阅读 2017-02-21 14:00:02
    检测USB设备的拔插信息 1.在BOOL CUsbHid123Dlg::OnInitDialog(){}中注册设备 DEV_BROADCAST_DEVICEINTERFACE DevInt; memset(&DevInt,0,sizeof(DEV_BROADCAST_DEVICEINTERFACE)); DevInt.dbcc_size = sizeof...

    检测USB设备的拔插信息

    1.在BOOL CUsbHid123Dlg::OnInitDialog(){}中注册设备

    DEV_BROADCAST_DEVICEINTERFACE DevInt;
    memset(&DevInt,0,sizeof(DEV_BROADCAST_DEVICEINTERFACE));
    DevInt.dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE);
    DevInt.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
    DevInt.dbcc_classguid = USB;//usb设备的GUID
    RegisterDeviceNotification(this->m_hWnd,&DevInt, DEVICE_NOTIFY_ALL_INTERFACE_CLASSES);

    2.BOOL CUsbHid123Dlg::OnDeviceChange(UINT nEventType, DWORD dwData)
    {

    DEV_BROADCAST_DEVICEINTERFACE* dbd = (DEV_BROADCAST_DEVICEINTERFACE*) dwData;
    PDEV_BROADCAST_HDR devHdr= (PDEV_BROADCAST_HDR)dwData;
    PDEV_BROADCAST_DEVICEINTERFACE devInterface=(PDEV_BROADCAST_DEVICEINTERFACE)devHdr;


    switch(nEventType)
    {
    case DBT_DEVICEARRIVAL:

    if (devHdr->dbch_devicetype == DBT_DEVTYP_DEVICEINTERFACE)
    {
    //MessageBox("1");
    GetDlgItem(IDC_REV)->SetWindowText("USB设备已连接");

    }
    break;


    case DBT_DEVICEREMOVECOMPLETE:
    GetDlgItem(IDC_REV)->SetWindowText("USB设备已移除");
    break;


    default:
    break;


    }
    return TRUE;


    }

    展开全文
  • VC++实现USB 硬盘等硬件插拔检测

    千次阅读 2017-02-28 14:52:59
    首先捕捉WM_DEVICECHANGE消息,该消息在usb插拔时均有触发。 MFC下  添加消息处理函数afx_msg BOOL OnDeviceChange( UINT nEventType, DWORD dwData ); 添加消息映射BEGIN_MESSAGE_MAP() ... ON_WM_...


    首先捕捉WM_DEVICECHANGE消息,该消息在usb插拔时均有触发。

    MFC下  

    添加消息处理函数afx_msg BOOL OnDeviceChange( UINT nEventType, DWORD dwData );

    添加消息映射BEGIN_MESSAGE_MAP()

    ...

    ON_WM_DEVICECHANGE()

    END_MESSAGE_MAP()

    Win32 在消息回调处理即可


    MFC下  nEventType 在没有注册设备的情况下均为7,无法区分,需要设备GUID去注册,方法如下:

    USB Raw Device/USB设备

    {a5dcbf10-6530-11d2   -901f-00c04fb951ed}

    Disk Device/磁盘设备

    {53f56307-b6bf-11d0   -94f2-00a0c91efb8b}

    Network Card/网卡

    {ad498944-762f-11d0   -8dcb-00c04fc3358c}

    Human Interface Device (HID)/人机界面设备

    {4d1e55b2-f16f-11cf    -88cb-001111000030}

    Palm/手持设备

    {784126bf-4190-11d4   - b5c2-00c04f687a67}


    HDEVNOTIFY hDevNotify;
    DEV_BROADCAST_DEVICEINTERFACE NotificationFilter;
    ZeroMemory( &NotificationFilter, sizeof(NotificationFilter) );
    NotificationFilter.dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE);
    NotificationFilter.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;

    for(int i=0; i<sizeof(GUID_DEVINTERFACE_LIST)/sizeof(GUID); i++) 
    {
    NotificationFilter.dbcc_classguid = GUID_DEVINTERFACE_LIST[i];
    hDevNotify = RegisterDeviceNotification(this->GetSafeHwnd(), &NotificationFilter, DEVICE_NOTIFY_WINDOW_HANDLE);
    if( !hDevNotify ) 
    {
    return FALSE;
    }
    }

    注册代码请在程序初始化时进行,如MFC的OnInitDialog

    在消息响应中
    switch(nEventType)
    {
    case DBT_DEVICEARRIVAL://设备可用
    {
    // PDEV_BROADCAST_DEVICEINTERFACE
    if(lpdb->dbch_devicetype==DBT_DEVTYP_VOLUME)
    {

    PDEV_BROADCAST_VOLUME lpdbv =  (PDEV_BROADCAST_VOLUME)lpdb;
    switch(lpdbv->dbcv_flags)
    {
    dosomething
    }
    }
    else if( lpdb->dbch_devicetype==DBT_DEVTYP_DEVICEINTERFACE
    {
    }
    else
    {
    }
    }
    以上方法较为复杂,需要处理 DBT_DEVTYP_VOLUMEDBT_DEVTYP_DEVICEINTERFACE等,现提供一种简单的方法,在DBT_DEVICEARRIVAL有新设备进入时,通过遍历硬件设备变相处理:


    1. //以找usb设备为例,取得的usb盘符放在UsbRoot里面,len为UsbRoot字符数组的长度  
    2. BOOL GetUsbRoot(CHAR* UsbRoot,SHORT len)  
    3. {  
    4. DWORD dwDriveStrLen = 0;  
    5. CHAR *pDriveName = NULL;  
    6. UINT Drive = 0;  
    7. if (UsbRoot == NULL || len <= 0)  
    8. {  
    9. return FALSE;  
    10. }  
    11. dwDriveStrLen = ::GetLogicalDriveStrings(0,NULL);//取得你计算机上盘符数目  
    12. if (0 == dwDriveStrLen)  
    13. {  
    14. return FALSE;  
    15. }  
    16. CHAR *szDriveNameBuff = (CHAR*)malloc(dwDriveStrLen);//根据你机器上的磁盘数目分配内存  
    17. if (NULL == szDriveNameBuff)  
    18. {  
    19. return FALSE;  
    20. }  
    21. memset(szDriveNameBuff,0,sizeof(szDriveNameBuff));  
    22. ::GetLogicalDriveStrings(dwDriveStrLen,szDriveNameBuff);//取得你计算机上所有盘符  
    23. pDriveName = szDriveNameBuff;  
    24. while (*pDriveName != NULL)//遍历所有盘符,找到你需要的设备  
    25. {  
    26. Drive = ::GetDriveType(pDriveName);  
    27. switch (Drive)  
    28. {  
    29. case DRIVE_UNKNOWN://未知设备  
    30. break;  
    31. case DRIVE_NO_ROOT_DIR:  
    32. break;  
    33. case DRIVE_REMOVABLE://usb设备  
    34. //如果为usb,在这里进行相关处理  
    35. //break;  
    36. case DRIVE_FIXED://硬盘  
    37. break;  
    38. case DRIVE_REMOTE://网络硬盘,如:局域网服务器上的盘  
    39. break;  
    40. case DRIVE_CDROM://光驱  
    41. break;  
    42. case DRIVE_RAMDISK://RAM 盘  
    43. break;  
    44. default:  
    45. break;  
    46. }  
    47. pDriveName += strlen(pDriveName) + 1;  
    48. }  
    49. if (szDriveNameBuff != NULL)  
    50. {  
    51. free(szDriveNameBuff);  
    52. szDriveNameBuff = NULL;  
    53. }  
    54. return FALSE;  
    55. }  
    在遍历到你关心的部分时,做逻辑处理即可
    展开全文
  • USB HID学习:MFC检测USB拔插事件

    千次阅读 2020-02-11 23:26:10
    MFC具备检测设备的消息,但需要手动添加。针对USB设备,需要注册对应的GUID方可。本文对此进行简单记录。 本省略对MFC机制的描述,仅描述主要的模块代码。

    MFC具备检测设备的消息,但需要手动添加。针对USB设备,需要注册对应的GUID方可。本文对此进行简单记录。
    本省略对MFC机制的描述,仅描述主要的模块代码。

    一、步骤

    Dbt.h头文件引用

    在stdafx.h(或有关的头文件)添加Dbt.h头文件的引用:

    #include <Dbt.h>
    

    注册USB设备GUID

    在对话框初始化函数中注册:

    BOOL CFooDlg::OnInitDialog()
    {
        CDialogEx::OnInitDialog();
    
        // 将“关于...”菜单项添加到系统菜单中。
    
        // ...
    
        // 注册HID事件
        DEV_BROADCAST_DEVICEINTERFACE DevBroadcastDeviceInterface;
    
        memset(&DevBroadcastDeviceInterface, 0, sizeof(DEV_BROADCAST_DEVICEINTERFACE));
        DevBroadcastDeviceInterface.dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE);
        DevBroadcastDeviceInterface.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
        // HID设备的GUID,可在设备管理器中查询,经查结果如下:
        // {745a17a0-74d3-11d0-b6fe-00a0c90f57da}
        // 注:使用真实的HID的GUID,反正检测不出来,如果是其它的GUID,所有USB事件都能检测出
        const GUID GUID_DEVINTERFACE_LIST[] = {
            { 0xA5DCBF10, 0x6530, 0x11D2,{ 0x90, 0x1F, 0x00, 0xC0, 0x4F, 0xB9, 0x51, 0xED } }, // USB设备
            { 0x53f56307, 0xb6bf, 0x11d0,{ 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b } }, // 磁盘(U盘)
            { 0x4D1E55B2, 0xF16F, 0x11CF,{ 0x88, 0xCB, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30 } }, // HID
            { 0x745A17A0, 0x74D3, 0x11D0,{ 0xB6, 0xFE, 0x00, 0xA0, 0xC9, 0x0F, 0x57, 0xDA } }, // 另一个HID
            { 0xad498944, 0x762f, 0x11d0,{ 0x8d, 0xcb, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c } } }; // 网卡
        // 可以循环注册所有列出的GUID,此处只使用一种
        DevBroadcastDeviceInterface.dbcc_classguid = GUID_DEVINTERFACE_LIST[2];
    
        RegisterDeviceNotification(this->GetSafeHwnd(), &DevBroadcastDeviceInterface, DEVICE_NOTIFY_WINDOW_HANDLE);
    
    }
    

    说明1:不同的USB设备使用不同的GUID表示。在注册时需要指定要检测哪一类,本文针对HID,有兴趣者可使用其它来测试。
    说明2:笔者使用的键盘有多个USB设备,其一为HID设备,在设备管理器中查询其类GUID为745a17a0-74d3-11d0-b6fe-00a0c90f57da
    说明3:查询到的GUID与代码GUID结构体本质一样,形式不同。具体参考定义。

    消息函数声明

    在对话框头文件声明消息函数:

    afx_msg BOOL OnDeviceChange(UINT nEventType, DWORD dwData);
    

    消息声明

    在对话框实现文件中添加ON_WM_DEVICECHANGE消息:

    BEGIN_MESSAGE_MAP(CFooDlg, CDialogEx)
        ON_WM_SYSCOMMAND()
        ON_WM_PAINT()
        ON_WM_QUERYDRAGICON()
        ON_MESSAGE(WM_SHOWTASK, OnSystemtray)
        // ...
        ON_WM_SIZE()
        ON_WM_DESTROY()
        ON_WM_DEVICECHANGE() // USB HID设备检测消息
    END_MESSAGE_MAP()
    

    消息响应函数实现

    下面实现OnDeviceChange函数:

    BOOL CFooDlg::OnDeviceChange(UINT nEventType, DWORD dwData)
    {
        DEV_BROADCAST_DEVICEINTERFACE* dbd = (DEV_BROADCAST_DEVICEINTERFACE*)dwData;
        
        wchar_t vid[32] = { 0 };
        int offset = 4 * 3 + sizeof(GUID)+10;
        CString szInfo;
        int sendtype = 0;
        switch (nEventType)
        {
        case DBT_DEVICEARRIVAL:
        {
            memcpy(vid, (char*)dwData + offset, 32);
            wchar_t* rr = wcsstr(vid, L"VID_AA55"); // !! 可过滤特定设备ID,下同
            if (rr == NULL)
            {
                return FALSE;
            }
    
            szInfo.Format(L"提示信息: 设备已插入.\n");
    
            this->GetDlgItem(IDC_STC_DEVINFO)->SetWindowText(szInfo);
    
        }
        break;
        case DBT_DEVICEREMOVECOMPLETE:
        {
            // 注:dbd->dbcc_name只有1个字节,不能直接用其来做源地址拷贝,直接使用偏移,上同
            //wmemcpy(vid, (wchar_t*)dwData + offset, 32);
            memcpy(vid, (char*)dwData + offset, 32);
            wchar_t* rr = wcsstr(vid, L"VID_AA55");
            if (rr == NULL)
            {
                return FALSE;
            }
    
            szInfo.Format(L"提示信息: 设备已移除.\n");
    
            this->GetDlgItem(IDC_STC_DEVINFO)->SetWindowText(szInfo);
    
        }
        break;
    
        default:
        {
            //szInfo.Format(L"[%d]got event: %d\n", cnt, nEventType);
            //this->GetDlgItem(IDC_STC_DEVINFO)->SetWindowText(szInfo);
        }
        break;
        }
    
        return TRUE;
    }
    

    注1:只有注册的设备,nEventType才有DBT_DEVICEARRIVAL、DBT_DEVICEREMOVECOMPLETE(当然也有其它值,按下不提),如果不注册,nEventType的值为7。
    注2:查了些资料,说nEventType值不同,dwData亦不同。但本文没有深入研究。
    注3:如果要针对某一种设备,如所属为HID,但厂家不同,则可以通过查找VID关键字来过滤。文中代码使用偏移量外加字符串搜索来实现,仅作示例,有些绕,但能实现功能。

    后在 Windows 7 系统上用 VS 2015 编译,发现 ON_WM_DEVICECHANGE 出错,经排查,定位到

    afx_msg BOOL OnDeviceChange(UINT nEventType, DWORD dwData);
    

    声明不兼容。修改为:

    afx_msg BOOL OnDeviceChange(UINT nEventType, DWORD_PTR dwData);
    

    可解决编译问题,并且在 Win10 也能正常编译。

    二、测试

    使用

    0xA5DCBF10, 0x6530, 0x11D2,{ 0x90, 0x1F, 0x00, 0xC0, 0x4F, 0xB9, 0x51, 0xED }
    

    可以检测出所有的USB设备事件。包括U盘、键盘等。
    使用

    0x53f56307, 0xb6bf, 0x11d0,{ 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b }
    

    只能检测出U盘事件。
    使用

    0x745A17A0, 0x74D3, 0x11D0,{ 0xB6, 0xFE, 0x00, 0xA0, 0xC9, 0x0F, 0x57, 0xDA }
    

    检测不出HID事件(此处原因未知)。
    但是,使用

    0x4D1E55B2, 0xF16F, 0x11CF,{ 0x88, 0xCB, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30 }
    

    可以检测出HID事件。

    三、小结

    本文不过多涉及检测原理,代码测试通过。
    需要指出的是,在 Windows 上使用 Qt 编程检测 USB 事件,也是使用本文所提到的技术,包括注册、响应事件。毕竟,无论 MFC 还是 Qt 程序,都是在 Windows 上运行的,可谓殊途同归。当然,如 Linux 或 MacOS 系统,机制已然不同,不在此列。

    展开全文
  • VC自动侦测USB参考

    千次阅读 2015-09-28 12:59:43
    关于USB设备的自动侦测,该如何解决 http://m.myexception.cn/vc-mfc/114413.html 关于USB设备的自动侦测 不知道为什么,U盘能侦测到插入和移除, USB 摄像头就是不行,谁给帮忙解答一下 GUID CAMERA = { 0x6...

    关于USB设备的自动侦测,该如何解决

    http://m.myexception.cn/vc-mfc/114413.html

    关于USB设备的自动侦测
    不知道为什么,U盘能侦测到插入和移除, USB 摄像头就是不行,谁给帮忙解答一下


    GUID CAMERA = { 0x6BDD1FC6, 0x810F, 0x11D0, 0xBE, 0xC7, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F };


    DEV_BROADCAST_DEVICEINTERFACE NotificationFilter;
    ZeroMemory( &NotificationFilter, sizeof(NotificationFilter) );
    NotificationFilter.dbcc_size = sizeof(NotificationFilter); 
    NotificationFilter.dbcc_devicetype=DBT_DEVTYP_DEVICEINTERFACE;
    NotificationFilter.dbcc_classguid=CAMERA;
    RegisterDeviceNotification(hWnd,&NotificationFilter, DEVICE_NOTIFY_WINDOW_HANDLE);



    侦测:
    if( message == WM_DEVICECHANGE )
    {
    if ( wParam==DBT_DEVNODES_CHANGED )
    int kk=1;
             else if ( wParam == DBT_DEVICEARRIVAL) // device arrival
    {
    MessageBox(NULL,"arrival","test",MB_OK);
    return 1;
    }
    else if (wParam == DBT_DEVICEREMOVECOMPLETE) // device remove
    {
    MessageBox(NULL,"remove","test",MB_OK);
    return -1;
    }
    }

    ------解决方案--------------------
    你确定你的GUID 对吗? 试一下这几个GUID

    C/C++ code
    static const GUID GUID_DEVINTERFACE_LIST[] = 
    {
        // GUID_DEVINTERFACE_USB_DEVICE
        { 0xA5DCBF10, 0x6530, 0x11D2, { 0x90, 0x1F, 0x00, 0xC0, 0x4F, 0xB9, 0x51, 0xED } },
    
        // GUID_DEVINTERFACE_DISK
        { 0x53f56307, 0xb6bf, 0x11d0, { 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b } },
    
        // GUID_DEVINTERFACE_HID, 
        { 0x4D1E55B2, 0xF16F, 0x11CF, { 0x88, 0xCB, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30 } },
    
        // GUID_NDIS_LAN_CLASS
        { 0xad498944, 0x762f, 0x11d0, { 0x8d, 0xcb, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c } }
    
         GUID_DEVINTERFACE_COMPORT
        //{ 0x86e0d1e0, 0x8089, 0x11d0, { 0x9c, 0xe4, 0x08, 0x00, 0x3e, 0x30, 0x1f, 0x73 } },
    
         GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR
        //{ 0x4D36E978, 0xE325, 0x11CE, { 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18 } },
    
         GUID_DEVINTERFACE_PARALLEL
        //{ 0x97F76EF0, 0xF883, 0x11D0, { 0xAF, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x84, 0x5C } },
    
         GUID_DEVINTERFACE_PARCLASS
        //{ 0x811FC6A5, 0xF728, 0x11D0, { 0xA5, 0x37, 0x00, 0x00, 0xF8, 0x75, 0x3E, 0xD1 } }
    };
    
    
    //  我是把这几个GUID都注册了一遍,没注册过摄像头的,你着重确定GUID是否正确吧
    for(int i=0; i<sizeof(GUID_DEVINTERFACE_LIST)/sizeof(GUID); i++) {
            NotificationFilter.dbcc_classguid = GUID_DEVINTERFACE_LIST[i];
            hDevNotify = RegisterDeviceNotification(m_hWnd, &NotificationFilter, DEVICE_NOTIFY_WINDOW_HANDLE);
        }

     

     

    vc检测USB设备插入或移除

    http://blog.hehehehehe.cn/a/412.htm

    1.添加消息映射

    消息映射
    BEGIN_MESSAGE_MAP(CONSTNETCNDlg, CDialog)
    //{{AFX_MSG_MAP(CONSTNETCNDlg)
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    ...
    ON_WM_DEVICECHANGE()
    //}}AFX_MSG_MAP

    声明消息响应函数:
    afx_msg BOOL OnDeviceChange(UINT nEventType, DWORD dwData);

    定义函数内容:


    BOOL CONSTNETCNDlg::OnDeviceChange(UINT nEventType,DWORD dwData)
    {
       DEV_BROADCAST_DEVICEINTERFACE* dbd = (DEV_BROADCAST_DEVICEINTERFACE*) dwData;

       //这里进行信息匹配,比如guid等

    //针对各个事件进行处理.
    switch (nEventType)
    {
    case DBT_DEVICEREMOVECOMPLETE:
       MessageBox("移除USB");
       break;
    case DBT_DEVICEARRIVAL:
       MessageBox("发现USB");
       break;
    default:
       break;
    }

    return TRUE;

    }

    2.注册设备(添加到OnInitDialog中即可)

    DEV_BROADCAST_DEVICEINTERFACE DevInt;
    memset(&DevInt,0,sizeof(DEV_BROADCAST_DEVICEINTERFACE));
    DevInt.dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE);
    DevInt.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;

    DevInt.dbcc_classguid = { 0xA5DCBF10, 0x6530, 0x11D2, { 0x90, 0x1F, 0x00, 0xC0, 0x4F, 0xB9, 0x51, 0xED } };
    RegisterDeviceNotificationthis->GetSafeHwnd(),&DevInt,DEVICE_NOTIFY_WINDOW_HANDLE);

    PS:只有注册了该设备,OnDeviceChange才能获得详细的信息,否则收到的nEventType参数都是0007,dwData无数据。

    展开全文
  • QT5 检测 usb设备插拔

    万次阅读 热门讨论 2015-12-09 20:07:19
    上来直接贴代码 完整工程文件下载 QT5 USB 插拔检测完整工程mainwindow.h#ifndef MAINWINDOW_H #define MAINWINDOW_H#include #include #include #include #include #include<In
  • RTL8153是Realtek瑞昱针对Ultrabook超级本、...随着先进的DSP技术和复杂信号技术,RTL8153提供高速传输猫5 UTP电缆或猫3 UTP电缆(仅10 mbps)等功能交叉检测自动校对功能,极性校正、自适应均衡,相声撤销、回波消除、时
  • By jingzhongrong今天看到一篇文章里面说到的检测U盘插入的方法文章中使用的是用循环不停检测系统盘符的变化,然后根据盘符对应的类型来判 断。 下面是大概的方法 //检测是否为可移动磁盘 int CheckDisk(char ...
  • 项目中一直在用串口通讯,但没有实现可用串口的自动检测和热插拔检测。今天通过查找资料实现了这些功能,所以在这里坐下记录。 参考资料:http://blog.csdn.net/flydream0/article/details/8086976 实现环境:...
  • 目录 1、lsusb命令 2、fdisk命令(root用户下) 3、lsblk命令 4、demsg命令 5、ls /dev/sd* ...8、ls /proc/scsi/usb-storage/ 9、cat /proc/bus/input/devices 10、ls /run/media/root(这个...
  • 多路USB测试程序

    2015-06-25 13:13:36
    支持COM口自动查找和匹配,用于检测多个COM口下多个USB通道是否上电或接通,用于多个通过USB采集数据的应用。
  • 检测u盘是否插入

    2018-12-14 09:27:53
    这是一款自动检测U盘是否插入的VC程序代码,编译通过。
  •  整体功能:是为了实现车牌自动跟踪,检测,并拍照,定位,识别,但是跟踪和拍照等于没有实现。  实现功能: 能实现视频中物体跟踪,但必须是手动圈住才行,摄像头是usb摄像头。  这个程序也是根据参考网友的一些...
  • 原创地址:http://blog.csdn.net/jingzhongrong/archive/2007/01/02/1472440.aspx 今天看到一篇文章里面说到的检测U盘插入的方法文章中使用的是用循环不停检测系统盘符的变化,然后根据盘符对应的类型来判 断。...
  • 在实际项目中,需要定期检测设备状态,可能是PC上USB接口的问题,检测不了多久就会出现设备检测不到的情况,这可不行啊,总得想办法不是。 最终一顿搜索,找到了解决方法,不过还是通过google解决的,全部输入英文...
  • 1、如果是在没有单片机的情况下,进行简单的I...2、如果是单片机/DSP等与计算机相连接,也就是USB设备方式的应用,那么参考CH372的资料。可以下载CH372+CH451评估板/演示板的资料CH372EVT.ZIP,有PDF文档和例子程序,例
  • a、被检测进程定时,比如说每隔5秒给后台监控进程发送一个包含进程名称、进程所在绝对路径、发送心跳的时间戳等信息,后台监控进程定时检测遍历每个进程,如果该进程连续3次如15秒没有给监控进程发送心跳包,则说明...
  • VC平台下基于OLE的Word自动化操作应用.pdf VC平台中的ProE二次开发研究.pdf VC环境下纸箱打样机的矢量图形系统软件开发.pdf VC环境中位图图像的处理方法.pdf VC编程实现软件多语言功能.pdf VC调用MATLAB的方法...
  • (4)支持自动USB2.0模式检测USB1.1 fall-back模式; (5)带有高速DMA接口; (6)完全自由的和多操作DMA功能; (7)14个可编程的USB端点和2个固定的控制传输收发端点; (8)集成8KB可配置的FIFO;...
  • VC平台下基于OLE的Word自动化操作应用.pdf VC平台中的ProE二次开发研究.pdf VC环境下纸箱打样机的矢量图形系统软件开发.pdf VC环境中位图图像的处理方法.pdf VC编程实现软件多语言功能.pdf VC调用MATLAB的方法...
  • VC平台下基于OLE的Word自动化操作应用.pdf VC平台中的ProE二次开发研究.pdf VC环境下纸箱打样机的矢量图形系统软件开发.pdf VC环境中位图图像的处理方法.pdf VC编程实现软件多语言功能.pdf VC调用MATLAB的方法...
  • VC平台下基于OLE的Word自动化操作应用.pdf VC平台中的ProE二次开发研究.pdf VC环境下纸箱打样机的矢量图形系统软件开发.pdf VC环境中位图图像的处理方法.pdf VC编程实现软件多语言功能.pdf VC调用MATLAB的方法...
  • RTL8153 VC CG

    千次阅读 2019-12-06 20:15:12
    Realtek RTL8153-VC-CG 10/100 / 1000M以太网控制器将三速IEEE 802.3兼容媒体访问控制器(MAC)与三速以太网收发器,USB 3.0总线控制器和嵌入式存储器结合在一起。...交叉检测自动校正,极性校正, 实现了自适应...
  • 最初版本发布于http://blog.csdn.net/jingzhongrong/archive/2007/01/02/1472440.aspx两种自动检测USB设备的添加和移除的方法最初写这篇文章是因为当时看见一篇文章提出的判断方法是不断检测盘符变化,由于有更好的...
  • VC++编写USB接口通讯程序

    万次阅读 2011-05-04 12:31:00
    用VC++编写USB接口通讯程序 摘要:详细介绍Visual C++ 6.0环境下利用Windows API(Application Program Interface)函数来实现与符合HID设备类的USB接口通讯,并给出了通信程序的部分代码。...
  • vc服务器和客户端配置 内容精选换一换以NTP服务器、DNS服务器的操作系统均为SUSE为例:登录Linux弹性云服务器。执行以下命令,切换至root用户。sudo su -sudo su -执行以下命令,编辑ntp.conf文件。vim /etc/ntp....
  • SD-WAN与vCPE——5G时代

    2021-07-28 10:21:30
    智能深度包检测(DPI) 5G将如何在vCPE中发挥作用? vCPE是新一代网络的另一个关键虚拟组件,可能会给5G带来积极的影响。它将为最终用户提供互联网服务、应用程序、统一通信等,是与硬件分离的底层智能。vCPE允许将...
  • a CToolTipCtrl object at $00387FE0, 112 bytes long g:\c++\vc_prac\mfc_prac\pos_system\pos_systemview.cpp(174) : {312} normal block at 0x00387F40, 100 bytes long. Data: < > CD CD CD CD CD CD CD CD CD ...
  • USB的用途就不多说了,下面的内容主要就是讲解如何利用ST提供的USB驱动库和libusb的上位机驱动库实现一个USB数据传输功能,为了降低开发难度,我们仅仅讲解Bulk传输模式,当然这也是用得比较多的传输模式。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,854
精华内容 741
关键字:

vc自动检测usb