?? screensol.h
字號:
/******************************************************************************************
* 目的:顯示及人機交互模塊
* 功能:利用現有的位圖資源提供基本的圖形,菜單顯示
屏幕基本動作
屏幕緩存操作接口
* 模塊依賴:Screenpre.h Display.h Keyboard.h
* 思路日志:該模塊所需實現的功能可以理解為
1.該屏幕的主要用途為對16*16文字和8*6文字的顯示,對屏幕的控制以當前的一個字寬為單
位,對屏幕的控制流程理解為:[初始化屏幕并送入待顯示信息] -> [屏幕動作] ->
[響應一個用戶對屏幕的操作]。
2.屏幕動作的編寫
必須首先整理來自與屏幕的信息及元素:
人機交互的入口為 [鍵盤按鍵] 需要先整理出對屏幕產生有效影響的按鍵有哪些:
上鍵,下鍵,[NO]鍵,[YES]鍵。
然后根據這些按鍵對屏幕殘生的影響收集屏幕存在的元素,即對象體:
反顯光標,屏幕文字
再然后根據以上搜集的每一個元素針對按鍵有可能產生的動作編寫每一個對象的對象動作:
光標初始化及復位,光標上移,光標下移,光標左移,光標右移
屏幕文字初始化及復位,屏幕上翻屏,屏幕下翻屏
3.初始化屏幕的編寫
首先確定外部對屏幕所產生的所有需求,即需要多少種類型的屏幕邊框,此處對于屏幕需求
的分類有可能會隨著屏幕顯示方式而不斷改變,當前的理解有不確定性
4.Note 07.9.21 - 添加修改 ScreenAct()
該模塊實現的主要任務理解為將鍵盤和顯示驅動進一步封裝成 [屏幕動作] - ScreenAct()
屏幕動作的入口是 一個鍵盤按鍵, 所實現的過程是 依據該按鍵鍵值使屏幕作出相應的動
作 如:光標上下移動和翻屏, 實現完成后將返回一個當前已進行的動作。
流程例子:用戶按下上鍵 -> 判斷并使光標向上移動 -> 移動成功返回光標上移動作宏:
C_UP 移動不成功返回 屏幕空動作 W_NULL
5.Note 07.9.21 - 添加修改 UserRip()
返回當前屏對用戶有用的信息
******************************************************************************************/
#include "Display.h"
#include "Keyboard.h"
//////////////////////////////////////////////////////////////////////////
// Define of Screen Init
//////////////////////////////////////////////////////////////////////////
#define W_MENU 10 //菜單
#define W_TEXT 11 //文本
#define W_STAT 12 //提示信息
#define W_STREAM 13 //數據流特殊屏
#define W_INPUT 14 //數據選擇屏
//////////////////////////////////////////////////////////////////////////
// Define of Screen Action
//////////////////////////////////////////////////////////////////////////
#define W_NULL 0xff //當前沒有動作
#define W_UP 0xfe //屏幕上翻
#define W_DOWN 0xfd //屏幕下翻
#define C_UP 0xfc //光標上移
#define C_DOWN 0xfb //光標下移
#define W_OK 0xfa //屏幕確認
#define W_HELP 0xf9 //屏幕幫助
#define W_FINISH 0xf8 //輸入完畢
#define W_CANEL 0xf7 //取消出入
#define W_RETURN 0 //屏幕返回
//////////////////////////////////////////////////////////////////////////
/*
**-------------------------------------------------------------------------------------
** 初始化屏幕 - 添加菜單到屏幕
** 輸入:Wmode - 窗口類別
** 輸出:無
** 返回:添加成功標記
** 說明:
**-------------------------------------------------------------------------------------
*/
void ScreenInit( unsigned char Wmode );
/*
**-----------------------------------------------------------------------------------------
** 初始化屏幕 - 清除屏幕緩存
**-----------------------------------------------------------------------------------------
*/
void ClrBuf( );
/*
**-------------------------------------------------------------------------------------
** 初始化屏幕 - 添加菜單到屏幕
** 輸入:Mode - 文字寬度格式
** 輸出:無
** 返回:添加成功標記
** 說明:
**-------------------------------------------------------------------------------------
*/
void ScreenCHMode( unsigned char Mode );
/*
**-------------------------------------------------------------------------------------
** 初始化屏幕 - 添加菜單到屏幕
** 輸入:menu - 待顯示文本
Maxl - 文本行數
** 輸出:無
** 返回:添加成功標記
**-------------------------------------------------------------------------------------
*/
char AddMenu( unsigned char *Menu[], unsigned char Maxl );
/*
**-------------------------------------------------------------------------------------
** 初始化屏幕 - 添加新的字符串到屏幕緩存
** string:入口串
** 返回:當前最大行
**-------------------------------------------------------------------------------------
*/
unsigned char AddString( unsigned char *StringIn );
/*
**-------------------------------------------------------------------------------------
** 屏幕鍵盤
** 輸入:DigNum - 數據個數
** 輸出:
** 返回:無
** 說明:
**-------------------------------------------------------------------------------------
*/
void SetMaxDig( unsigned char DigNum );
/*
**-------------------------------------------------------------------------------------
** 屏幕動作 - 外部調用函數
** 輸入:無
** 輸出:*StartLine - 輸出當前屏幕起始行
*UserLine - 輸出當前屏幕光標所在行
** 返回:在當前屏幕模式下有效的操作和操作結果
** 說明:根據屏幕的初始化結果進行相應的屏幕動作并返回進行成功的屏幕動作宏
**-------------------------------------------------------------------------------------
*/
unsigned char ScreenAct( unsigned char *StartLine, unsigned char *UserLine );
/*
**-------------------------------------------------------------------------------------
** 屏幕動作 - 初始化光標
** 輸入:CursorMode - 初始化模式
** 輸出:無
** 返回:初始化成功標記
** 說明:在當前位置初始化光標,必須在屏幕初始化完成后進行
**-------------------------------------------------------------------------------------
*/
char CursorInit( char CursorMode );
/*
**-------------------------------------------------------------------------------------
** 屏幕動作 - 光標移動
** 輸入:Action - 光標動作宏
** 輸出:無
** 返回:移動成功標記
** 說明:根據當前需求編寫的光標移動動作,在模塊中將此動作結合按鍵響應完成當前屏幕的人機
交互過程
**-------------------------------------------------------------------------------------
*/
char CursorMove( char Action );
/*
**-------------------------------------------------------------------------------------
** 屏幕動作 - 文本移動
** 輸入:Action - 文本動作宏
** 輸出:無
** 返回:移動成功標記
** 說明:根據當前需求編寫的屏幕移動動作,在模塊中將此動作結合按鍵響應完成當前屏幕的人機
交互過程
**-------------------------------------------------------------------------------------
*/
char ScreenMove( char Action );
/*
**-------------------------------------------------------------------------------------
** 顯示驅動 - 設定當前顯示位置,光標寬度等于字寬
** 輸入:CursorX - 代表第幾列字符,0xff代表保持當前列
CursorY - 代表第幾行字符,0xff代表保持當前行
** 輸出:無
** 返回:
** 說明:
**-------------------------------------------------------------------------------------
*/
void SetCursor( unsigned char CursorX, unsigned char CursorY );
/*
**-------------------------------------------------------------------------------------
** 顯示驅動 - 設定當前的顯示顏色
** 輸入:NewColor - 代表顏色 0~255
** 輸出:無
** 返回:
** 說明:
**-------------------------------------------------------------------------------------
*/
void SetColor( unsigned char NewColor );
/*
**-------------------------------------------------------------------------------------
** 顯示驅動 - 在當前行輸出字符串
** 輸入:string - 輸入串
** 輸出:無
** 返回:
** 說明:
**-------------------------------------------------------------------------------------
*/
void PutStr( unsigned char *string );
/*
**-------------------------------------------------------------------------------------
** 顯示驅動 - 輸出當前屏幕
** 輸入:ShowMode - 顯示模式: 居中或起始輸出
** 輸出:無
** 返回:
** 說明:
**-------------------------------------------------------------------------------------
*/
void PutScreen( char ShowMode );
/*
**-------------------------------------------------------------------------------------
** 屏幕返回
** 輸入:無
** 輸出:
** 返回:外部需求的數據
** 說明:
**-------------------------------------------------------------------------------------
*/
unsigned char UserRep( );
//----------------------------------------------------------------- End Of File -------
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -