日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 嵌入式 > 嵌入式軟件

作者:劉洪濤,華清遠見嵌入式學院講師。

在嵌入式平臺上運行Qte時,使用的鍵盤通常不是標準鍵盤,而是嵌入式設備外擴的普通按鍵。那么實現QTE鍵盤輸入的方法大體上可以分為兩類:

(1)編寫一個普通按鍵驅動,然后開辟一個QT線程讀取按鍵值,在通過信號把按鍵值發(fā)送出去。需要接收鍵盤輸入的目標,聲明槽函數,接收鍵盤信號。

(2)將按鍵驅動編寫成標準鍵盤驅動,讓QTE感覺和標準鍵盤在打交道。

上述兩種方法給有特點。我在一些項目中多數都是使用第1種方式,感覺比較直觀容易控制。但也有些情況要選用第2種方法。

第1種方法的實現比較容易,這里就不多說了。下面主要把第2種方法的實現過程描述一下。

具體實現標準鍵盤輸入的過程可以分為兩步:

(1) 找一個標準usb鍵盤,測試QTE能否正確設別標準鍵盤

(2) 編寫按鍵驅動,模擬標準鍵盤輸入

一、第1步的實現過程:

● 配置QTE支持標準USB鍵盤

配置qte庫時,增加鍵盤支持的參數,如下:

./configure …… -qt-kbd-usb ……

● 配置內核支持USB鍵盤輸入

● 插入USB鍵盤后,產生event設備節(jié)點,如/dev/event2

● 設置QTE關聯(lián)的鍵盤設備的環(huán)境變量

export QWS_KEYBOARD=USB:/dev/event2

● 編寫一個接收鍵盤事件的QT測試代碼。

class MyDialog : public QDialog

{

……

protected:

virtual void keyPressEvent(QKeyEvent *k);

};

void MyDialog::keyPressEvent(QKeyEvent *k)

{

qDebug("in press event %x",k->key());

}

● 測試鍵盤輸入

當按下F1~F12時,打印出:

in press event 1000030

in press event 1000031

in press event 1000032

in press event 1000033

in press event 1000034

in press event 1000035

in press event 1000036

in press event 1000037

in press event 1000038

in press event 1000039

in press event 100003a

查QT幫助 Key_F1=0x1000030

說明QDialog 的keyPressEvent可以接收到它能獲取的鍵盤信號,即QTE和USB鍵盤連接正確。

二、第2步的實現過程:

主要參考/driver/usb/input/usbkbd.c程序,完成鍵盤模擬。程序主要思想是編寫一個支持EV_KEY的input設備驅動。下面摘取關鍵代碼。

● 完成input設備的注冊、注銷

struct input_dev *input_dev;

static unsigned char usb_kbd_keycode[256] = {

0, 0, 0, 0, 30, 48, 46, 32, 18, 33, 34, 35, 23, 36, 37, 38,

50, 49, 24, 25, 16, 19, 31, 20, 22, 47, 17, 45, 21, 44, 2, 3,

4, 5, 6, 7, 8, 9, 10, 11, 28, 1, 14, 15, 57, 12, 13, 26,

27, 43, 43, 39, 40, 41, 51, 52, 53, 58, 59, 60, 61, 62, 63, 64,

65, 66, 67, 68, 87, 88, 99, 70,119,110,102,104,111,107,109,106,

105,108,103, 69, 98, 55, 74, 78, 96, 79, 80, 81, 75, 76, 77, 71,

72, 73, 82, 83, 86,127,116,117,183,184,185,186,187,188,189,190,

191,192,193,194,134,138,130,132,128,129,131,137,133,135,136,113,

115,114, 0, 0, 0,121, 0, 89, 93,124, 92, 94, 95, 0, 0, 0,

122,123, 90, 91, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

29, 42, 56,125, 97, 54,100,126,164,166,165,163,161,115,114,113,

150,158,159,128,136,177,178,176,142,152,173,140

};

/*初始化*/

static int button_init(void)

{

……

input_dev = input_allocate_device();//分配input設備

input_dev->evbit[0] = BIT(EV_KEY) | BIT(EV_LED) | BIT(EV_REP);

// EV_KEY為要支持的鍵盤事件

for (i = 0; i < 255; i++)

set_bit(usb_kbd_keycode[i], input_dev->keybit);

//設置支持的鍵盤碼,可根據實際情況注冊

input_register_device(input_dev);//注冊input設備

}

/*注銷*/

static void __exit button_cleanup(void)

{

……

input_unregister_device(input_dev);//注銷input設備

}

● 中斷處理過程中完成鍵盤值的獲取及input事件的遞交

static irqreturn_t button_irq(int irq, void *dev_id, struct pt_regs *regs)

{

……

input_report_key(input_dev, 59, 1); //模擬鍵盤碼F1按下過程

input_report_key(input_dev, 59, 0);

input_sync(input_dev);

}

/*在內核include/linux/input.h中

#define KEY_F1 59

*/

上面給出了簡要的過程,大家在具體實現過程中多參考/driver/usb/input/usbkbd.c文件,及注意按鍵去抖等問題。

“本文由華清遠見http://www.embedu.org/index.htm提供”



華清遠見

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

德國康佳特亮相上海工博會,展示多款應用就緒的嵌入式解決方案平臺

關鍵字: 嵌入式 傳感器 處理器

雙方攜手為客戶打造以存儲為核心的模塊化基礎架構,支持先進的多裸片架構設計

關鍵字: 非易失性存儲 半導體 嵌入式

本屆年會將在上海(11月13-14日)、北京(11月19-20日)和深圳(11月27-28日)舉行,面向嵌入式設計工程師推出25門技術課程

關鍵字: 嵌入式 MCU 模擬

上海2025年9月5日 /美通社/ -- 由紐倫堡會展(上海)有限公司舉辦的上海國際嵌入式會議將于 2025 年 10 月 16-17 日在上海世博展覽館舉辦。 此次會議將由三個版塊組成:嵌入式技術會議、汽...

關鍵字: 嵌入式 CE CHINA EMBEDDED

從外部看,電子系統(tǒng)仿佛一個統(tǒng)一的學科或設備,各組成部分協(xié)同工作,渾然一體。然而揭開表象,其內在卻是另一番景象:一個碎片化、多層次的世界——其中每一層都獨立且復雜,衍生出各自特有的工具、專家、工作流程,甚至哲學體系。

關鍵字: 嵌入式 電子系統(tǒng) 半導體

8位單片機在嵌入式設計領域已經成為半個多世紀以來的主流選擇。盡管嵌入式系統(tǒng)市場日益復雜,8位單片機依然不斷發(fā)展,積極應對新的挑戰(zhàn)和系統(tǒng)需求。如今,Microchip推出的8位PIC?和AVR?單片機系列,配備了先進的獨立...

關鍵字: 單片機 嵌入式 CPU

深圳2025年8月28日 /美通社/ -- 8月26日,2025 ELEXCON深圳國際電子展盛大啟幕。本屆大會以"All for AI"為主題,深圳市德...

關鍵字: AI 工業(yè)級 SSD 嵌入式

深圳2025年8月26日 /美通社/ -- 8月26日,由博聞創(chuàng)意會展主辦的 第22屆深圳國際電子展暨嵌入式展(elexcon2025)在深圳(福田)會展中心隆重開幕。 作為中國電子與嵌入式技術領域的專業(yè)大展,本屆展會...

關鍵字: 嵌入式 電子 高通 AI

模塊化設計作為一種將系統(tǒng)拆分為獨立、可復用組件的方法,能夠在低代碼平臺中實現功能的靈活組合,并最大限度地提升系統(tǒng)性能。本文將探討如何通過模塊化設計,使得低代碼平臺既能快速適應變化,又能保持高效穩(wěn)定的運行。

關鍵字: 模塊化設計 嵌入式

CPU親和度通過限制進程或線程可以運行的CPU核心集合,使得它們只能在指定的CPU核心上執(zhí)行。這可以減少CPU緩存的失效次數,提高緩存命中率,從而提升系統(tǒng)性能。

關鍵字: Linux 嵌入式
關閉