虚拟设备主要是为了整合同类设备的数据信息,例如,设备A和设备B是同类设备,数据信息也一样,这样就可以开发一个虚拟设备对这两个设备的数据进行二次处理,以满足特殊功能的业务要求。软件框架把其他设备处理后的数据通过虚拟设备接口完成业务调度,虚拟设备接口很简单,运行代码如下。
RunDevice1抽象类实际上也继承了这个虚拟设备接口在框架内部共享的一个引用地址空间。也就是说,继承RunDevice1接口的设备驱动同时也具备虚拟设备的功能。继承关系如图3-2所示。
虚拟设备与普通设备可以通过设备类型来区分,如果把设备类型设置为Virtual,那么就会标识此设备为虚拟设备,可以对此设备设置处理公式。非虚拟设备的数据通过运行虚拟设备接口函数传递进来,目标对象数据完全由二次开发者自定义,可以是对象类,也可以是字符串,还可以是数值。虚拟设备参数设置如图3-3所示。
图3-2 虚拟设备接口继承关系
图3-3 虚拟设备参数设置
虚拟设备在一般情况下不是经常用到,但是在一些特殊情况下可以实现特定的功能,如当设备驱动的数据对象改变时会调用虚拟设备函数接口,代码如下。
当设备驱动的数据对象改变时,数据对象可以自定义,在二次开发过程中触发上述代码中的接口事件,把数据对象传递给RunVirtualDevice虚拟函数。