• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > 测试测量 > 技术文章 > LabWindows/CVI虚拟仪器: 打字练习

LabWindows/CVI虚拟仪器: 打字练习

录入:edatop.com    点击:

4.4 打字练习

4.4.1 打字练习设计方法

一般的打字练习软件包含几大功能:中文打字练习、数字打字练习、英文打字练习、中文打字测速、英文打字测速等。如金山公司推出的金山打字通软件,是一款功能齐全、数据丰富、界面友好的、集打字练习和测试于一体的打字软件。打字练习可以循序渐进突破盲打障碍,短时间运指如飞,完全摆脱枯燥学习。

利用LabWindows/CVI 开发一款打字练习游戏,设计两个字母从屏幕上方自由下落,当按键与字母相同时该字母消失并重新生成新的下落字母,每成功击键一次,得分就加一分,通过速度调节可适当加速或降低下落速度,时间设置为60s, 当一次游戏结束时,给出一分钟内打字速度说明。读者通过游戏的编程可体会键盘类游戏设计方法,同时也能提高打字速度。游戏字母范围设置为a~z,亦可设置其他字符如0~9 和A~Z,满足实际键盘练习要求。

打字窗口背景用LED 控件,并配以底色,下落字符采用Text Message 控件,设置背景透明,与窗口背景能很好融合。下落字符通过伪随机数产生,下落的Left 属性是通过随机数确定的。

对于键盘类游戏设计,通常都会在回调函数响应EVENT_KEYPRESS 事件,也只有利用该事件才能获得击键字符。一般来说,用户按键事件,支持面板和绝大多数控件。当面板或控件处于激活状态时,通过回调函数接收键盘事件。在面板或控件回调函数中,eventData1 表示按键ASCII 码,eventData2 为指向存储ASCII 码值的指针。LabWindows/CVI 约定,modifier (修饰)键为Shift 和Alt 键,menu modifier 键为Ctrl 键。

大部分虚拟键在winuser.h 头文件中定义,并以VK_开头。LabWindows/CVI 对其进行了重新定义,如表4-7 所示。

表4-7 虚拟键表

常量名

常量值

说明

VAL_FWD_DELETE_VKEY

 0x0100

Del 键

VAL_BACKSPACE_VKEY

 0x0200

退格键

VAL_ESC_VKEY

 0x0300

ESC 键

VAL_TAB_VKEY

 0x0400

Tab 键

VAL_ENTER_VKEY

 0x0500

回车键

VAL_UP_ARROW_VKEY

0x0600

↑键

VAL_DOWN_ARROW_VKEY

0x0700

↓键

VAL_LEFT_ARROW_VKEY

0x0800

←键

VAL_RIGHT_ARROW_VKEY

0x0900

→键

VAL_INSERT_VKEY

0x0A00

Insert 键

VAL_HOME_VKEY

0x0B00

Home 键

VAL_END_VKEY

 0x0C00

End 键

VAL_PAGE_UP_VKEY

 0x0D00

Page Up 键

VAL_PAGE_DOWN_VKEY

0x0E00

Page Down 键

VAL_F1_VKEY

0x0F00

F1 键

VAL_F2_VKEY

0x1000

F2 键

VAL_F3_VKEY

0x1100

F3 键

VAL_F4_VKEY

0x1200

F4 键

VAL_F5_VKEY

0x1300

F5 键

VAL_F6_VKEY

0x1400

F6 键

VAL_F7_VKEY

0x1500

F7 键

VAL_F8_VKEY

0x1600

F8 键

VAL_F9_VKEY

0x1700

F9 键

VAL_F10_VKEY

0x1800

F10 键

VAL_F11_VKEY

0x1900

F11 键

VAL_F12_VKEY

0x1A00

F12 键

通常情况下,ASCII 码不能与虚拟键同时使用,但可与modifier 键组合使用。如:VAL_MENUKEY_MODIFIER | 'A'表示同时按下Ctrl + A 键。LabWindows/CVI 约定,键值可用4 字节整型量表示为0x00MMVVAA ,其中,MM 为modifier 键,VV 为虚拟键,AA 为ASCII 码键。

4.4.2 打字练习程序设计

(1)面板设计

编写一个打字练习程序,在面板中点击开始按钮进行一分钟计时,在此时间内测试打字的速度,测试结束时显示结果并提示是否继续练习。点击暂停按钮,暂停计时。程序运行时可根据实际情况对字母下落速度进行适当调整。屏幕最多可出现两个字母同时下落。两个定时器分别用于产生字符下落效果和速度测试计时。选中下落字符Text Message 控件,通过菜单Arrange→Control ZPanel Order→Move to Front 使其置于背景控件之上。面板设计如图4-11 所示,面板中主要控件属性设置如表4-8 所示。

edatop.com

图4-11 打字练习面板

 

表4-8 控件属性设置表

常量名

控件类型

控件的主要属性

PANEL

Panel

标题:打字练习回调函数:PanelCB

TEXTMSG

Text Message

默认值:a

TEXTMSG_1

Text Message

默认值:a

TIMER

 Timer

标题:timer1 回调函数:timer1 Interval:1.000

TIMER_2

 Timer

标题:timer2 回调函数:timer2 Interval:1.000

NUMERIC_SCORE

 Numeric

标题:得分

NUMERIC_SPEED

Numeric

标题:速度默认值:10

NUMERICTHERM_TIME

Numeric Thermometer

标题:时间

BACKGROUND

 LED

( 背景)

CMD_START

Command Button

标题:开始回调函数:start

CMD_PAUSE

 Command Button

标题:暂停回调函数:pause

(2)程序源代码

//头文件声明
#include
#include "toolbox.h"

#include
#include
#include "打字练习.h"
static int panelHandle;
//声明得分为全局静态变量
static int score;
//声明自定义初始化函数
int InitChar (int choice);
//主函数
int main (int argc, char *argv[])

if (InitCVIRTE (0, argv, 0) == 0)
return –1;
if ((panelHandle = LoadPanel (0, " 打字练习.uir", PANEL)) < 0)
return –1;
//初始化要显示的下落字符
InitChar (0);
InitChar (1);
//设置下落字符背景透明
SetCtrlAttribute (panelHandle, PANEL_TEXTMSG, ATTR_TEXT_BGCOLOR, VAL_TRANSPARENT);
SetCtrlAttribute (panelHandle, PANEL_TEXTMSG_1, ATTR_TEXT_BGCOLOR, VAL_TRANSPARENT);
DisplayPanel (panelHandle);
RunUserInterface ();
DiscardPanel (panelHandle);
return 0;

//面板回调函数
int CVICALLBACK PanleCB (int panel, int event, void *callbackData,
int eventData1, int eventData2)
{
char str[2];
switch (event)
{
//响应键盘事件
case EVENT_KEYPRESS:
str[0] =  '

点击浏览:矢量网络分析仪、频谱仪、示波器,使用操作培训教程

上一篇:LabWindows/CVI虚拟仪器之: 移动控件
下一篇:LabWindows/CVI虚拟仪器: 打蜜蜂

微波射频测量操作培训课程详情>>
射频和天线工程师培训课程详情>>

  网站地图