emWin(UCGUI)键盘输入(实体按键操作控件)

本期教程主要跟大家讲解键盘输入,这里我们通过开发板上面带的按键进行相关的操作,在后面会专门的做一期PS2键盘的教程。

描述

键盘输入设备使用ASCII字符编码,以便区分不同的字符。例如,键盘上只有一个“A”键,但大写的“A”与小写的“a”拥有不同的ASCII编码 (分别为0x41和0x61)

GUI_emWin 切换控件的焦点

起因

带键盘的嵌入式设备(工控面板、遥控器操作的界面)没有鼠标和触摸,或者触摸只是辅助——用户在对话框里填完一个编辑框,要靠按键跳到下一个控件。这就要求程序能控制“焦点”:焦点在哪个控件上,按键就作用在哪个控件上。emWin 对此有一套现成机制,这篇把机制和用法整理清楚。

UCGUN WM API 函数

基本函数

WM_CreateWindow() 创建一个窗口。
WM_CreateWindowAsChild() 创建一个子窗口。
WM_DeleteWindow() 删除一个窗口。
WM_Exec() 通过执行回调函数(所有工作)重绘有效窗口。
WM_Exec1() 通过执行一个回调函数(仅一个工作)重绘有效窗口。
WM_GetClientRect() 返回活动窗口的。
WM_GetDialogItem() 返回一个对话框项目(控件)的窗口句柄。
WM_GetOrgX() 返回活动窗口的原点 X 坐标。
WM_GetOrgY() 返回活动窗口的原点 Y 坐标。
WM_GetWindowOrgX() 返回一个窗口的原点 X 坐标。
WM_GetWindowOrgY() 返回一个窗口的原点 Y 坐标。
WM_GetWindowRect() 返回活动窗口的屏幕坐标。
WM_GetWindowSizeX() 返回一个窗口的水平尺寸(宽度)。
WM_GetWindowSizeY() 返回一个窗口的垂直尺寸(高度)。
WM_HideWindow() 使一个窗口不可见。
WM_InvalidateArea() 使显示屏的某些部分无效。
WM_InvalidateRect() 使一个窗口部分无效。
WM_InvalidateWindow() 使一个窗口无效。
WM_MoveTo() 设置一个窗口的坐标。
WM_MoveWindow() 移动一个窗口到另一个位置。
WM_Paint() 立即绘制或重绘一个窗口。
WM_ResizeWindow() 改变一个窗口尺寸。
WM_SelectWindow() 设置用于绘图操作的活动窗口。
WM_ShowWindow() 使一个窗口可见。

窗口管理器之回调机制

本期教程开始讲解STemWin的核心内容窗口管理器。通过这几期教程,大家应该明白最基本的窗口管理器知识。了解了这些基本的通信机制后,再学习控件的使用时,就会事半功倍。本期教程的内容主要来自官方手册,我这里只是将其总结一下,更详细的情况看英文版的手册。

BUTTON-按钮控件自定义回调函数,实现各种按钮效果

本章节为大家讲解按钮控件自定义回调函数,通过其回调函数就可以实现各种按钮效果。

初学者重要提示

1、很多时候,我们希望设计出不同效果的按钮出来,比如做一个音乐播放器界面将快进,快退,暂停,开始等都通过按钮来实现,这个时候时候按钮的自定义回调函数就派上用场了。

emWin 之 WM_SetCallback 创建回调函数

起因

用 emWin 的 MESSAGEBOX 时,默认的 OK 按键行为不一定满足需求——比如要在关闭前做确认、清理资源,或者像本文一样需要删除整个对话框,但又不可能去改 emWin 的库源码。emWin 提供的正式入口就是 WM_SetCallback():把窗口的消息处理函数换成自己的。

分享一种最简单的STemWin自定义控件实现方法

起因

STemWin 自带的控件(BUTTON、TEXT 之类)不能满足界面需求时,就得写自定义控件。官方的做法是参照 WIDGET_ 前缀的 demo:皮肤、通知、内存管理一套全带上,几百行起步,第一次照抄很容易迷路——分不清哪些是骨架必需、哪些是可选增强。于是有了这篇:把自定义控件精简到最小可用骨架。

操作系统发展史

什么是操作系统

可能很多人都会说,我们平时装的windows7 windows10都是操作系统,没错,他们都是操作系统。还有没有其他的?

想想我们使用的手机,Google公司的Android系统,Apple公司笔记本上的的MacOSX、IPhone的IOS,他们都是操作系统。

一张图看懂STM32芯片型号的命名规则

 意法半导体已经推出STM32基本型系列、增强型系列、USB基本型系列、增强型系列;新系列产品沿用增强型系列的72MHz处理频率。内存包括64KB到256KB闪存和 20KB到64KB嵌入式SRAM。新系列采用LQFP64、LQFP100和LFBGA100三种封装,不同的封装保持引脚排列一致性,结合STM32平台的设计理念,开发人员通过选择产品可重新优化功能、存储器、性能和引脚数量,以最小的硬件变化来满足个性化的应用需求。
  基本型:STM32F101R6 STM32F101C8 STM32F101R8 STM32F101V8 STM32F101RB STM32F101VB
  增强型:STM32F103C8 STM32F103R8 STM32F103V8 STM32F103RBSTM32F103VB STM32F103VE STM32F103ZE
STM32型号的说明:以STM32F103RBT6这个型号的芯片为例,该型号的组成为7个部分,其命名规则如下: