微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 论利用OOP设计思想的通讯接口类的设计与应用

论利用OOP设计思想的通讯接口类的设计与应用

时间:07-31 来源:互联网 点击:

无校验,数据位数以及停止位等信息,而网卡则关注的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 结语

  基于这样的面向对象的思想设计出来的测控系统的通讯接口类,在某个银行终端的模拟测试中,可以很好地适应串口和网口的测试,代码思路清晰,非常有利于扩展和维护。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top