?? input_method.txt
字號:
//創建郵箱mbox_key_lcd計劃在鍵盤操作中實現
#include "lcd_debug.h"
//將LCD的顯示設置為輸入短消息的畫面
void enter_message_display()
{
LCD_clr(); //清屏,光標歸零復位
LCD_puts("TO:");
}
//下面五個函數用于五種字符類型地輸入
//在各個函數中,所輸入地字符追加在message_info->message的后面
unsigned char input_number(SHORT_MESSAGE message_info)
{
void *msg; //接收key任務(中斷)發送的void*數據
int receive; //由msg轉化得來
unsigned char i;
INT8U err;
while(1)
{
msg =OSMboxPend(mbox_key_lcd, 0, &err);
receive =*(char *)msg;
uart_put_char(receive % 128); //for debug
if(receive == MENU) //是否發送短消息,MENU鍵臨時用作發送鍵
return SEND_MESSAGE;
if(receive == '#') //是否切換輸入字符類型
return SWITCH_INPUT_TYPE;
if((receive == OUT_MENU) && (length > 0)) //刪除已輸入的字符,OUT_MENU也有退格鍵的功能
{
for(i=cursor; i<length-1; i++)
message_info->message[i] =message_info->message[i+1];
message_info->length--;
message_info->cursor--;
display_after_del();
}
if((receive == KEY_LEFT) && (message_info->cursor > 0))
{
(message_info->cursor)--;
dispaly_after_lr();
}
if((receive == KEY_RIGHT) && (message_info->cusor < message_info->length))
{
(message_info->cursor)++;
display_after_lr();
}
if((receive >= '0') && (receive <= '9'))
{
for(i=length; i>=cursor; i--)
message_info->message[i+1] =message_info->message[i];
message_info->message[cursor] =receive - '0';
(message_info->length)++;
(message_info->cursor)++;
display_after_wr();
}
//下面代表短消息長度已經達到最大值
//輸入左右鍵并不返回的含義:可能發送者要從短信中間刪除一些字符。
//當然直接按刪除鍵也可以,此時就不能滿足length最大的條件了,所以不予考慮。
//若不按左右鍵,只能按發送鍵才能解決問題。
if((length >= MAX_MESSAGE_LENGTH) && ((receive != KEY_LEFT) || (receive != KEY_RIGHT)))
return OUT_OF_RANGE;
}
}
//輸入法的主函數,處理所有的輸入
int * input_method_fun()
{
SHORT_MESSAGE message_info;
unsigned char type_select =1; //用于控制輸入什么類型的字符
unsigned char ret; //接收返回值,用于判斷是否切換輸入類型、退出輸入
unsigned char length; //保存短消息的長度
memset(message_info->message, 0, MAX_MESSAGE_LENGTH);
message_info->length =0;
message_info->cursor =0;
while(1)
{
type_select =type_select % 5;
switch(type_select) //依次:漢語、數字、大寫字母、小寫字母、標點
{
case 0:
display_which(0); //顯示現在輸入漢語
ret =input_chinese(message_info); //切換至輸入漢語的函數
break;
case 1:
display_which(1);
ret =input_number(message_info);
break;
case 2:
display_which(2);
ret =input_lowercase(message_info);
break;
case 3:
display_which(3);
ret =input_uppercase(message_info);
break;
case 4:
display_which(4);
ret =input_punctuation(message_info);
break;
default:
display_which(0);
ret =input_chinese(message_info);
return;
}
if(ret == SWITCH_INPUT_TYPE) //切換輸入類型
type_select++;
if(ret == OUT_OF_RANGE)
continue;
if(ret == EXIT_INPUT) //退出書寫,表示按發送鍵
break;
}
return message;
}
//對輸入的信息進行處理
void deal_with_message(int * message)
{
uart_put_str("shou dao");
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -