毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 论文 >> 正文

VC++单片机虚拟仪器测试系统 第12页

更新时间:2010-5-5:  来源:毕业论文
VC++单片机虚拟仪器测试系统 第12页
 {error=viPrintf(/*funcgen*/theApp.m_Session,"APPL:%s %f,%f,%f\n",m_nBaseShape,m_nFreq,m_nAmpl,m_nOffs);//这里的参数需要用户自己添加
        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
在程序的编写过程中也遇到了一些问题:譬如,多个单选按钮如何组合在一起,实现真正的单选;当用户选中一个按钮之后,如何对用户的选择进行判断,以正确的执行用户所需要的执行指令;各个功能模块之间如何的进行协调的工作等等。就拿单选按钮的实现来说,因为我的基本波形的选择设想是通过用户的选择(单选)来进行的,这样的设计直观且美观,符合人们的操作习惯。但是应该如何去实现呢?通过查找书本上介绍的例子,首先进行一些测试例子。测试通过之后,再在程序中进行运用。但是也会遇上这样那样的一些问题:例子中能进行正确的执行,但是移植到自己的程序中就不行了。(不过,我想说的一点是有许多书籍的内容是很垃圾的,程序不完整不说,而且还误人子弟)。我现在遇到的问题就是,已经将单选按钮组合在一起了,也能实现单选了,可是,单击的波形,与设计的并不一样,也就是各个单选按钮之间的功能出现了紊乱。而且还出现了跟另外一组的单选按钮出现了冲突。当时我就有点懵了。怎么会出现这样的情况呢??思索了蛮久,使自己对VC中的resource.h文件产生了怀疑:因为该文件中都是一些关于控件ID资源的定义。是不是ID资源冲突了呢?!通过自己的仔细的研究和思索,发现了另外一个问题:在该文件中有许多自己并没有使用到的空闲ID,怎么会这样呢?原来是自己在设计界面的过程中,经常的添加和删除控件,使得有些控件ID并没有随着自己对控件的删除而删除。故而遗留了下来!!于是我就将其全部的进行删除。感觉ID就干净了许多。但是,前面的问题还没有解决啊!于是我对单选按钮的ID进行的排序和分析,发现冲突的按钮的ID的顺序也是交叉的。并没有顺序的进行ID的定义。我怀疑是这个原因,于是对混乱的ID进行的重新的排序。并将不同的两组ID进行了分离。重新运行程序,结果一切OK!
 图3-12
象这样的问题,如果没有碰上过,也是有点不知所措的。这是我的小小的心得哦!!
3.2.4函数信号发生器的程序的调试
在调试前,先进行IO Config的配置,并通过VISA 助手进行仪器的连接的测试,通过之后,开始调试程序。
我进行分块的调试:首先是调试产生不同波形的功能块是否正常。

图3-13
相应的程序如下:
//******以下是对单选按钮的处理函数,通过单击按钮来进行相应的操作
void CGENERATER::OnRadioSin()
{  m_nEdit_Dcycle.EnableWindow(FALSE);}
void CGENERATER::OnRadioTriangle()
{  m_nEdit_Dcycle.EnableWindow(FALSE);}
void CGENERATER::OnRadioFwave()
{  m_nEdit_Dcycle.EnableWindow(TRUE);}
void CGENERATER::OnRadioRamp()
{  m_nEdit_Dcycle.EnableWindow(FALSE);}等等//********************************************以下是对基本波形选择处理函数
void CGENERATER::CheckWaveRadioButton()
{ int nID_SelectWaveF;
 nID_SelectWaveF=GetCheckedRadioButton(IDC_RADIO_SIN,IDC_RADIO_DC);
 switch(nID_SelectWaveF)
 {//添加处理代码--即是对波形参数赋值
 case IDC_RADIO_SIN:m_nBaseShape="SIN";break;
 case IDC_RADIO_TRIANGLE:m_nBaseShape="TRI";break;
   case IDC_RADIO_FWAVE:m_nBaseShape="SQU";break;
 case IDC_RADIO_RAMP:m_nBaseShape="RAMP";break;
 case IDC_RADIO_ARBI:m_nBaseShape=m_nArbdlg.m_nSet_Arbitrary;break; 
 case IDC_RADIO_NOISE:m_nBaseShape="NOISE";break;
 case IDC_RADIO_PULSE:m_nBaseShape="PULSE";break;
 case IDC_RADIO_DC:m_nBaseShape="DC";break;
 default:return;}}
上面是对用户的选择进行的变量的赋值以备后用。
下面就是产生各种函数的部分(部分代码):
viPrintf(/*funcgen*/m_Session,"OUTPut:LOAD %s\n",m_nResistance);//输出端的设置
viPrintf(/*funcgen*/m_Session,"OUTPut:SYNC %s\n",m_nSignal);//设置同步信号
注意:下面这个是一个子程序,用来对用户的选择进行判断,并将用户选择的波形的相应的参数传递给一个字符串变量中。
CheckWaveRadioButton();//波形选择的判断--将波形的字符串存储在m_nBaseShape中
//**********************************判断用户选择的波形是否是方波
 if(GetCheckedRadioButton(IDC_RADIO_SIN,IDC_RADIO_DC)==IDC_RADIO_FWAVE) {  viPrintf(/*funcgen*/m_Session,"FUNC %s\n",m_nBaseShape);
  viPrintf(/*funcgen*/m_Session,"FREQ %f\n",m_nFreq);
  viPrintf(/*funcgen*/m_Session,"VOLT %f\n",m_nAmpl);
  viPrintf(/*funcgen*/m_Session,"VOLT:OFFS %f\n",m_nOffs);
  viPrintf(/*funcgen*/m_Session,"FUNC:SQU:DCYC %f\n",m_nDcycle);
 }//******************************判断用户选择的是否是任意波
 Else
if(GetCheckedRadioButton(IDC_RADIO_SIN,IDC_RADIO_DC)==IDC_RADIO_ARBI)
 {
  error=viPrintf(/*funcgen*/m_Session,"APPL:USER %f,%f,%f\n",m_nFreq,m_nAmpl,m_nOffs);
  if(error!=VI_SUCCESS)
  {error_handler(/*funcgen*/m_Session,error);

 << 上一页  [11] [12] [13] [14] [15] [16] 下一页

VC++单片机虚拟仪器测试系统 第12页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©751com.cn 辣文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。