加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

为实验测试编写测试与数据处理软件(一)

发布时间:2020-12-14 02:21:41 所属栏目:大数据 来源:网络整理
导读:啊啊啊,是第一次在这个小博客里发文,从来没有发过文章,编程水平也很低,权当给自己记录各种开发时遇到的问题。万一有大神进来了以极其高超的武功传我一招半式也说不定呢!!! ------------------------------------------------------------------------

啊啊啊,是第一次在这个小博客里发文,从来没有发过文章,编程水平也很低,权当给自己记录各种开发时遇到的问题。万一有大神进来了以极其高超的武功传我一招半式也说不定呢!!!



--------------------------------------------------------------------------分??------? 隔 ------ 线 -------------------------------------------------------------------------------------------------------------------------


数据处理软件、编码测试软件

?

1、背景

最近在研究一套硬件电路的编码方法,该方法通过设计PCB电路,将信号通道重新进行编码,即信号输入通道号(即信号线)X,将其对应至接收通道Y上,即通过PCB做出Y=F(X)的函数对应关系,以达到某个特殊的效果。效果与本文无关,不多讨论啦( ̄~ ̄) 嚼!

而本文探讨开发关于编码方法的测试环境以及数据处理的软件。


2、需求

实验中会涉及到编码的模拟测试,编码后数据的处理。

模拟测试包括硬件环境的模拟与信号发生、数据处理需要将编码的信号解码并进行一系列显示。

关于编码和解码的方法是它人开发,需要整套系统对编码开发者透明,只提供简单的为使用接口。


3、计划

开发一套软件(其实就是几块代码啦┗( T﹏T )┛),希望开发三个模块,一个是规定了编码的编码方法和解码方法,主要内容为两个函数,参数使用封装的input_infoutput_inf。一套编码方案需要其编写者给出编码和解码方法;二是测试组件,负责规定硬件环境,以及生成一系列测试数据,需要绑定(以某种形式( ̄~ ̄) 嚼!)编码方案后使用;三是数据处理及显示,负责将数据解码进行可视化处理和统计分析。


4、问题

如何绑定编码方案和其他组件?我实在太小白,没有开发经验。使用的设想是实验人员自行编写编码方法和解码方法,然后在主程序中(可以考虑简单的GUI)进行绑定,如Set_codmethod()。后根据需求进行测试和数据处理。

?

5、解决方案

?

  1. 设计类结构,分为三个class,实现绑定。

(失败啦!)我想将编码方案封装为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,实际传入无效地址,导致程序运行时指针错误。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读