QT 監聽USB熱插拔事件

2021-10-02 22:33:00 字數 1298 閱讀 7438

過濾windows的事件訊息,其中wm_devicechange是裝置發生變化時的windows發給各個程式的事件訊息,再通過wparam判斷是裝置插入(dbt_devicearrival)還是拔出(dbt_deviceremovecomplete)。

在qt中新增兩個檔案。

usb_listener.cpp

#include "usb_listener.h"

if(msg->wparam == dbt_deviceremovecomplete)

}return qwidget::nativeevent(eventtype, message, result);

}//觸發訊號

void usb_listener::emitmysignal()

usb_listener.h

#ifndef usb_listener_h

#define usb_listener_h

#include #include #include #include class usb_listener:public qwidget, public qabstractnativeeventfilter

;#endif // usb_listener_h

在pro檔案中:

新增qt += serialport

在mainwindow中:

完成訊號的連線

#include "mainwindow.h"

#include "ui_mainwindow.h"

#include "qlabel.h"

#include #include "usb_listener.h"

#include usb_listener *m_usb_listener = q_nullptr;

mainwindow::mainwindow(qwidget *parent)

: qmainwindow(parent)

, ui(new ui::mainwindow)

); m_usb_listener->emitmysignal(); //手動觸發一次

//ui->label->settext("hello world");

qdebug("hello");

}mainwindow::~mainwindow()

linux 實現監聽熱插拔事件

在一些跑linux 系統的平台上,比如故事機,會支援sdcard 熱插拔的功能,也就是在sdcard 插入後,把sdcard mount到檔案系統中,sdcard拔出後移除。上層應用要怎麼知道這個事件呢,應用層可以註冊監聽uevent 事件即可,下面給出對應的實現。include include i...

Android監聽USB插拔事件

android監聽usb插拔事件有兩種方式 一種是在mainifest.xml中註冊 android.hardware.usb.action.usb device attached即在usb插入是的action意圖。在android.hardware.usb.usbmanager類中有多種actio...

usb熱插拔實現機制

一.等待 static struct usb driver hub driver int usb hub init void khubd task kthread run hub thread,null,khubd if is err khubd task return 0 fall through...