论利用OOP设计思想的通讯接口类的设计与应用
无校验,数据位数以及停止位等信息,而网卡则关注的IP 地址和端口号,这些信息可以利用封装机制,封装到每个具体的接口类中,他们代表着不同类之间的差异与个性,这些差异信息完全由具体类自己控制操作。通过重载父类COM类的公有方法,就提供了通用的接口。
2.2 该构架的使用模型
采用图2类族设计了各个类之后,就可以使用图3所示的流程来应用这样的一些类。在具体的使用过程中,如果是用测量仪器进行来承担原始数据的采集的,那么用户一定是明了仪器所使用的与控制机进行联机的接口类型的,或者是串口,或者是网口,或者是其他的新标准的工业控制接口,在应用编程时,就需要先创建一个这样的通讯口的对象,然后把这个对象的引用传递给仪器类,产生一个仪器对象出来,由于仪器是继承Device抽象类的,所以在产生出具体仪器类之后,利用面向对象的多态技术,可以将这个仪器对象传给一个上层应用的Device指针,上层应用就可以通过Device 类提供的通用接口,来对设备进行打开,读写等操作,在应用层,用户可以利用线程技术,来提高系统的整体性能。
2.3 接口类用例
假设,现在有一个频谱测量系统,各个测量仪器与主控PC 采用了GPIB 进行系统的构建[10],则使用类族如图2 所示,流程图如3所示,可以设计如下的类族伪代码:
class COM
{
public:
virtual BOOL Open()=0;
virtual int Write(BYTE* pBuff,int CountToWrite)=0;
virtual int Read(BYTE* pBuff,int CountTORead)=0;
virtual void Close()= 0;
};
而派生类GPIB 接口的实现,就是将该接口的各个API进行封装,然后由COM 的接口提供出统一的访问方式。
在实现了具体的具体的仪器的类的编写后,就可以采用图3的流程来完成,下面是C++伪代码:
COM *pc = new GPIB(1,0,0);
Device pDevice = new FreqMeasureInstrumen(t pc);
i(f TRUE == pDevice->Open())
{
开始与仪器的交互和测量数据的采集;
}
else
{
打开出错,错误处理;
}
测量完成,关闭仪器;
pDevice->Close();
在这段伪代码中,首先,定义了一个通信口的指针,但是所指的对象是一个动态产生的GPIB类的对象。然后再定义一个仪器类的指针pDevice,所指的对象是动态产生的一个频谱测量仪的对象。然后通过pDevice,就可以调用接口完成具体的测量任务。
3 结语
基于这样的面向对象的思想设计出来的测控系统的通讯接口类,在某个银行终端的模拟测试中,可以很好地适应串口和网口的测试,代码思路清晰,非常有利于扩展和维护。
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)