基于C#的简易虚拟仪器设计

时间:2022-10-08 10:48:22

基于C#的简易虚拟仪器设计

摘要:c#.NET是跨平台的面向对象编程语言,有速度块、开发方便、安全可靠等优点。使用C#.NET能开发出自定义控件,可以通过继承来扩展熟悉的用户控件和现有控件的功能,还可以执行自己的绘制功能和控制功能。仪器是由一个个部件所组成,利用自定义控件开发出一个个模拟实际仪器部件的单元,显示数据或图形,产生控制信号。然后将这些控件编制成一个DLL库,就可重复利用,并加以推广,大大提高开发的效率。

关键词:简易虚拟仪 C#

中图分类号:TH86 文献标识码:A 文章编号:1007-9416(2012)05-0158-01

作为一种以计算机软件为核心的仪器系统,虚拟仪器最核心的技术是软件,通过修改程序可实现功能完全不同的各种测量测试仪器,以满足各种不同的需求。软件可以定义为各种仪器,可以说“ 软件即仪器”。使原来需要硬件实现的功能软件化,以便最大限度的降低系统成本,可增强系统功能与灵活性。

1、仪器部件的显示

显示模拟仪器部件的控件时,需要要使用图形设备接口(GDI)。GDI包括两部分:GDI对象和GDI函数。GDI对象定义了GDI函数使用的工具和环境变量,而GDI函数使用GDI对象绘制各种图形。在C#.NET中,用到的是GDI+版本,GDI+是GDI的进一步扩展,它能实现二维矢量图形绘制、图像处理和文字显示等功能。

绘制控件需要重写OnPaint事件处理方法,利用GDI+函数来完成各种图像图像绘制及操作。这里需要注意的是,OnPaint事件本身传递PaintEventArgs对象,一定要通过该对象获取对图形对象的引用。

protected override void OnPaint(PaintEventArgs e)

{

Graphics g = e.Graphics;

}

利用其它方法,例如

Graphics g = this.CreateGraphics();

则当该控件被Windows其它窗体遮挡后,无法重绘。

2、部件的属性

每一个仪器部件都有其特定的属性,比如部件的颜色、状态、数据等信息。我们定义的部件要包涵各种属性,用户使用时要能够通过对属性的控制来改变部件的表现形势。例如,一块显示表,有时需要显示从0到100,有时可能需要显示从0到60,所以显示范围和精度等用户必须可以随意设置,当前显示的值能够实时与硬件同步。将部件的属性与其控件的属性相对应,并显示在属性框中,用户可以通过对属性的设置来改变显示部件的外在表现和内在数据。如我们定义的一个部件,它显示数据列表的属性,

[DefaultValue("0"),Description("显示的数据列表"), Category("Data")]

public string[] TheData

{ get { return theData; }

set { theData=value; }

}

3、部件的行为

每个部件都能够在使用过程中产生变化,可以称之为行为。仪器是一个有机的整体,各个部件之间需要协同。比如,一个复位按钮被按下之后,整个系统都需要重启。也就是一个部件的行为发生之后,需要系统中的部分或全部部件做出相应的反应。这种“行为—响应”的模式刚好与C#里的委托和事件的消息传递机制相对应。

部件产生一个行为,它发送消息,通知某个部件进行反应,这就是事件。触发事件的一方称作事件发送方,捕获事件并做出响内的一方称作事件接受方。在事件通信中,事件发送方知道哪个部件或者方法将接受到它引发的事件,这样就需要在发送方和接受方有一个联系纽带,这个纽带就是委托。委托的一个重要能力就是将方法作为参数进行引用,这使得委托成为定义回调方法的理想选择。控件库中,定义控件的事件相应机制需要以下几部:

(1)声明委托:

public delegate void DataChangeEventHandler(object sender, int n);

(2)声明事件:

public event DataChangeEventHandler DataChanged;

(3)定义事件虚拟处理方法:

protected virtual void OnDataChange(int nCurrentData)

{…}

(4)调用事件处理方法:

private void rButtonInc_Click(object sender, EventArgs e)

{

OnDataChange(nCurData);

}

在该控件的事件框里我们就可以看到DataChanged事件,在该部件的实例化对象中就可以具体定义其处理方法,如同处理其它如鼠标事件等Windows事件一样。

4、结语

我们通过将仪表的部件与C#的控件一一对应起来,开发出能模拟部件的控件库,就可以C#为平台,进一步开发出各种简单的虚拟仪器。这种技术的优点是简单、实用,可应用与一些对显示效果要求不高的虚拟仪器中。对于显示效果要求高的虚拟仪器,需要进一步利用DirectDraw技术对部件进行改进。

上一篇:硬盘播出系统方案设计 下一篇:PowerPoint中的模板设计