现在自动化设备的生产力工具基本是Windows一家独大,期待鸿蒙早日赶上!
既然是Windows主力,那么C#和C++是跨不过去的坎,我们只谈C++,只看性能,只为客户考虑效率,C#和JAVA我们都看不上!
现在自动化设备电机的控制一般有脉冲和总线方式,对PC程序来讲就是控制卡或者软实时的问题,假如我们有2个设备,脉冲卡是不同的供应商,那么程序如何统一起来?这里初步分享一下。
1、定义统一接口,然后上层调用时通过宏定义或者变量来区分不同的厂家,这里以获取卡的id字符串为例做个简单说明:
std::string getVendorId(void) { #ifdef VENDOR1 return "vendor1"; #else return "vendor2"; #endif }
这是C语言的实现思想,那么能否用C++的多态方法呢?答案显示是可以的。
2、使用虚函数实现
定义接口:
class Base{ public: virtual std::string getVendorId(void) = 0; }
然后根据卡实现不同的子类:
class Vendor1:public Base{ public: std::string getVendorId(void){return "Vendor1";} } class Vendor2:public Base{ public: std::string getVendorId(void){return "Vendor2";} }
那么实际用的时候,只要区分对象就行了:
std::string getId(Base *p) { return p->getVendorId(); } Base *vendor1 = new Vendor1(); Base *vendor2 = new Vendor2(); // 通过传入不同的对象得到不同的卡id: getId(vendor1); getId(vendor2);
多态意思就是:控制卡是一个对象,但是控制卡有雷赛牌、众为兴牌、固高牌,有脉冲型、总线型,他是有多种形态的。