我现在遇到一个棘手的问题,先把软件大致介绍一下吧。
我现在要做的是一个仪器(电子压力计)的数据回放软件。由于公司产品的规划存在一些问题(我的个人看法),压力计存在多种型号,不同型号的压力计里面(仪器自带了存储芯片)存储的数据格式不完全相同,压力计与PC机软件的通讯协议也不完全相同。举例来说明吧,在基本的通讯规划上,有USB通讯的,有串口通讯的,串口通讯里面,有的通讯速率为9600,有的则是19200,还有115200的,反正是五花八门的。存储数据呢,大致可以分为,测试数据,时间表数据,校对表数据等,但不同型号的压力计这些数据的格式又不完全一样,从仪器中得到这些数据的通讯方式又是不完全相同。
如果要为没一个仪器单独做一个软件,那用户那里就会有N多个软件,估计用户不会同意。如果把做一个软件来兼容所有的仪器,由于个人能力有限,不知道该怎么做整个软件的结构规划,而且,怎样用同一个界面来向用户展示这些不同格式的数据。

解决方案 »

  1.   

    不同的压力计有不同的数据格式和数据通信协议
    但是他们都有相同的:
    都可以存放数据,都可以进行通信
    大概的伪码:
    public abstract class 压力计支持Provider基类
    {
        public abstract void 存数据();
        public abstract 数据格式 取数据();
    }
    然后在这个基础上每个不同的压力计实现不同的支持类同样的,数据格式虽然都不同,但是也可以抽象出共同的部分,例如都可以迭代显示等等的
    使用接口抽象也可以的
    实际调用的时候,还可以使用工厂生成不同的Provider
      

  2.   

    界面你可以只扔个datagrid,动态的绑定列。每种型号要生成哪些列可以先存进表里,最后页面生成时读出来,设置那个datagrid
      

  3.   

    关于显示,要么可以用11楼的方法,或者利用反射,遍历所有数据实体类的公开属性来显示,甚至于,你可以对属性自定义特性(Attribute),然后在特性里头控制如何显示或者是否显示,这样就可以用一个通用的显示控制了