99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

英創(chuàng)信息技術(shù)ARM9 Linux智能終端菜單界面設(shè)計(jì)介紹

英創(chuàng)信息技術(shù) ? 來(lái)源:英創(chuàng)信息技術(shù) ? 作者:英創(chuàng)信息技術(shù) ? 2019-11-18 10:04 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

低成本的單色LCD在工業(yè)領(lǐng)域應(yīng)用非常廣泛,英利公司提供的基于嵌入式Linux平臺(tái)的EM9160支持外接單色LCD屏,目前應(yīng)用得比較多的規(guī)格包括有LCD320x240、LCD240x128、LCD128x64、LCD160x160等。在實(shí)際應(yīng)用中有許多對(duì)于菜單界面操作的需求,需要客戶根據(jù)應(yīng)用的具體要求自行構(gòu)建菜單顯示界面,本文將重點(diǎn)介紹這方面的內(nèi)容。

基于菜單界面操作過(guò)程實(shí)質(zhì)一個(gè)簡(jiǎn)單的交互式操作,需要實(shí)時(shí)響應(yīng)鍵盤消息、定時(shí)消息等。嵌入式Linux操作系統(tǒng)是一個(gè)實(shí)時(shí)多任務(wù)系統(tǒng),可以利用多線程的方式來(lái)實(shí)現(xiàn)各個(gè)應(yīng)用請(qǐng)求的響應(yīng)。在本案例是通過(guò)創(chuàng)建多個(gè)線程的方式來(lái)實(shí)現(xiàn)對(duì)于鍵盤、定時(shí)任務(wù)的實(shí)時(shí)響應(yīng),從而實(shí)現(xiàn)對(duì)于菜單界面的操作。

下面分兩個(gè)部分來(lái)介紹該例程:

1、應(yīng)用程序框架

為了便于程序的設(shè)計(jì)和管理,利用了Linux多任務(wù)的編程優(yōu)勢(shì),利用內(nèi)核的任務(wù)調(diào)度機(jī)制,采用面向?qū)ο蟮?a href="http://www.socialnewsupdate.com/tags/C++/" target="_blank">C++編程將各個(gè)應(yīng)用功能模塊化。在該例程中需要實(shí)現(xiàn)的響應(yīng)功能:鍵盤和定時(shí)任務(wù)的響應(yīng),在應(yīng)用程序中通過(guò)創(chuàng)建兩個(gè)線程來(lái)實(shí)現(xiàn)。

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

// 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 ); // 設(shè)置漢字顯示為12點(diǎn)陣模式

// 加載缺省菜單界面

status = MenuManager.LoadMenu( );

if( status 《 0 )

{

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

return status;

}

MenuManager.Show( );

MenuManager.Update();

// 打開鍵盤設(shè)備,并啟動(dòng)鍵盤處理線程

KeyManager.Open( );

for( ExitFlag=0; ; )

{

if( ExitFlag )

{

break;

}

// 延時(shí)1S 執(zhí)行一次顯示刷新操作

sleep( 1 );

MenuManager.Update( );

}

// 關(guān)閉鍵盤設(shè)備,并卸載鍵盤處理線程

KeyManager.Close( );

LCD_DeInit( );

return 0;

其中的主線程很簡(jiǎn)單,只是定時(shí)處理的任務(wù),直接調(diào)用sleep(1)函數(shù)阻塞等待。

鍵盤處理線程主要檢查是否有鍵按下,一旦有鍵按下則讀取相應(yīng)的鍵碼值,并作相應(yīng)的響應(yīng)處理。當(dāng)一個(gè)鍵按下時(shí),EM9160內(nèi)核中的鍵盤驅(qū)動(dòng)程序?qū)⒌玫降挠行фI碼存儲(chǔ)在內(nèi)部的緩沖區(qū)中,應(yīng)用程序可直接通過(guò)read函數(shù)讀取鍵碼。

應(yīng)用程序打開矩陣鍵盤驅(qū)動(dòng)程序的方法還是打開相應(yīng)的設(shè)備文件,如下:

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

以下為讀取鍵碼值并作相應(yīng)的處理代碼:

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、菜單界面設(shè)計(jì)

在本例程中主要是針對(duì)一個(gè)基于LCD160x160顯示終端所設(shè)計(jì)的二級(jí)菜單顯示界面,功能鍵有六個(gè):Key_ESC、Key_Enter以及Key_UP、Key_Down、Key_Left、Key_Right鍵,通過(guò)Key_UP、Key_Down鍵選擇菜單項(xiàng),Key_Enter確認(rèn)鍵來(lái)進(jìn)入下一級(jí),Key_ESC返回上一級(jí)菜單。

菜單的顯示和管理是通過(guò)C++方式來(lái)實(shí)現(xiàn),Class Item定義菜單中各個(gè)菜單項(xiàng)的顯示特性以及操作特性;Class Menu定義了菜單的特性,其中包含又對(duì)于菜單中各個(gè)菜單項(xiàng)管理的功能;Class MenuManager是一個(gè)菜單管理類,這個(gè)類實(shí)現(xiàn)了對(duì)于各個(gè)菜單的管理和操作特性,相當(dāng)于一個(gè)人機(jī)交互界面的功能。它們定義分別在 Item.h Menu.h文件中。

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

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

item=101 D1 0 0

item=100 D0 100 0

item=301 測(cè)量點(diǎn)數(shù)據(jù)顯示 0 32 menu1

item=301 參數(shù)設(shè)置與查看 0 48 menu2

item=301 終端管理與維護(hù) 0 64 menu3

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11512

    瀏覽量

    213908
  • 嵌入式主板
    +關(guān)注

    關(guān)注

    7

    文章

    6102

    瀏覽量

    36319
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    VS2005與創(chuàng)ARM9嵌入式模塊連接和調(diào)試步驟

    使用VS2005連接和調(diào)試創(chuàng)ARM9嵌入式模塊
    發(fā)表于 09-27 13:05

    如何利用創(chuàng)ARM9嵌入式主板快速構(gòu)建雙CAN接口的方案

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

    創(chuàng)信息技術(shù)VS2005調(diào)試ARM9核心板簡(jiǎn)介

    C++(簡(jiǎn)稱EVC)作為該平臺(tái)的標(biāo)準(zhǔn)開發(fā)工具,EVC和標(biāo)準(zhǔn)PC平臺(tái)VC的開發(fā)界面基本上完全一致,因此對(duì)于工程師來(lái)說(shuō),在創(chuàng)ARM9平臺(tái)上開發(fā)應(yīng)用程序和開發(fā)PC上的應(yīng)用程序一樣容易。
    的頭像 發(fā)表于 10-31 15:03 ?2211次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術(shù)</b>VS2005調(diào)試<b class='flag-5'>ARM9</b>核心板簡(jiǎn)介

    創(chuàng)信息技術(shù)ARM9工控主板WinCE應(yīng)用程序遠(yuǎn)程控制應(yīng)用

    創(chuàng)公司推出的ARM9嵌入式工控主板產(chǎn)品系列,均預(yù)裝了正版的WinCE5.0操作系統(tǒng)。微軟的WINCE實(shí)時(shí)多任務(wù)操作系統(tǒng)是嵌入式領(lǐng)域的主流操作系統(tǒng)之一,它包括了以TCP/IP為特色的完整網(wǎng)絡(luò)通訊協(xié)議
    的頭像 發(fā)表于 11-04 09:28 ?2034次閱讀

    創(chuàng)信息技術(shù)ARM9工控主板內(nèi)嵌AD概述

    創(chuàng)公司推出的ARM9 嵌入式工控主板產(chǎn)品系列,均預(yù)裝了正版WinCE5.0 操作系統(tǒng)。
    的頭像 發(fā)表于 11-04 09:43 ?3085次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術(shù)</b><b class='flag-5'>ARM9</b>工控主板內(nèi)嵌AD概述

    創(chuàng)信息技術(shù)ARM9工控板在遠(yuǎn)程監(jiān)控領(lǐng)域的應(yīng)用

    創(chuàng)ARM9工控主板的數(shù)據(jù)采集功能通常采用板上的GPIO實(shí)現(xiàn)數(shù)字輸入輸出、通過(guò)精簡(jiǎn)ISA總線擴(kuò)展相應(yīng)的AD或DA實(shí)現(xiàn)模擬數(shù)據(jù)的輸入輸出。在創(chuàng)
    的頭像 發(fā)表于 11-12 10:04 ?2150次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術(shù)</b><b class='flag-5'>ARM9</b>工控板在遠(yuǎn)程監(jiān)控領(lǐng)域的應(yīng)用

    創(chuàng)信息技術(shù)ARM9工控板串口設(shè)備的COM組件應(yīng)用

    創(chuàng)公司的ARM9工控主板產(chǎn)品均預(yù)裝了Windows CE5.0操作系統(tǒng),支持包括EVC、C#、VB、LabView等多種開發(fā)工具。
    的頭像 發(fā)表于 11-05 10:07 ?2096次閱讀

    創(chuàng)信息技術(shù)ARM9主板上運(yùn)行案例解析

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

    創(chuàng)信息技術(shù)CAN接口COM組件在C#語(yǔ)言領(lǐng)域應(yīng)用

     創(chuàng)ARM9工控主板的一個(gè)很大的特色就是提供了標(biāo)準(zhǔn)的CAN總線通訊接口,客戶可以方便地在工業(yè)現(xiàn)場(chǎng)、汽車、船舶等等領(lǐng)域進(jìn)行CAN通信應(yīng)用。由于創(chuàng)
    的頭像 發(fā)表于 11-12 10:34 ?2804次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術(shù)</b>CAN接口COM組件在C#語(yǔ)言領(lǐng)域應(yīng)用

    創(chuàng)信息技術(shù)ARM9工控主板遠(yuǎn)程操作自動(dòng)更新介紹

    庫(kù)EM_FTPClient.LIB,客戶利用這個(gè)庫(kù)可以方便的編寫出適合自己應(yīng)用的FTP客戶端應(yīng)用程序,在《ARM9工控主板支持?jǐn)帱c(diǎn)續(xù)傳的FTP文件傳送》一文中對(duì)各庫(kù)函數(shù)做了詳細(xì)介紹。本文介紹的更新方案就是利用
    的頭像 發(fā)表于 11-13 09:26 ?1718次閱讀

    創(chuàng)信息技術(shù)ARM9工控板遠(yuǎn)程抓拍圖像應(yīng)用介紹

    創(chuàng)ARM9工控主板功能齊全、體積小巧、性能穩(wěn)定、超低價(jià)格的嵌入式主板產(chǎn)品。主板硬件完全按工業(yè)級(jí)標(biāo)準(zhǔn)設(shè)計(jì),CPU采用了32位工業(yè)級(jí)ARM9芯片,PCB板經(jīng)精心優(yōu)化設(shè)計(jì),除提供全面、高效
    的頭像 發(fā)表于 11-13 09:41 ?2459次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術(shù)</b><b class='flag-5'>ARM9</b>工控板遠(yuǎn)程抓拍圖像應(yīng)用<b class='flag-5'>介紹</b>

    創(chuàng)信息技術(shù)工控主板的復(fù)位管理介紹

     創(chuàng)公司的工控主板是基于ARM9 CPU、預(yù)裝正版WinCE的嵌入式主板產(chǎn)品。作為嵌入式應(yīng)用,系統(tǒng)的可靠啟動(dòng)是其可靠性的重要組成部分。本文針對(duì)嵌入式應(yīng)用的特點(diǎn)、介紹
    的頭像 發(fā)表于 11-14 10:03 ?1954次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術(shù)</b>工控主板的復(fù)位管理<b class='flag-5'>介紹</b>

    創(chuàng)信息技術(shù)ARM9工控主板擴(kuò)展矩陣鍵盤的方法

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

    創(chuàng)信息技術(shù)ARM9主板進(jìn)行連接調(diào)試的兩種方法

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

    創(chuàng)信息技術(shù)ARM9工控主板的SMS短信息應(yīng)用介紹

    的應(yīng)用越來(lái)越廣泛,其中主要以GPRS數(shù)據(jù)通訊及SMS短信息方式為主。GPRS數(shù)據(jù)通訊是以TCP/IP方式進(jìn)行通訊,GPRS模塊發(fā)送SMS短信,是通過(guò)串口發(fā)送AT指令來(lái)實(shí)現(xiàn)。 創(chuàng)公司基于ARM
    的頭像 發(fā)表于 01-14 11:45 ?1637次閱讀