ucGUI软件模拟示波器信号发生器笔记第二版

前几天看了一本书,叫《电子设计从零开始》,好像是清华大学出版社的,一个英国人做的序。看了几章,觉得太惭

愧了,作为电子类专业的学生,看来我真的试着多做做电路,提高一下实践水平。其中作者提到了一个音频的功率放大器,作者说这个电路如果能做到看懂的话,那么离能自己设计这个电路,起码要从事这类工作三年以上。我一看那复杂程度,直接晕了。

看来我还得好好努力,大四也得再把自己的知识扩充一下,没有硬件可以用Multism仿真一下嘛。先来基础的吧,那个电路实在有点复杂。

这几天又把信号发生器部分的软件部分做出来了,还是基于软件模拟,做硬件的同学生病,硬件部分还没有完成,而我对FPGA 部分和硬件电路方面不是很擅长只能是软件模拟一下。信号发生器部分是用FPGA来完成的,那么我的界面上只需示意性的显示一下是什么波形就行了,比如要产生方波,那么我在绘图区域画个方波就行,至于控件嘛,信号发生器应该包含,峰值,信号频率,占空比等的设定,由于觉得外加个键盘有点麻烦,硬件部分驱动可能又要费很大功夫,因此采用触屏按键,就是在面部上做个软键盘。

这个问题可把我难住了,原来计划是将峰值电压和频率都用EDIT控件来显示,但是无法做到用选择一个EDIT框,然后这时候按软键盘,然后将输入的数据显示在EDIT框中。因为,设定EDIT框的字符是需要EDIT框的句柄的,而只是点一下,让光标出现在那里就选择这个框,好像不行,就算是EDIT框的Notification Codes里有个WM_NOTIFICATION_CLICKED可以识别选中(但是要点两下),然后设置显示,但是这样并不是按一个按钮就显示一个字符。后来又想了想,我们要做的信号发生器输出的电压顶多不超过20V,还是用个SLIDER吧,于是这样一改,就基本实现我所要的功能了。

但是还有个问题,由于没有一本书对UCGUI的窗口机制等做出详细的介绍,只有手册,手册介绍的功能很简单(我觉得可能现在uCGUI现在的版本一直在更新,而这个公司是盈利的,后面就不可能完全的开源了,网上的源码也是以前的低版本和搞版本拼凑的,因此没有一本书对它的机制做一个详细的剖析),无法完成 退出一个界面,然后重新进入功能选择界面。我先是查了手册,尝试用个WM_HideWindow(),不行,然后又试了试将窗口删了再重新创建,还是不行,总之很多问题。归根结底还是对其

运行机制不了解,窗口消息是如何发送不清楚。

后面想了个笨办法,在一个while(1)循环里,建立了三个阻塞型的对话框,这样当选定功能后,结束这个对话框,然后进入实现

相应的功能的对话框,当推出后进入下一次循环,即又到了功能选择界面。

while(1)
{
	GUI_ExecDialogBox(_a_INIT_DialogCreate, GUI_COUNTOF(_a_INIT_DialogCreate), &_INIT_Callback, 0, 0, 0);
		
	   if(Id==GUI_ID_ARB)//这个是示波器的功能,Id是全局的变量
  {			
		GUI_Clear();
		arb_show=0;
	BackGround();
	GUI_ExecDialogBox(ARB_DialogCreate, GUI_COUNTOF(ARB_DialogCreate), &ARB_Callback, 0, 0, 0);
	
	
			

  }
  else if(Id==GUI_ID_SIGNAL)//这个是信号发生器的功能
  {
		GUI_Clear();
		BackGround();
		GUI_ExecDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), &_cbCallback, 0, 0, 0);	
  }

  GUI_Delay(1000);//根据手册里,GUI_Delay()函数起始页可以实现GUI_Exec()的功能,就是窗口重绘
}
运行效果如下







具体的工程我就不发了,因为现在还在完善中,这还很简陋。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值