1. 项目概述:双模式虚拟键盘的设计初衷
在工业控制、医疗设备和实验室仪器等人机交互场景中,经常需要根据不同的输入需求切换键盘模式。传统物理键盘无法动态适配这种需求,而触屏虚拟键盘又往往功能单一。这个LabVIEW虚拟键盘程序通过分离数字输入和字符串输入两种模式,实现了专业场景下的高效输入解决方案。
数字键盘采用矩阵式布局,优化了0-9数字、小数点及常用运算符的输入效率;字符串键盘则支持全字符集输入,并内置大小写切换功能。两种键盘通过前面板按钮一键切换,底层采用事件结构实现状态机逻辑,确保输入模式切换时不会丢失已输入内容。附带的示例程序演示了如何将键盘集成到数据采集、设备控制等典型LabVIEW应用中。
2. 核心架构设计
2.1 键盘界面布局方案
数字键盘采用4×4网格布局(如图1),包含:
- 0-9数字键(占10格)
- 小数点键(1格)
- 退格键(1格)
- 正负号切换键(1格)
- 确认键(1格)
- 清空键(1格)
字符串键盘采用QWERTY布局,额外增加:
- 中英文切换按钮
- 大小写锁定指示灯
- 特殊符号面板切换键
设计要点:所有按钮尺寸不小于60×60像素,符合Fitts' Law的人机交互原则。按键颜色通过属性节点动态绑定,按下时呈现高亮反馈。
2.2 数据流控制机制
采用生产者-消费者模式构建事件驱动架构:
labview复制While循环(生产者)→ 事件结构 → 队列 → While循环(消费者)
↑
用户界面事件
数字键盘和字符串键盘分别对应独立的事件分支,通过枚举常量控制当前激活的键盘模式。输入内容通过功能全局变量(Functional Global Variable, FGV)暂存,确保模式切换时不丢失数据。
3. 关键技术实现
3.1 输入模式切换逻辑
创建枚举类型"KeyboardMode"定义两种状态:
labview复制typedef enum {
NUMERIC_MODE = 0,
STRING_MODE = 1
} KeyboardMode;
通过值改变事件触发模式切换:
- 保存当前键盘的输入缓存到FGV
- 隐藏当前键盘前面板
