免费毕业论文--基于网络的虚拟仪器测试系统(一(6)
2013-06-08 02:45
导读:户的调制方式的判断,其中nID_Select_Modul保存的是用//户选择的调制方式的ID。通过GetCheckedRadioButton()函数获得。 switch(nID_Select_Modul)//对用户通过单选按钮选
户的调制方式的判断,其中nID_Select_Modul保存的是用//户选择的调制方式的ID。通过GetCheckedRadioButton()函数获得。
switch(nID_Select_Modul)//对用户通过单选按钮选择的调制参数的判断
{ case IDC_RADIO_BW://无调制情况
viPrintf(/*funcgen*/theApp.m_Session,"OUTPut:LOAD %s\n",m_nResistance);//输出端的设置
viPrintf(/*funcgen*/theApp.m_Session,"OUTPut:SYNC %s\n",m_nSignal);//设置同步信号
CheckWaveRadioButton();//这是一个自己定义的函数,对用户的波形的选择进行判断-将波形的字符串存储在m_nBaseShape中,该函数的具体代码将会在附录中给出。
//判断用户选择的波形是否是方波,并通过函数viPrintf来进行各种SCPI命令的执行
if(GetCheckedRadioButton(IDC_RADIO_SIN,IDC_RADIO_DC)==IDC_RADIO_FWAVE)
{ viPrintf(/*funcgen*/theApp.m_Session,"FUNC %s\n",m_nBaseShape);
viPrintf(/*funcgen*/theApp.m_Session,"FREQ %f\n",m_nFreq);
viPrintf(/*funcgen*/theApp.m_Session,"VOLT %f\n",m_nAmpl);
viPrintf(/*funcgen*/theApp.m_Session,"VOLT:OFFS %f\n",m_nOffs);
viPrintf(/*funcgen*/theApp.m_Session,"FUNC:SQU:DCYC %f\n",m_nDcycle);
}//判断用户选择的是否是任意波
else if(GetCheckedRadioButton(IDC_RADIO_SIN,IDC_RADIO_DC)==IDC_RADIO_ARBI)
{error=viPrintf(/*funcgen*/theApp.m_Session,"APPL:USER %f,%f,%f\n",m_nFreq,m_nAmpl,m_nOffs);
if(error!=VI_SUCCESS)
{error_handler(/*funcgen*/theApp.m_Session,error);
break;}
viPrintf(/*funcgen*/theApp.m_Session,"FUNC:USER%s\n",WaveForm.m_Arbitrary);
}
else
{error=viPrintf(/*funcgen*/theApp.m_Session,"APPL:%s %f,%f,%f\n",m_nBaseShape,m_nFreq,m_nAmpl,m_nOffs);//这里的参数需要用户自己添加
(科教范文网 fw.nseac.com编辑发布)
if(error!=VI_SUCCESS)
{ error_handler(/*funcgen*/theApp.m_Session,error);
break;}}
MessageBox("Successfully!");//给一个提示框--明示用户的操作
break;
以上只是无调制情况下的输出代码,而调幅、调频等的实现代码将会在附录给给出。
对仪器的编程中,首先是先打开跟资源管理器的会话,然后通过资源管理器会话来进一步打开与某一台仪器的会话(会话也就是与仪器进行通讯,所有被使用的仪器都需要建立连接,并且都要调用VISA函数viOpenDefaultRM来打开资源管理器,这个函数会初始化VISA系统,包括资源管理系统;如果在没有器件连接的情况下调用该函数,则在有器件连接上时又进行一次操作,则连接的器件是不被认识的;你必须关闭所有的资源管理器会话,并重新的打开才行);当结束访问之后需要对会话进行清除操作,调用函数viClose对资源会话和其他会话进行关闭。该操作会把所有分配给指定会话的数据结构资源进行释放操作。上面给出的是在用户配置好各种参数后的执行代码。然而,在自己的界面的设计过程中也给出了一些配置信息,比如,频率,幅值,偏移,占空比(其中对占空比也做了特别的处理,因为占空比参数只适合于方波,所以在选中其他波形的时候需要对该参数进行屏蔽,以防止用户的输入)。当用户选择调制方式的时候,会弹出对话框以提供用户的输入操作:
图3-10
可以看出在该界面中共有四种调制方式,也是最基本的调制方式。在弹出时,各个参数都有其初始值以方便用户。对于其中的数据的处理比较简单:通过VC的ClassWizard对界面中的各个控件进行变量的定义,以接收用户的数据的输入:
图3-11
中国大学排名
在程序的编写过程中也遇到了一些问题:譬如,多个单选按钮如何组合在一起,实现真正的单选;当用户选中一个按钮之后,如何对用户的选择进行判断,以正确的执行用户所需要的执行指令;各个功能模块之间如何的进行协调的工作等等。就拿单选按钮的实现来说,因为我的基本波形的选择设想是通过用户的选择(单选)来进行的,这样的设计直观且美观,符合人们的操作习惯。但是应该如何去实现呢?通过查找书本上介绍的例子,首先进行一些测试例子。测试通过之后,再在程序中进行运用。但是也会遇上这样那样的一些问题:例子中能进行正确的执行,但是移植到自己的程序中就不行了。(不过,我想说的一点是有许多书籍的内容是很垃圾的,程序不完整不说,而且还误人子弟)。我现在遇到的问题就是,已经将单选按钮组合在一起了,也能实现单选了,可是,单击的波形,与设计的并不一样,也就是各个单选按钮之间的功能出现了紊乱。而且还出现了跟另外一组的单选按钮出现了冲突。当时我就有点懵了。怎么会出现这样的情况呢??思