为实验测试编写测试与数据处理软件(一)
啊啊啊,是第一次在这个小博客里发文,从来没有发过文章,编程水平也很低,权当给自己记录各种开发时遇到的问题。万一有大神进来了以极其高超的武功传我一招半式也说不定呢!!! --------------------------------------------------------------------------分??------? 隔 ------ 线 ------------------------------------------------------------------------------------------------------------------------- 数据处理软件、编码测试软件 ? 1、背景 最近在研究一套硬件电路的编码方法,该方法通过设计PCB电路,将信号通道重新进行编码,即信号输入通道号(即信号线)X,将其对应至接收通道Y上,即通过PCB做出Y=F(X)的函数对应关系,以达到某个特殊的效果。效果与本文无关,不多讨论啦( ̄~ ̄) 嚼! 而本文探讨开发关于编码方法的测试环境以及数据处理的软件。 2、需求 实验中会涉及到编码的模拟测试,编码后数据的处理。 模拟测试包括硬件环境的模拟与信号发生、数据处理需要将编码的信号解码并进行一系列显示。 关于编码和解码的方法是它人开发,需要整套系统对编码开发者透明,只提供简单的为使用接口。 3、计划 开发一套软件(其实就是几块代码啦┗( T﹏T )┛),希望开发三个模块,一个是规定了编码的编码方法和解码方法,主要内容为两个函数,参数使用封装的input_inf和output_inf。一套编码方案需要其编写者给出编码和解码方法;二是测试组件,负责规定硬件环境,以及生成一系列测试数据,需要绑定(以某种形式( ̄~ ̄) 嚼!)编码方案后使用;三是数据处理及显示,负责将数据解码进行可视化处理和统计分析。 4、问题 如何绑定编码方案和其他组件?我实在太小白,没有开发经验。使用的设想是实验人员自行编写编码方法和解码方法,然后在主程序中(可以考虑简单的GUI)进行绑定,如Set_codmethod()。后根据需求进行测试和数据处理。 ? 5、解决方案 ?
(失败啦!)我想将编码方案封装为class,?编写好basic_method class,而所有编码方案是basic class 的子类。测试环境的数据也打包成class,内包括一些环境数据(成员变量)和一些测试函数(成员方法),使用时将测试环境的class实例化,内部有一个basic_method class成员变量,绑定时将该变量赋值为测试方案的实例。 ? 不过失败了,测试环境调用编码方案的函数时调用了父类即basic_method class的方法。 (下续) 2015/9/7 更 ??? 第一个解决方案可以使用了!既然父类充当模板或接口,需要将成员方法设定为虚函数,即virtual关键字修饰。这样接收basic_method class的函数接收到advanced_method class 实例时会自动调用子类即advanced_method class的方法。 ??? 哎,c++或者java课肯定都学过,不过不使用就没有明白其设计者的真正含义。 下接测试代码。 class basic { public: virtual void method() { cout << "basic"; }; }; class advanced :public basic { public: void method(){ cout << "advanced"; } }; void test2(basic *tmp){ tmp->method(); } void main(){ advanced b; test2(&b); }
输出
advanced 现类结构如下: class basic_cod_gen { public: virtual int encode(int strip) ; //encode method,input id of strip,return channel id virtual fire_strip decode(chennel_inf hitted) ; //decode method,input hitted chennel id,return decoded information }; class insert_cod : public basic_cod_gen { public: int encode(int strip); fire_strip decode(chennel_inf hitted); }; class test_mod { public: //config setting function test_mod(); ~test_mod(); test_mod(basic_cod_gen *cod_point); void Set_cod(basic_cod_gen *tested_method); void Set_logpath(const char* filepath); //test function void display(); private: bool check_cod(); basic_cod_gen *cod; ofstream logfile; };还发生了一个小bug插曲,就是构造函数或其他传入basic_cod_gen指针的成员方法一开始并不是传入指针,传入的basic_cod_gen实例,导致指针错误。原因很简单,实参传入时被拷贝,在构造函数内取地址赋给 basic_cod_gen *cod,实际传入无效地址,导致程序运行时指针错误。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |