<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 系統(tǒng)的消息循環(huán)

          系統(tǒng)的消息循環(huán)

          作者: 時間:2011-11-08 來源:網(wǎng)絡 收藏

          一、 實驗目的
          學習使用系統(tǒng)的。掌握如何通過系統(tǒng)的來響應鍵盤的消息,同時學會
          使用圖形模式下的液晶屏文字顯示函數(shù)。最終實現(xiàn)按不同的鍵,在屏幕上顯示不同的文字;
          同時,把鍵盤的按鍵號碼輸出到PC 機的終端顯示。
          二、實驗內(nèi)容
          通常在多任務操作系統(tǒng)中,任務之間的通訊是通過任務之間發(fā)送消息來實現(xiàn)的。在本操
          作系統(tǒng)的Main_Task 任務中,定義了一個消息隊列。本次實驗將通過使用這個消息隊列接收
          鍵盤的按鍵消息,并把鍵盤的按鍵顯示在液晶屏和PC 機的終端上。
          三、預備知識
          1、用ARM SDT 2.5 集成開發(fā)環(huán)境,編寫和調試程序的基本過程。
          2、基于操作系統(tǒng)的應用程序的框架結構。
          3、會使用Source Insight 3 編輯C 語言源程序
          4、操作系統(tǒng)的繪圖API 函數(shù)和繪圖設備上下文(DC)的使用
          四、實驗設備及工具(包括軟件調試工具)
          硬件:ARM 嵌入式開發(fā)板、用于ARM7TDMI 的JTAG 仿真器、PC 機Pentumn100 以

          軟件:PC 機操作系統(tǒng)win98、ARM SDT 2.51 集成開發(fā)環(huán)境、仿真器驅動程序、Source
          Insight 3.0、超級終端通訊程序、USB 下載程序
          五、實驗步驟
          1、在ARM SDT 2.51 中,使用實驗一中創(chuàng)建好的模板,新建一個項目work1。把操作
          系統(tǒng)的所需要的頭文件(*.h)和庫文件(*.alf)加入工程中。
          2、用Source Insight 3 創(chuàng)建一個工程,把work1 中的C 語言源文件文件加入。
          3、打開Main.c 文件,仔細閱讀Key_Scan_Task 函數(shù)——系統(tǒng)的鍵盤掃描函數(shù)。理解系
          統(tǒng)中Main_Task 任務消息隊列的創(chuàng)建和發(fā)送的過程。
          void Key_Scan_Task(void *Id)
          {
          U32 key;
          POSMSG pmsg;
          for (;;){
          key=GetKey();
          pmsg=OSCreateMessage(OSM_KEY,(key+1)0xffff,key>>16);
          if(pmsg)
          SendMessage(pmsg);
          }
          }
          4、在Main_Task 任務中加入代碼,實現(xiàn)。即:等待消息、處理(響應)消息、
          刪除消息。具體的流程圖如圖所示。

          提示:
          ⑴ 使用WaitMessage 接收消息,通常等待時間設置為無限長。
          ⑵ 如圖4-1 所示,系統(tǒng)的消息循環(huán)是一個無限循環(huán)。
          ⑶ 系統(tǒng)的消息結構定義如下:
          typedef struct {
          U32 Message;
          U32 WParam;
          U32 LParam;
          }OSMSG, *POSMSG;
          收到消息以后(即,WaitMessage 函數(shù)返回),通過判斷消息結構中Message 的成
          員來判斷消息類型。如果是鍵盤消息,則Message 的值為OSM_KEY,WParam 參數(shù)存
          儲的是按鍵的號碼,LParam 參數(shù)存儲的是同時系統(tǒng)按下的功能鍵(如果沒有,則為0)。
          ⑷ 開始等待下一條消息之前必須使用DeleteMessage 刪除消息,釋放系統(tǒng)的內(nèi)存
          空間。
          5、編寫鍵盤消息響應函數(shù),處理鍵盤的消息。當有鍵盤消息收到的時候,把按鍵號碼
          顯示在液晶屏上,同時,發(fā)送給PC 機的終端。
          提示:
          ⑴ 使用TextOut 函數(shù)在液晶屏的圖形方式下繪圖。此函數(shù)輸出的字符數(shù)組必須是
          基于雙字節(jié)Unicode 編碼的。
          ⑵ 使用Int2Unicode 函數(shù)完成整型變量到Unicode 字符串的轉換。
          ⑶ 通過Uart_SendByte 函數(shù)向串行口發(fā)送一個字節(jié)的數(shù)據(jù)
          6、用ARM SDT 2.5 編譯、下載并調試上述程序,檢查運行結果
          7、生成發(fā)行版本的.bin 文件,通過USB 下載到嵌入式開發(fā)板中,運行并檢查輸出結果。



          關鍵詞: 消息循環(huán)

          評論


          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();