精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

英創信息技術ARM9 Linux智能終端菜單界面設計介紹

英創信息技術 ? 來源:英創信息技術 ? 作者:英創信息技術 ? 2019-11-18 10:04 ? 次閱讀

低成本的單色LCD在工業領域應用非常廣泛,英利公司提供的基于嵌入式Linux平臺的EM9160支持外接單色LCD屏,目前應用得比較多的規格包括有LCD320x240、LCD240x128、LCD128x64、LCD160x160等。在實際應用中有許多對于菜單界面操作的需求,需要客戶根據應用的具體要求自行構建菜單顯示界面,本文將重點介紹這方面的內容。

基于菜單界面操作過程實質一個簡單的交互式操作,需要實時響應鍵盤消息、定時消息等。嵌入式Linux操作系統是一個實時多任務系統,可以利用多線程的方式來實現各個應用請求的響應。在本案例是通過創建多個線程的方式來實現對于鍵盤、定時任務的實時響應,從而實現對于菜單界面的操作。

下面分兩個部分來介紹該例程:

1、應用程序框架

為了便于程序的設計和管理,利用了Linux多任務的編程優勢,利用內核的任務調度機制,采用面向對象的C++編程將各個應用功能模塊化。在該例程中需要實現的響應功能:鍵盤和定時任務的響應,在應用程序中通過創建兩個線程來實現。

在該程序例程中main(…)函數,首先進行初始化操作,包括對于LCD屏的初始化、菜單界面的初始化操作等;然后是創建鍵盤處理線程、再進入主線程,主線程的功能主要是處理定時任務,在本方案中實現的是定時顯示界面刷新。如下圖所示:

// LCD顯示屏的初始化操作

i1 = LCD_Init( LCD_160160 );

if( i1《0 )

{

printf( ‘LCD Init fail!\n’ );

}

LCD_LoadSmallFnt( );

LCD_SetMode( 1 ); // set to XOR mode

LCD_SetFont( 12 ); // 設置漢字顯示為12點陣模式

// 加載缺省菜單界面

status = MenuManager.LoadMenu( );

if( status 《 0 )

{

printf( ‘status=%d\n’, status);

return status;

}

MenuManager.Show( );

MenuManager.Update();

// 打開鍵盤設備,并啟動鍵盤處理線程

KeyManager.Open( );

for( ExitFlag=0; ; )

{

if( ExitFlag )

{

break;

}

// 延時1S 執行一次顯示刷新操作

sleep( 1 );

MenuManager.Update( );

}

// 關閉鍵盤設備,并卸載鍵盤處理線程

KeyManager.Close( );

LCD_DeInit( );

return 0;

其中的主線程很簡單,只是定時處理的任務,直接調用sleep(1)函數阻塞等待。

鍵盤處理線程主要檢查是否有鍵按下,一旦有鍵按下則讀取相應的鍵碼值,并作相應的響應處理。當一個鍵按下時,EM9160內核中的鍵盤驅動程序將得到的有效鍵碼存儲在內部的緩沖區中,應用程序可直接通過read函數讀取鍵碼。

應用程序打開矩陣鍵盤驅動程序的方法還是打開相應的設備文件,如下:

key_fd = open(‘/dev/em9x60_keypad’, O_RDONLY | O_NONBLOCK);

以下為讀取鍵碼值并作相應的處理代碼:

FD_ZERO(&fs_read);

FD_SET(key_fd,&fs_read);

time.tv_sec = 0;

time.tv_usec = 100000; //timeout = 100ms

fs_sel = select(key_fd+1, &fs_read, NULL, NULL, &time);

if(fs_sel)

{

//data available, so get it!

len = read(key_fd, &KeyCode, sizeof(KeyCode));

if(len 》 0)

{

//printf(‘len=%d KeyCode= 0x%x\r\n’, len, KeyCode);

switch( KeyCode )

{

case 0x011b:

KeyCmd = ESC;

MenuManager.Key_ESC( );

break;

case 0x1c0d:

KeyCmd = ENTER;

MenuManager.Key_ENTER( );

break;

case 0x0635:

KeyCmd = UP;

MenuManager.Key_SHIFT( 1 );

break;

case 0x0938:

KeyCmd = DOWN;

MenuManager.Key_SHIFT( 0 );

break;

case 0x0837:

KeyCmd = LEFT;

break;

case 0x0939:

KeyCmd = RIGHT;

break;

}

}

}

2、菜單界面設計

在本例程中主要是針對一個基于LCD160x160顯示終端所設計的二級菜單顯示界面,功能鍵有六個:Key_ESC、Key_Enter以及Key_UP、Key_Down、Key_Left、Key_Right鍵,通過Key_UP、Key_Down鍵選擇菜單項,Key_Enter確認鍵來進入下一級,Key_ESC返回上一級菜單。

菜單的顯示和管理是通過C++方式來實現,Class Item定義菜單中各個菜單項的顯示特性以及操作特性;Class Menu定義了菜單的特性,其中包含又對于菜單中各個菜單項管理的功能;Class MenuManager是一個菜單管理類,這個類實現了對于各個菜單的管理和操作特性,相當于一個人機交互界面的功能。它們定義分別在 Item.h Menu.h文件中。

為了增加菜單設計的靈活性,對于各個菜單界面的顯示內容采用了讀取配置文件的方式,即在配置文件中定義各個菜單的顯示名稱和顯示位置,如:

// item的類型 顯示名稱 X位置 Y位置 下一級菜單名稱

item=101 D1 0 0

item=100 D0 100 0

item=301 測量點數據顯示 0 32 menu1

item=301 參數設置與查看 0 48 menu2

item=301 終端管理與維護 0 64 menu3

根據該配置文件所形成的顯示菜單如下:

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11232

    瀏覽量

    208957
  • 嵌入式主板
    +關注

    關注

    7

    文章

    6085

    瀏覽量

    35226
收藏 人收藏

    評論

    相關推薦

    VS2005與ARM9嵌入式模塊連接和調試步驟

    使用VS2005連接和調試ARM9嵌入式模塊
    發表于 09-27 13:05

    如何利用ARM9嵌入式主板快速構建雙CAN接口的方案

    提供的系列ARM9嵌入式主板,除EM9160嵌入式主板外,所有的ARM9主板上均可直接支持一個CAN接口。ETA701是
    的頭像 發表于 10-08 11:37 ?4012次閱讀
    如何利用<b class='flag-5'>英</b><b class='flag-5'>創</b><b class='flag-5'>ARM9</b>嵌入式主板快速構建雙CAN接口的方案

    信息技術VS2005調試ARM9核心板簡介

    C++(簡稱EVC)作為該平臺的標準開發工具,EVC和標準PC平臺VC的開發界面基本上完全一致,因此對于工程師來說,在ARM9平臺上開發應用程序和開發PC上的應用程序一樣容易。
    的頭像 發表于 10-31 15:03 ?1850次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創</b><b class='flag-5'>信息技術</b>VS2005調試<b class='flag-5'>ARM9</b>核心板簡介

    信息技術ARM9工控主板WinCE應用程序遠程控制應用

    公司推出的ARM9嵌入式工控主板產品系列,均預裝了正版的WinCE5.0操作系統。微軟的WINCE實時多任務操作系統是嵌入式領域的主流操作系統之一,它包括了以TCP/IP為特色的完整網絡通訊協議
    的頭像 發表于 11-04 09:28 ?1717次閱讀

    信息技術ARM9工控主板內嵌AD概述

    公司推出的ARM9 嵌入式工控主板產品系列,均預裝了正版WinCE5.0 操作系統。
    的頭像 發表于 11-04 09:43 ?2607次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創</b><b class='flag-5'>信息技術</b><b class='flag-5'>ARM9</b>工控主板內嵌AD概述

    信息技術ARM9工控板在遠程監控領域的應用

    ARM9工控主板的數據采集功能通常采用板上的GPIO實現數字輸入輸出、通過精簡ISA總線擴展相應的AD或DA實現模擬數據的輸入輸出。在
    的頭像 發表于 11-12 10:04 ?1738次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創</b><b class='flag-5'>信息技術</b><b class='flag-5'>ARM9</b>工控板在遠程監控領域的應用

    信息技術ARM9工控板串口設備的COM組件應用

    公司的ARM9工控主板產品均預裝了Windows CE5.0操作系統,支持包括EVC、C#、VB、LabView等多種開發工具。
    的頭像 發表于 11-05 10:07 ?1736次閱讀

    信息技術ARM9主板上運行案例解析

    今年(2009年)的市場活動中,為了讓客戶更好地完成產品應用開發,向第一次購買
    的頭像 發表于 11-12 10:20 ?1393次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創</b><b class='flag-5'>信息技術</b><b class='flag-5'>ARM9</b>主板上運行案例解析

    信息技術CAN接口COM組件在C#語言領域應用

     ARM9工控主板的一個很大的特色就是提供了標準的CAN總線通訊接口,客戶可以方便地在工業現場、汽車、船舶等等領域進行CAN通信應用。由于
    的頭像 發表于 11-12 10:34 ?2417次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創</b><b class='flag-5'>信息技術</b>CAN接口COM組件在C#語言領域應用

    信息技術ARM9工控板遠程抓拍圖像應用介紹

    ARM9工控主板功能齊全、體積小巧、性能穩定、超低價格的嵌入式主板產品。主板硬件完全按工業級標準設計,CPU采用了32位工業級ARM9芯片,PCB板經精心優化設計,除提供全面、高效
    的頭像 發表于 11-13 09:41 ?1947次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創</b><b class='flag-5'>信息技術</b><b class='flag-5'>ARM9</b>工控板遠程抓拍圖像應用<b class='flag-5'>介紹</b>

    信息技術工控主板EM9360的GPIO介紹

    的WinCE驅動程序,支持應用程序通過WinCE相應的API函數來操作各路網絡接口。此外EM9360還與公司其他ARM9主板一樣,帶有精簡ISA擴展總線以及12位通用GPIO,精簡ISA總線的基本使用方法可參考
    的頭像 發表于 11-14 09:34 ?2370次閱讀

    信息技術工控主板的復位管理介紹

     公司的工控主板是基于ARM9 CPU、預裝正版WinCE的嵌入式主板產品。作為嵌入式應用,系統的可靠啟動是其可靠性的重要組成部分。本文針對嵌入式應用的特點、介紹
    的頭像 發表于 11-14 10:03 ?1629次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創</b><b class='flag-5'>信息技術</b>工控主板的復位管理<b class='flag-5'>介紹</b>

    信息技術ARM9工控主板擴展矩陣鍵盤的方法

    鍵盤輸入,僅需要一些數字鍵或功能鍵(比如方向鍵),此時可通過外擴矩陣鍵盤來實現。 1、矩陣鍵盤擴展硬件電路 ARM9工控主板可通過GPIO或精簡ISA總線擴展矩陣鍵盤,通過GPIO擴展時,程序直接驅動IO作為掃描輸入輸出,比
    的頭像 發表于 01-14 11:05 ?1613次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創</b><b class='flag-5'>信息技術</b><b class='flag-5'>ARM9</b>工控主板擴展矩陣鍵盤的方法

    信息技術ARM9主板進行連接調試的兩種方法

    在我們提供給用戶的《使用VS2005連接和調試ARM9嵌入式模塊》一文中,我們分別以在EM9000上和在EM9260上為例講述了兩種對基于WinCE的ARM9主板進行連接調試的方法
    的頭像 發表于 01-14 11:29 ?1419次閱讀

    信息技術ARM9工控主板的SMS短信息應用介紹

    的應用越來越廣泛,其中主要以GPRS數據通訊及SMS短信息方式為主。GPRS數據通訊是以TCP/IP方式進行通訊,GPRS模塊發送SMS短信,是通過串口發送AT指令來實現。 公司基于ARM
    的頭像 發表于 01-14 11:45 ?1322次閱讀