国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

msOS人機(jī)交互設(shè)計(jì)之GUI篇

發(fā)布時(shí)間:2013-9-5 13:44    發(fā)布者:wp1981
關(guān)鍵詞: msOS , 人機(jī)交互 , GUI , HCI
作者:51buddy   

人機(jī)交互(Human-Computer Interaction, 簡寫HCI):是指人與計(jì)算機(jī)之間使用某種對話語言,以一定的交互方式,為完成確定任務(wù)的人與計(jì)算機(jī)之間的信息交換過程。

從上面的定義,可能太抽象化了,用生活中的例子來說,假如你要吃水煮魚,選擇不同功能電磁爐,人的勞累程度不一樣。怎么樣才可以做出色香俱全的菜肴,不同電磁爐提供的交互方法不同,有些電磁爐可以通過設(shè)定長時(shí)間低功率把魚和其他配料味道燉在一起, 有些只能調(diào)整功率,也是可以做出美味的,有些一鍵設(shè)置模式,按普遍規(guī)律固定方法煮魚。

以上其實(shí)就是三種不同人機(jī)交互方式來完成相同功能,各有不同市場需求。

今天把我學(xué)習(xí)理解到的 msOS GUI 設(shè)計(jì)跟大家分享。

msOS 靈活運(yùn)用結(jié)構(gòu)體,仿C# 的風(fēng)格,輕便的設(shè)計(jì)出在硬件 JN12864J LCD上可交互的顯示GUI,
設(shè)計(jì)思想是按添加組件方法,靈活的處理多界面,不同數(shù)據(jù)類型顯示及參數(shù)調(diào)整。采用面向?qū)ο蠹版湵矸绞皆O(shè)計(jì)方式如

Form、Label及TextBox等控件,讓圖形界面設(shè)計(jì)非常簡單而讓設(shè)計(jì)者只關(guān)心業(yè)務(wù)邏輯設(shè)計(jì)。

具體見如下框圖。



表方式:
詳細(xì)見如下函數(shù)
typedef struct LabelSelf
{
    byte X;   // display information at X'row location,it's only 4 row.
    byte Y;   //display information at Y'column location
    byte Shift; //
    int Offset;
    DataType Type;
    DataAlign Align;
    void * DataPoint;
    const string * StringBlockPoint;
    struct LabelSelf * NextLabelPoint;//鏈表
}Label;

界面設(shè)計(jì):mmi.c 文件,通過注冊控件方式,比如一個(gè)界面就是一個(gè)Form,一個(gè)form 由Label 及TextBox 及 BackText 構(gòu)成。其中BackText 為固定內(nèi)容,動態(tài)數(shù)據(jù)由Label 及TextBox 來控制。

目前程序做了5個(gè)Form  Logo、check,work,setup,service。拿一個(gè)最簡單的Form 來分析。

System.Gui.Form.Initialize(&App.Menu.CheckForm);// 即一個(gè)LCD 界面,目前只是顯示三個(gè)三角形,可以編寫

實(shí)現(xiàn)自己公司的LOGO.
    CheckChart.Character = '*';
    for(i = 0; i < 16; i++)
    {
        CheckChart.Column = 0;
    }
    App.Menu.CheckForm.ChartPoint = &CheckChart;

業(yè)務(wù)邏輯部分已經(jīng)包含到控件的結(jié)構(gòu)體定義中去,我們只要編寫函數(shù)改變控件中相應(yīng)變量,相對應(yīng)的分層文件為data.c

void InitializeData(void)
{
    App.Data.Frequence = 980000;
    App.Data.Power = 6000;
    App.Data.PowerPercent = 12;
    App.Data.Voltage = 99;
    App.Data.Current = 101;
    App.Data.Temperature = -25;
    App.Data.State = 1;

    App.Data.MaxPower = 6000;
    App.Data.MaxTemperature = 50;
    App.Data.MaxFrequence = 980000;
    App.Data.MaxFrequenceOffset = 100000;
    App.Data.MinStream = 50;

    App.Data.SerialNumber = 0;
    App.Data.ProductionDate = (13 << 16) + (7 << 8) + 24;
    App.Data.IdentifyNumber0 = 0x12345678;
    App.Data.IdentifyNumber1 = 0x34567890;
    App.Data.IdentifyNumber2 = 0x56789012;
    App.Data.IdentifyNumber3 = 0x78901234;
}

備注:GUi.c 中的一些函數(shù)設(shè)置很巧妙,必須要結(jié)合硬件驅(qū)動,這里驅(qū)動更加巧妙。

幾個(gè)關(guān)鍵點(diǎn)如下:

GUi.c 如下函數(shù)設(shè)計(jì)來源硬件驅(qū)動及硬件功能。

static char GuiBuffer[4][16];//用于交換顯示的數(shù)據(jù)結(jié)構(gòu),顯示4行16個(gè)字符。

static char DisplayBuffer[4][16];
//64×16 位字符顯示 RAM(DDRAM 最多 16 字符×4 行,LCD 顯示范圍 16×2 行)

硬件驅(qū)動基礎(chǔ)函數(shù):

static void LcdSendData(byte data)// 寫數(shù)據(jù)
static void LcdSendInstruct(byte instruct)// 寫指令

封裝函數(shù)
static void LcdDisplayString(byte y, string string)

最后是通過DisplayString來調(diào)用封裝函數(shù)。

System.Device.Lcd.DisplayString = LcdDisplayString;

DisplayString 函數(shù)是通過GUI.C 中的Updata 函數(shù)來更新顯示數(shù)據(jù)。
static void Update(void)
{
    byte i, j;
    bool update;
   
    for (i = 0; i < 4; i++)
{
        update = false;
        for (j = 0; j < 16; j++)
        {
            if(DisplayBuffer[j] != GuiBuffer[j])
            {
                DisplayBuffer[j] = GuiBuffer[j];
                update = true;
            }
        }
        if(update == true)
        {
            System.Device.Lcd.DisplayString(i, DisplayBuffer);
        }
        else
        {
            DelayMs(1);
        }
    }

}

硬件驅(qū)動設(shè)計(jì)跟硬件相關(guān)的幾點(diǎn)理解:
const char Array[4] =
{
    0x80, 0x90, 0x88, 0x98
}; //來源于手冊如下描述,DDRAM 行地址。



variable = 0x00F80000 | ((instruct & 0xF0) << 8) |((instruct & 0x0F) << 4);
variable = 0x00FA0000 | ((data & 0xF0) << 8) |((data & 0x0F) << 4);
// 來源于SPI 時(shí)序,上述就是組合出一次通信需要傳輸24BIT。



本文地址:http://m.qingdxww.cn/thread-120372-1-1.html     【打印本頁】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區(qū)
  • Dev Tool Bits——使用MPLAB® Discover瀏覽資源
  • Dev Tool Bits——使用條件軟件斷點(diǎn)宏來節(jié)省時(shí)間和空間
  • Dev Tool Bits——使用DVRT協(xié)議查看項(xiàng)目中的數(shù)據(jù)
  • Dev Tool Bits——使用MPLAB® Data Visualizer進(jìn)行功率監(jiān)視
  • 貿(mào)澤電子(Mouser)專區(qū)

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美羞羞视频 | 欧洲三级在线观看 | 麻豆18在线播放 | 久久精品成人一区二区三区 | 一区在线观看 | 日韩黄色免费 | 亚洲欧美日韩一区超高清 | 免费h福利动漫网站在线 | 国产精品老牛影视 | 日本中文字幕一区二区三区不卡 | 天堂在线91 | 四虎影视在线看免费 720p | 91麻豆精品国产综合久久久 | 搓逼视频 | 欧美黑人一级 | 亚洲高清中文字幕 | 肉视频在线观看 | 99久久精品免费看国产免费 | 天天色操| 欧美高清一区二区三 | 精品国产一区二区三区19 | 成人国产亚洲欧美成人综合网 | 曰本人一级毛片免费完整视频 | 亚洲综合色婷婷 | 日本亚洲一区二区三区 | 国产精品国产亚洲精品看不卡 | 狠狠色丁香婷婷综合视频 | 女人一级毛片 | 男人的天堂久久精品激情a 男人的天堂久久精品激情 男人的天堂久久 | 国产一区二卡三区四区 | 国产三级日本三级美三级 | 高清中文字幕视频在线播 | 三级毛片国产三级毛片 | 日韩大片免费观看视频播放 | 在线视频 日韩 | 久久精品综合国产二区 | 亚洲国产日韩欧美在线vip1区 | 91久久青青青国产免费 | 欧美一区二区三区免费看 | 久久99精品福利久久久 | 久久国产片 |