【二代示波器教程】第11章 示波器设计—功能模块划分

发布者:龙腾少年最新更新时间:2022-04-21 来源: eefocus关键字:功能模块  划分 手机看文章 扫描二维码
随时随地手机看文章

11.1  主界面上的五个按钮

为了方便各个功能的配置,主界面右侧做了五个按钮,用于实现五个不同功能的配置。

代码如下:


/* 创建需要的按钮*************************************************************/

 

hButton0 = BUTTON_Create(670, 40, 100, 44,GUI_ID_BUTTON0, WM_CF_SHOW);

 

BUTTON_SetText(hButton0, "Measure");

 

WM_SetHasTrans(hButton0);

 

WM_SetCallback(hButton0, _cbButton);

 

 

 

hButton1 = BUTTON_Create(670, 90-1, 100, 44,GUI_ID_BUTTON1, WM_CF_SHOW);

 

BUTTON_SetText(hButton1, "ADC");

 

WM_SetHasTrans(hButton1);

 

WM_SetCallback(hButton1, _cbButton);

 

 

 

hButton2 = BUTTON_Create(670, 140-2, 100, 44,GUI_ID_BUTTON2, WM_CF_SHOW);

 

BUTTON_SetText(hButton2, "DAC");

 

WM_SetHasTrans(hButton2);

 

WM_SetCallback(hButton2, _cbButton);

 

 

 

hButton3 = BUTTON_Create(670, 190-3, 100, 44,GUI_ID_BUTTON3, WM_CF_SHOW);

 

BUTTON_SetText(hButton3, "Math");

 

WM_SetHasTrans(hButton3);

 

WM_SetCallback(hButton3, _cbButton);

 

 

 

hButton4 = BUTTON_Create(670, 240-4, 100, 44,GUI_ID_BUTTON4, WM_CF_SHOW);

 

BUTTON_SetText(hButton4, "Settings");

 

WM_SetHasTrans(hButton4);

 

WM_SetCallback(hButton4, _cbButton);

 


这些按钮都是创建在桌面窗口上的,点击这些按钮后,会触发桌面窗口回调函数中的按钮消息,从而弹出相应的设置对话框:


 


/*

 

*********************************************************************************************************

 

*    函 数名: _cbBkWin

 

*    功能说明: 桌面窗口的回调函数

 

*    形    参:pMsg

 

*    返 回值: 无

 

*********************************************************************************************************

 

*/

 

static void _cbBkWin(WM_MESSAGE * pMsg)

 

{

 

     intNCode, Id;

 

    

 

     switch(pMsg->MsgId)

 

     {

 

        

 

         /* 桌面背景重绘 */

 

         caseWM_PAINT:

 

              DSO_Init(0);                    

 

              break;

 

 

 

         /* 通过设置触发标志来更新一次触发游标的显示*/

 

         caseWM_TIMER:

 

              g_Flag->ucWaveRefresh= 1;

 

              //WM_RestartTimer(pMsg->Data.v,1000);        

 

              break;

 

             

 

         caseWM_NOTIFY_PARENT:

 

              Id= WM_GetId(pMsg->hWinSrc);

 

              NCode= pMsg->Data.v;       

 

              switch(Id)

 

              {

 

                    /* 按钮0:打开Measure对话框 */

 

                    case GUI_ID_BUTTON0:

 

                       switch(NCode)

 

                       {

 

                            case WM_NOTIFICATION_RELEASED:

 

                                DSO_CreateMeasureDlg();

 

                                break;

 

                       }

 

                       break;

 

                      

 

                    /* 按钮1:打开ADC对话框 */

 

                    case GUI_ID_BUTTON1:

 

                       switch(NCode)

 

                       {

 

                            case WM_NOTIFICATION_RELEASED:

 

                                DSO_CreateAdcDlg();

 

                                break;

 

                       }

 

                       break;

 

                  

 

                   /* 按钮2:打开DAC对话框 */

 

                    case GUI_ID_BUTTON2:

 

                       switch(NCode)

 

                       {

 

                             case WM_NOTIFICATION_RELEASED:

 

                                DSO_CreateDacDlg();

 

                                break;

 

                       }

 

                       break;

 

                  

 

                   /* 按钮3:打开Math对话框 */

 

                    case GUI_ID_BUTTON3:

 

                   switch(NCode)

 

                   {

 

                        caseWM_NOTIFICATION_RELEASED:

 

                            DSO_CreateMathDlg();

 

                            break;

 

                   }

 

                       break;

 

                      

 

                    /* 按钮4:打开Settings对话框 */

 

                    case GUI_ID_BUTTON4:

 

                   switch(NCode)

 

                   {

 

                        caseWM_NOTIFICATION_RELEASED:

 

                            DSO_CreateSettingsDlg();

 

                            break;

 

                   }

 

                       break;

 

              }

 

              break;

 

             

 

         default:

 

              WM_DefaultProc(pMsg);

 

     }

 

}


下面分别将这五个对话框所实现的功能为大家做个讲解。


11.2  Measure测量功能

测量界面的效果如下:

当前二代示波器仅支持打对勾的这六种测量值,分别是频率,峰峰值,最大值,最小值,均方根和平均值。其它的测量选项还不支持,勾选或者取消对主界面没有影响。而支持的这六个测量功能取消勾选的话,主界面对应的数值将停止更新,勾选上将继续更新。


测量对话框的创建也比较简单,采用非阻塞方式创建:


/*

 

*********************************************************************************************************

 

*    函 数名: DSO_CreateMeasureDlg

 

*    功能说明: 创建测量对话框

 

*    形    参:无          

 

*    返 回值: 无

 

*********************************************************************************************************

 

*/

 

WM_HWIN DSO_CreateMeasureDlg(void)

 

{

 

     WM_HWINhWin;

 

 

 

     hWin =GUI_CreateDialogBox(_aDialogCreateMeasure,

 

                               GUI_COUNTOF(_aDialogCreateMeasure),

 

                                _cbDialogMeasure,

 

                                WM_HBKWIN,

 

                                0,

 

                               0);

 

     returnhWin;

 

}


11.3 ADC电压测量功能

 

ADC电压测量功能的界面比较简单,就是显示ADC2所采集的电压,并显示电压曲线。

ADC电压测量对话框的创建也比较简单,采用非阻塞方式创建:


/*

 

*********************************************************************************************************

[1] [2]
关键字:功能模块  划分 引用地址:【二代示波器教程】第11章 示波器设计—功能模块划分

上一篇:【二代示波器教程】第15章 FreeRTOS操作系统版本二代示波器实现
下一篇:开关电源怎么测试纹波_示波器测试开关电源纹波的方法

推荐阅读最新更新时间:2024-11-10 23:17

编程点滴:AVR UART I/O 功能模块
本程序实现AVR设备UART端口 输入/回显/格式化输出 功能,由此可以通过PC机终端软件与设备直接交互。 程序有参考Samsung S3C2440库文件。 程序组成:测试程序 main.c ,功能模块 uart.c 及其头文件 uart.h 。 main.c /* ****************************************************** * File Name: main.c * Function: AVR UART I/O 功能模块 * Description: 实现UART输入/回显/格式化输出功能, 方便程序调试 * Authon & Date: Joshua Chan, 2
[单片机]

推荐帖子

CE6.0上的EDB数据库可以和服务器的数据库同步吗?请问?
如题谢谢各位大师指点迷津。如果微软没做同步功能,那么该如何让它和服务其中数据库同步呢?CE6.0上的EDB数据库可以和服务器的数据库同步吗?请问?请问谁用过SyncFramework?没有用过SyncFramework,帮顶。呵呵,我也来帮顶一下。。我自己再定一下是不是MicrosoftActiveSync?不是ComparingEDBwithSQLServerCEEDBisbasedontheMicrosoftSQLServer2000
hd12 嵌入式系统
【入门贴】MSP430集成开发环境科普
在接触到一类MCU的时候我们都很关心开发MCU所需要的开发环境,论坛上也常用网友问到,在这篇帖子里我介绍下MSP430常用的集成开发环境,主要供入门的坛友们有个简单的了解。目前最常用的两个集成开发环境,IARForMSP430和CCS。简单介绍下IARSystem公司 IAR是全球领先的嵌入式系统开发工具和服务的供应商。公司成立于1983年,迄今已有27年,提供的产品和服务涉及到嵌入式系统的设计、开发和测试的每一个阶段,包括:带有C/C++编译器和调试
wstt 微控制器 MCU
千奥行车记录仪拆解-通信模块
2015年1月花费500+购入一款行车记录仪,千奥出品。说起行车记录仪,核心功能就是好的广角镜头通过系统写入TF卡,附加功能就是硬按键加显示屏。但是我购买可选附带电池,或者通信模块,我选择的是后者。后来不知怎的无法通过微信公众号或网页读取位置了,然后清晰度也不怎样,关键是太容易出发锁定状态了,所有录像都属于紧急视频,不允许写入新视频了。so去年就换成了小米的行车记录仪。现在来拆解下千奥出品的这款行车记录仪,鉴赏下。首先是产品外观图,很可爱,鸭子的嘴巴就是镜头。发现主机连接过来的只有
yilonglucky 以拆会友
手把手教你开关电源PCB排版
手把手教你开关电源PCB排版
czf0408 电源技术
EasyARM-RT1052测评汇总
测评活动:https://bbs.eeworld.com.cn/elecplay/content/99测评分享:@ID.LODA【EasyARM-RT1052测评】+开箱体验【EasyARM-RT1052测评】+FreeRTOS的移植使用【EasyARM-RT1052测评】+GPIO和外部中断的使用【EasyARM-RT1052测评】+PIT定时功能【EasyARM-RT1052测评】+串口空闲接收实现modbushost【EasyARM-R
okhxyyo NXP MCU
CMOS集成电路设计手册
CMOS集成电路设计手册CMOS集成电路设计手册赞一个非常好的电子书,英文原版,下载保存了,谢谢分享
liva2022 电路观察室
小广播
最新测试测量文章
换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved