烘培是什么意思| 逍遥丸配什么治失眠| 两鬓斑白是什么意思| 梦见偷玉米是什么意思| 今天是什么年| 韧带损伤挂什么科| 六味地黄丸有什么用| 长焦镜头是什么意思| 孺子可教什么意思| 孕妇手肿是什么原因| 门槛是什么意思| 游离是什么意思| 不老莓是什么| 慢性前列腺炎有什么症状| 交杯酒是什么意思| 桃胶有什么功效| 血清肌酐高说明什么问题| 头骨凹陷是什么原因| 什么的东西| 沉淀是什么意思| 疱疹吃什么药好得快| 吃了安宫牛黄丸要禁忌什么不能吃| 危险期是什么时候| 吃什么避孕药可以推迟月经| 酸是什么| 沙僧是什么动物| 驴血为什么是白色的| 女人眉尾有痣代表什么| 芒果不能和什么一起吃| 日本为什么偷袭珍珠港| 乳腺结节不能吃什么| 癌胚抗原是什么意思| 女人喝黄芪有什么好处| 芪明颗粒主治什么病| 炸粉是什么粉| 高压高低压正常是什么原因| 异位胰腺是什么意思| 嘴唇有黑斑是什么病| cooh是什么基| 02年的属什么| 异常出汗是什么原因| 人活着有什么意思| 6.30是什么星座| 什么是汛期| 喉咙痛吃什么药好| 多汗症挂什么科| 咳嗽变异性哮喘吃什么药| 脚肿是什么原因引起的| 郁结是什么意思| 什么也不懂| 肩胛骨疼痛挂什么科| 李子有什么功效与作用| 熬夜有什么危害| 手脱皮用什么药膏最好| 孕妇吃什么是补铁的| 外阴皮肤痒是什么原因| 心电图pr是什么意思| 左眼皮跳代表什么| 吃辣流鼻涕是什么原因| 什么药治灰指甲最有效| 背信弃义是什么意思| 指甲月牙代表什么| 肝内小钙化灶是什么意思| 养流浪猫需要注意什么| 无花果吃多了有什么坏处| 音译是什么意思| 伦琴是什么单位| 茗字五行属什么| 晒单是什么意思| 安全套是什么| 为什么叫川普| 宫颈光滑说明什么| 相亲第一次见面送什么礼物好| 宾字五行属什么| 95属什么生肖| 5月9号是什么星座| 下半年有什么节日| 脚底痛是什么原因| 早上口干舌燥是什么原因| 贺涵为什么会爱上罗子君| 咳嗽吃什么水果| 巴基斯坦是什么人种| 做空什么意思| 肝浸润是什么意思| 乳腺增生挂什么科| 右下腹疼痛挂什么科| 豆蔻年华什么意思| 什么东西人们都不喜欢吃| 今天冬至吃什么| nmr是什么意思| 低密度是什么意思| 嘴唇没有血色是什么原因| 子宫内膜息肉样增生是什么意思| 戒指上的s925是什么意思| 颈椎曲度变直是什么意思| 食管炎是什么原因引起的| lov是什么意思| 释然什么意思| 尿碘是检查什么的| 江小白是什么酒| 遂什么意思| 胎儿头偏大是什么原因| 沙悟净的武器叫什么| 济公属什么生肖| 什么颜色代表友谊| 二甲双胍什么时候吃| 亚瑟士和鬼冢虎的区别是什么| 鸡犬不宁是什么生肖| 西安五行属什么| 小儿流清鼻涕吃什么药效果好| 吃什么尿酸降得快| pda医学上是什么意思| 黄体中期是什么意思| 白带多要吃什么药| 录取线差是什么意思| 板栗不能和什么一起吃| 月字旁的有什么字| 榴莲什么时候吃是应季| 后背疼痛什么原因| 鱼非念什么| 做梦梦到吵架是什么意思| 鸟飞进家里是什么预兆| 辽国是现在的什么地方| 葡萄糖粉适合什么人喝| der是什么意思| 怀孕胸部会有什么反应| 毕罗是什么食物| 哮喘病有什么症状| 贝壳是什么垃圾| 天蝎座男生喜欢什么样的女生| 什么是腕管综合征| 什么是偏印| 切除子宫对身体有什么伤害| 喝酒之前吃什么保护胃| 卤牛肉用什么部位| 产妇吃什么好| 丰衣足食是什么意思| 图例是什么| 芒果不能和什么水果一起吃| 我还是什么| 女孩子命硬有什么表现| 3个火读什么| 外围是什么意思| 空气净化器有什么作用| 炒菜什么油最好| md是什么学位| 撸管什么意思| 头皮屑多是什么原因怎么去除| 鸡的五行属什么| 脾虚生痰吃什么中成药| 家里为什么会有蟑螂| 怀孕了为什么还会出血| 6月26号是什么星座| 办居住证需要什么| 粉尘作业时必须佩戴什么口罩| 经常掏耳朵有什么危害| 阴道杆菌是什么意思| 黄曲霉素是什么| dream car是什么意思| 孕晚期吃什么长胎不长肉| 脸上有痣去医院挂什么科| 乳腺瘤不能吃什么| 提前吃什么药喝酒不醉| 身体皮肤痒是什么原因| 白咖啡是什么| 仁慈是什么意思| 火花是什么生肖| 胆汁淤积吃什么药| 汗青是什么意思| 放屁不臭是什么原因| 手术拆线挂什么科| kkkk是什么意思| 骨癌有什么症状有哪些| 吃了榴莲不可以吃什么| 黄瓜和青瓜有什么区别| 送钱包的寓意是什么| 桐字五行属什么| 肌肉抖动是什么原因| 挫伤用什么药| 美国为什么有两块土地| 痛经 吃什么| 男人后背有痣代表什么| syphilis是什么意思| 寄什么快递最便宜| 急性肠胃炎用什么药| 5月24号是什么星座| 带状疱疹什么不能吃| 5月份是什么星座| 推辞是什么意思| 耳朵挂什么科| 经常不吃晚饭对身体有什么影响| 摆地摊卖什么最赚钱而且很受欢迎| 美国绿卡有什么好处| 姓叶的男孩取什么名字好| 久卧伤什么| 什么叫焦虑症| 大脖子病有什么症状| 什么叫排卵期| 尿酸碱度是什么意思| 儿童割包皮挂什么科| 11.2是什么星座| 胃酸是什么| swan什么意思| 公主是什么意思| 吐黄水是什么原因| 葛粉吃了有什么好处| 胃疼胃胀吃什么药好| 魂牵梦绕是什么意思| 卵黄囊是什么| 国家能源局是什么级别| 吃栗子有什么好处| 咳嗽吃什么菜好| 当所有的人离开我的时候是什么歌| 幽门螺杆菌感染有什么症状和表现| 指甲变形是什么原因| 清心寡欲什么意思| 喉炎是什么原因引起的| 谷丙转氨酶是检查什么的| 奶油奶酪可以做什么| 九牛一毛什么意思| 日本料理都有什么菜| 惭愧的意思是什么| 大侠是什么意思| 属马的和什么属相最配| 心塞是什么意思| 城五行属什么| 眼睛为什么会痛| bv是什么牌子| 公积金缴存基数什么意思| 三观不合是什么意思| 银屑病吃什么食物最好| 狗狗吃什么| 白头翁是什么生肖| 来例假头晕是什么原因| 有才是什么意思| 排卵试纸什么时候测最准| 艾滋病早期有什么症状| 儿童乘坐飞机需要什么证件| 看病人买什么花合适| 唯我独尊指什么生肖| 玫瑰代表什么| 什么花没有叶子| 挂钩疼挂什么科| 心里恶心是什么原因| 维和部队是干什么的| 主理人什么意思| 什么是三好学生| 小猫来家里有什么预兆| 农历3月是什么月| 吃什么食物治便秘| 黛力新是什么药| r的平方是什么意思| 知我者非你也什么意思| 凝血是什么意思| 4月18号是什么星座| 健身hit什么意思| 口中发甜是什么原因| 文科和理科有什么区别| 拉新是什么意思| 蒲公英可以和什么一起泡水喝| 三伏的伏是什么意思| 牛欢喜是什么| 海棠花的花语是什么| 长沙为什么叫星城| 百度

新闻中心

EEPW首页 > 消费电子 > C语言嵌入式系统编程修炼之键盘操作篇

检察机关决定逮捕漳州人大常委会原副主任黄舜斌

——
作者: 时间:2025-08-05 来源: 收藏
百度 但毫无疑问,作为一款汽车而言,优秀的驾乘表现才是收获的立足之本。

功能键的问题在于,用户界面并非固定的,用户功能键的选择将使屏幕画面处于不同的显示状态下。

处理功能键

  功能键的问题在于,用户界面并非固定的,用户功能键的选择将使屏幕画面处于不同的显示状态下。例如,主画面如图1:





图1 主画面

  当用户在设置XX上按下Enter键之后,画面就切换到了设置XX的界面,如图2:






图2 切换到设置XX画面

  程序如何判断用户处于哪一画面,并在该画面的程序状态下调用对应的功能键处理函数,而且保证良好的结构,是一个值得思考的问题。

  让我们来看看WIN32中用到的"窗口"概念,当消息(message)被发送给不同窗口的时候,该窗口的消息处理函数(是一个callback函数)最终被调用,而在该窗口的消息处理函数中,又根据消息的类型调用了该窗口中的对应处理函数。通过这种方式,WIN32有效的组织了不同的窗口,并处理不同窗口情况下的消息。

  我们从中学习到的就是:

  (1)将不同的画面类比为WIN32中不同的窗口,将窗口中的各种元素(菜单、按钮等)包含在窗口之中;

  (2)给各个画面提供一个功能键"消息"处理函数,该函数接收按键信息为参数;

  (3)在各画面的功能键"消息"处理函数中,判断按键类型和当前焦点元素,并调用对应元素的按键处理函数。

/* 将窗口元素、消息处理函数封装在窗口中 */
struct windows
{
 BYTE currentFocus;
 ELEMENT element[ELEMENT_NUM];
 void (*messageFun) (BYTE keyValue);
 …
};
/* 消息处理函数 */
void messageFunction(BYTE keyValue)
{
 BYTE i = 0;
 /* 获得焦点元素 */
 while ( (element [i].ID!= currentFocus)&& (i < ELEMENT_NUM) )
 
 /* "消息映射" */
 if(i < ELEMENT_NUM)
 {
  switch(keyValue)
  {
   case OK:
    element[i].OnOk();
    break;
   …
  }
 }
}

  在窗口的消息处理函数中调用相应元素按键函数的过程类似于"消息映射",这是我们从WIN32中学习到的。到了一个境界,很多东西都是相通的了。其它地方的思想可以拿过来为我所用,是为编程中的"拿来主"。

  在这个例子中,如果我们还想玩得更大一点,我们可以借鉴MFC中处理MESSAGE_MAP的方法,我们也可以学习MFC定义几个精妙的宏来实现"消息映射"。

处理数字键

  用户输入数字时是一位一位输入的,每一位的输入都对应着屏幕上的一个显示位置(x坐标,y坐标)。此外,程序还需要记录该位置输入的值,所以有效组织用户数字输入的最佳方式是定义一个结构体,将坐标和数值捆绑在一起:

/* 用户数字输入结构体 */
typedef struct tagInputNum
{
 BYTE byNum; /* 接收用户输入赋值 */
 BYTE xPos; /* 数字输入在屏幕上的显示位置x坐标 */
 BYTE yPos; /* 数字输入在屏幕上的显示位置y坐标 */
}InputNum, *LPInputNum;

  那么接收用户输入就可以定义一个结构体数组,用数组中的各位组成一个完整的数字:

InputNum inputElement[NUM_LENGTH]; /* 接收用户数字输入的数组 */
/* 数字按键处理函数 */
extern void onNumKey(BYTE num)
{
if(num==0|| num==1) /* 只接收二进制输入 */
{
 /* 在屏幕上显示用户输入 */
 DrawText(inputElement[currentElementInputPlace].xPos, inputElement[currentElementInputPlace].yPos, "%1d", num);
 /* 将输入赋值给数组元素 */
 inputElement[currentElementInputPlace].byNum = num;
 /* 焦点及光标右移 */
 moveToRight();
}
}  

  将数字每一位输入的坐标和输入值捆绑后,在数字键处理函数中就可以较有结构的组织程序,使程序显得很紧凑。

整理用户输入

  继续第2节的例子,在第2节的onNumKey函数中,只是获取了数字的每一位,因而我们需要将其转为有效数据,譬如要转为有效的XXX数据,其方法是:

/* 从2进制数据位转为有效数据:XXX */
void convertToXXX()
{
 BYTE i;
 XXX = 0;
 for (i = 0; i < NUM_LENGTH; i++)
 {
  XXX += inputElement[i].byNum*power(2, NUM_LENGTH - i - 1);
 }
}

  反之,我们也可能需要在屏幕上显示那些有效的数据位,因为我们也需要能够反向转:

/* 从有效数据转为2进制数据位:XXX */
void convertFromXXX()
{
 BYTE i;
 XXX = 0;
 for (i = 0; i < NUM_LENGTH; i++)
 {
  inputElement[i].byNum = XXX / power(2, NUM_LENGTH - i - 1) % 2;
 }
}

  当然在上面的例子中,因为数据是2进制的,用power函数不是很好的选择,直接用"<< >>"移位操作效率更高,我们仅是为了说明问题的方便。试想,如果用户输入是十进制的,power函数或许是唯一的选择了。

总结

  本篇给出了键盘操作所涉及的各个方面:功能键处理、数字键处理及用户输入整理,基本上提供了一个全套的按键处理方案。对于功能键处理方法,将LCD屏幕与Windows窗口进行类比,提出了较新颖地解决屏幕、键盘繁杂交互问题的方案。

  计算机学的许多知识都具有相通性,因而,不断追赶时髦技术而忽略基本功的做法是徒劳无意的。我们最多需要"精通"三种语言(精通,一个在如今的求职简历里泛滥成灾的词语),最佳拍档是汇编、C、C++(或JAVA),很显然,如果你"精通"了这三种语言,其它语言你应该是可以很快"熟悉"的,否则你就没有"精通"它们。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)


关键词: C语言 编程 嵌入式

评论


相关推荐

技术专区

关闭
rh血型是什么意思 臭鳜鱼是什么菜系 丞字五行属什么 脑梗输什么液效果最好 紧迫感是什么意思
一条线是什么意思 新生儿黄疸高有什么风险 屁多又臭是什么原因 如来佛祖和释迦牟尼是什么关系 高原反应吃什么药
咖啡对心脏有什么影响 带状疱疹是什么引起的 肾怕什么 扑热息痛又叫什么名 舌根白苔厚是什么原因
mid什么意思 樱桃红是什么颜色 aj是什么意思 尿酸高是什么原因造成的 大腿前侧肌肉叫什么
marmot什么牌子imcecn.com 一月份生日是什么星座hcv7jop6ns5r.cn 什么是人hcv8jop2ns7r.cn 艾斯挫仑是什么药dajiketang.com 迁移是什么意思hcv8jop7ns7r.cn
昏昏欲睡是什么意思hcv8jop9ns8r.cn 弯的直的什么意思hcv9jop3ns7r.cn cma检测是什么hcv8jop8ns0r.cn 奈何桥是什么意思hcv8jop6ns3r.cn 哀大莫过于心死是什么意思hcv8jop7ns1r.cn
9月24日是什么星座hcv9jop4ns7r.cn 脑梗输液用什么药hcv7jop9ns9r.cn 区级以上医院是什么意思hcv9jop1ns8r.cn 谈恋爱是为了什么hcv9jop6ns5r.cn 埃及艳后叫什么hcv8jop5ns2r.cn
流火是什么原因造成的hcv9jop8ns3r.cn 眼睛胀痛是什么原因hcv9jop0ns4r.cn 阴毛有什么用hcv8jop5ns3r.cn 半边脸肿是什么原因引起的hcv8jop5ns6r.cn ctp是什么意思hcv7jop6ns7r.cn
百度