LabWindows/CVI虚拟仪器设计技术基本控件使用之:三态开关
鼠标双击事件 | |
EVENT_RIGHT_CLICK | 鼠标右击事件 |
EVENT_MOUSE_MOVE | 鼠标移动事件 |
EVENT_LEFT_MOUSE_UP | 鼠标左击释放事件 |
EVENT_RIGHT_MOUSE_UP | 鼠标右击释放事件 |
1.2.2 三态开关程序设计
(1)面板设计
利用Numeric Slide 控件编写一个利用三态开关进行电压正负转换程序,当三态开关处于中间位置(关)时,电源电压为0V,当三态开关处于上位(开+)时,电源电压为+5V ,当三态开关处于下位(开–)时,电源电压为–5V,并且开关状态的操作与电路状态变化实时关联,实现联动。其中,三态开关采用经典形式控件,即在面板上右击弹出快捷菜单,选择Classic-Style Controls→Numeric→Vertical Slide ,利用Picture Ring 控件显示电路状态图,双击该控件,修改属性Picture Ring→Image/Value Pairs… ,通过"Load Image… "按钮选择图像,如图1-3 所示。面板设计如图1-4 所示,面板中主要控件属性设置如表1-9 所示。
图1-3 Picture Ring 控件的图像/数值对话框
图1-4 三态开关面板
表1-9 控件属性设置表
常量名 | 控件类型 | 控件的主要属性 |
PANEL | Panel | 标题:三态开关回调函数:PanelCB |
SWITCH | Numeric Slide | 标题:开关状态回调函数:onoff Range Values:0~2 Show/Hide Parts:No Markers 、No Ticks 、No Fill |
PICTURERING | Picture Ring | 标题:电路状态 |
(2)程序源代码
//头文件声明
#include <cvirte.h>
#include <userint.h>
#include "三态开关.h"
static int panelHandle;
//主函数
int main (int argc, char *argv[])
{
if (InitCVIRTE (0, argv, 0) == 0)
return –1; /* out of memory */
if ((panelHandle = LoadPanel (0, " 三态开关.uir", PANEL)) < 0)
return –1;
DisplayPanel (panelHandle);
RunUserInterface ();
DiscardPanel (panelHandle);
return 0;
//面板回调函数
int CVICALLBACK PanelCB (int panel, int event, void *callbackData,
int eventData1, int eventData2)
{
switch (event)
{
case EVENT_CLOSE:
QuitUserInterface (0);
break;
}
return 0;
}
//开关状态按钮
int CVICALLBACK onoff (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
int value;
switch (event)
{
//响应事件
case EVENT_VAL_CHANGED:
// 获得开关状态值
GetCtrlVal (panelHandle, PANEL_SWITCH, &value);
// 设置电路状态图片框内容
SetCtrlVal (panelHandle, PANEL_PICTURERING, value);
break;
}
return 0;
}
3:程序注释
① GetCtrlVal 函数获得控件值。函数原型为:
int GetCtrlVal (int Panel_Handle, int Control_ID, void *Value);
*Value :控件值。其声明的数据类型需要与控件的数据类型匹配。
② EVENT 事件
对开关状态按钮回调函数onoff 而言,可以采用EVENT_COMMIT、EVENT_LEFT_CLICK 或EVENT_VAL_CHANGED 等EVENT 事件,但EVENT_COMMIT 、EVENT_LEFT_CLICK 只能是鼠标事件完成后(鼠标按键释放后)才响应此事件,而EVENT_VAL_CHANGED 则当三态开关值改变时立即响应,与前两个事件相比,不存在时间上的延迟,鼠标操作与图像显示能保持一致。
(4)运行效果图
点击工具栏中的Debug Project 按钮,程序开始运行,其效果如图1-5 所示。
图1-5 运行效果图
LabWindows CVI 控件 三态开关 相关文章:
- 用于雷达测试和验证的自动化测试设备(05-15)
- 基于LabWindows的录波分析仪的设计(03-01)
- LabWindows/CVI虚拟仪器设计技术基本控件使用之: Tab 控件(11-13)
- LabWindows/CVI虚拟仪器设计技术场景与游戏设计之:时钟制作(11-13)
- LabWindows/CVI虚拟仪器设计技术场景与游戏设计之: 下雪场景(11-13)
- LabWindows/CVI虚拟仪器设计技术基本控件使用之:回调函数(11-13)