m_Static.m_rect=m_nRect; m_Static.m_nStaticLeft=m_nRect.left+20; m_Static.m_nStaticTop=m_nRect.top+15; m_Static.m_nStaticRight=m_nRect.right-3; m_Static.m_nStaticBottom=m_nRect.bottom-16; 在基本的问题解决之后,希望对于显示在示波器上的波形具有缩放功能,使自己的示波器更完美。于是就添加了两个Slider控件来控制波形的拉伸,起初的设计就是刷新窗口的问题:因为通过滑块来改变XY的值,但需要它能及时的在窗口上得到响应,这个问题使我有点头痛。起初的设计比较的粗糙,通过鼠标的点击消息来进行对整个窗口的刷新。不过,这样的设计实在是太难看了,后来,通过上网咨询,论坛的朋友建议我使用线程函数进行对特定的窗口进行刷新。于是,我开始接触线程,并去了解线程,并通过书本上的例子的练习,加深了解以及和同学进行探讨,终于将问题得以解决。具体代码见附录,下面是线程函数的代码: static CEvent g_End;//事件对象的建立 struct data //需要传递的数据 { CRect rect; COSCILLOGRAPH* dlg; CStatic* m_pCS; }m_Data; //***************************关键的线程函数 UINT ThreadProc(LPVOID param) { if(::WaitForSingleObject(g_End,0)==WAIT_OBJECT_0)//该语句用来判断是否挂起或结束线程 { data* p=(data*)param; //这里是针对指定控件如静态控件的刷新,相对对话框的刷新,这种刷新不会出现闪屏问题 p->m_pCS->InvalidateRect(p->rect,TRUE); g_End.ResetEvent(); return 0; } return 0; } 万用表模块 5.1 Agilent E1412A 6.5高精度万用表介绍 安捷伦的E1412A 6位半高精度万用表是一个规格为C,具有一个槽,基于消息基的VXI模块,它与E1312A模块只是规格上的不同。它具有更多的功能和更高的执行效率,而在价格上却与5位半的万用表相当。该万用表提供了广泛的测量功能包括电压、幅值、电阻、和频率的高级测量以及对测试TTL输出和直流电压比测量。标准的测量包括ac/dc电压、ac/dc电流、2-4线电阻和频率与周期的测量。测量直流电压时,该万用表可以提供每秒65次范围变化和每秒30次函数变化。 5.2 Agilent E1412A 6.5高精度万用表界面设计和编程 通过阅读Agilent E1412A的用户使用手册,了解到Agilent E1412A能进行高精度的测量。然而,为了到达最好的测量效果,必须做一些准备工作来消除一些潜在的测量误差。在使用手册中给出了一些常见的错误,并提供了一些解决的办法。譬如在DC电压测量过程中,就会遇上如下的一些常见的错误:热电动势、阻抗错误、电流泄漏错误、不合格电源的噪声、共模以及磁环路和地环路引起的噪声等等,都提供了一些解决的思路。 而在进行测量之前也需要对万用表进行适当的配置:比如说AC信号的过虑(设置三种不同的AC过滤器,可以提高低频测量的精度或是在进行AC电压以及电流测量时提高读取速率。又如DC输入阻抗(在正常的情况下,所有的DC电压范围的输入阻抗是10兆欧姆来最小化噪声。你可以为100mVdc, 1Vdc and 10Vdc 范围的直流电压设置输入阻抗高于10G欧姆以利于减少测量负载的错误。)还有许多配置,用户手册中都给出了说明。 最简单的测量是通过使用MEASURE命令来进行的,该命令用来配置函数,启动测量和置数据于缓冲区以便计算机利用IO命令的读取。一条MEASURE命令将会启动多个测量(如果触发数或采样数大于1);如果读回数据的速度不够快以至于模块的输出缓冲区满时,测量将会停止直至有空间来存储数据时才重新启动测量。譬如: *RST //复位万用表 MEAS:VOLT:DC?//配置dc电压测量,并从万用表返回数据 ENTER statement//将数据传送给计算机 而指令read?也是可以用来启动测量的,在使用read?指令之前,需要使用所需的测量函数对万用表进行配置。该命令启动测量并将数据直接放入输出缓冲区,接着由用户提供IO函数来取回数据并发送给计算机。一条read?指令可以启动多个测量(如果触发数或采样数大于1时);如果读回数据的速度不够快以至于模块的输出缓冲区满时,测量将会停止直至有空间来存储数据时才重新启动测量。read?指令被分解为两个命令:init和fetc?.指令init置万用表于等待触发状态,外部触发发生来启动测量,测量值被存储于万用表内部存储器中。而指令fetc?将万用表的内存中的数据输出到输出缓冲区中并由计算机取回数据。注意:在使用init和fetc?命令时应当小心,万用表的内部存储器的容量只有有512个字节,超过该范围的最先的数据将会被丢弃。 每个测量以LF(换行符)结束。HP-IB End or Indentify信号将会在最后一个字节被发送。如果多个测量被返回,测量值会以逗号分隔,EOI也会在最后一个字节被发送。 例如:+1.23456E+LF,+1.234567E+12LF,+1.23456E+12LFEOI。 做外部触发测量时,必须提供TTL外部触发信号到BNC(同轴电缆插接件);测量将会被这个信号低脉冲触发。注意:Configure命令用于指定函数配置万用表,该命令并不启动测量。 对万用表的测量过程有了一定的了解之后,心中也有了一定的思路,如下图: 对于万用表的初始化,我将其设置为多选按钮来进行配置,设计的思想是这样的:采用多选按钮,也就意味着可以不选,采用默认的参数值;而用户如果需要设置的话,则单击选中按钮,会弹出一个对话框提供用户选择如下所示: 图5-1 上面就是我的万用表的基本的框图了。而测量结果的显示部分则是通过弹出式信息框的形式来对测量结果进行显示。这里给出了程
首页 上一页 8 9 10 11 12 13 14 下一页 尾页 11/14/14
WORD格式全文下载链接(充值:元)