首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

自製嵌入式 GUI 架構 (3):LCD 模擬器獨立化與介面規範設計

     編輯:關於C語言

承接前文,將原本緊耦合於 μC/OS-GUI 的 LCD 模擬器剝離重構,形成獨立、可配置、介面清晰的模組,為自製 chGUI 奠基。本文詳述配置參數、對外介面、專案架構與輸入介面設計。

一、LCD 模擬器配置參數

沿用 μC/GUI 參數命名,便於移植既有專案:

宏定義預設值說明
LCD_XSIZE640LCD 寬度 (像素)
LCD_YSIZE480LCD 高度 (像素)
LCD_BITSPERPIXEL8單像素位元數(色深)
LCD_FIXEDPALETTE332RGB 位元分配:R=3, G=3, B=2
LCD_SWAP_RB1紅藍通道是否交換 (1=交換)

內部以 24-bit 真彩色 (R8G8B8) 渲染,自動依上述配置將索引值轉換為真彩色。

二、對外函數介面 (僅兩個)

// 在模擬器 LCD 上繪製單一像素
// x, y: 座標; Index: 依 LCD_FIXEDPALETTE 定義的色彩索引值
void LCDSIM_SetPixelIndex(int x, int y, int Index);

// 讀取指定座標的色彩索引值
int LCDSIM_GetPixelIndex(int x, int y);

設計考量:極簡介面降低耦合,上層 GUI 僅需實作邏輯座標到像素的映射,色彩空間轉換完全由模擬器內部處理。

三、chGUI 專案三層架構

chGUI_Project/
├── LCD_SIM/          # LCD 模擬器 (不需修改,僅配置)
│   ├── myType.h      # 通用型別定義 (供 chGUI 使用)
│   └── convcolor/    # 從 μC/GUI 移植的色彩轉換模組
├── chGUI/            # 核心 GUI 庫 (主要開發區)
│   └── ...           # 視窗管理、控件、佈局、事件分派等
└── Application/      # 應用層 (測試程式、產品專案)
    └── main.c

convcolor 現階段歸屬模擬器,未來若 chGUI 內建色彩管理可再遷移。

四、輸入介面 (鍵盤/觸控)

// 讀取按鍵:0=無按鍵, 非0=鍵值
int CXM_GetKey(void);

// 讀取觸控狀態:0=無觸控, 非0=有觸控
// pState 輸出座標 (GUI_PID_STATE 結構)
int CXM_TOUCH_GetState(GUI_PID_STATE *pState);

已知限制:無事件佇列緩衝,高頻輸入可能丟失;對目前測試層級應用足夠,量產階段需加入環狀緩衝區。

心得

「把心裡清楚的架構用文字精準表達,比寫代碼難得多。致敬所有技術作家!」


本文為作者自製嵌入式 GUI 系列第三篇,持續更新中。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved