赞
踩
最近好几个月一直在忙于新公司的业务,抽不出时间来写博客。刚好借着五一假期结束时机,对最近工作做一个总结还有对今后几个月工作做一个小小的计划(赶不上变化)。来到新公司先是用C#做了一个月的光谱仪测试平台,主要功能就是为了分析不同国产光谱仪的外触发功能和光谱仪的分辨率以及效率。为了后面的国产替代进口做准备。
软件的主要功能就是可以采集不同的光谱仪数据(厂家提供SDK),在主界面显示比较数据,然后对比国产光谱仪和公司原有进口光谱仪的优缺点,最后得出光谱仪是否可用的结果。光谱仪本身至少保证一种可用的通讯方式(usb,串口,网口),可以设置通讯参数,参数模块可以设置光谱仪的触发时间、积分时间、延时时间等参数,控制模块满足谱图读取功能即可。
首先分析软件中变与不变的部分,该采集软件变的是不同厂家提供的光谱仪,不变的是我们公司需要设置光谱仪的类型,以及采集完谱图后的分析流程。这里对光谱仪抽象出一个设备接口,里面定义不同型号需要实现光谱仪的功能(此处最好的是定义不同的小的接口,每个接口定义一个模块的功能,最后通过多继承的方式实现所有接口,这样更加灵活)。
由于是一个工具软件,暂不需要考虑跨平台要求,全部基于.NetFramework下实现即可,但是在使用过程中发现,现有的开源库对跨平台的.Net框架好像更加友好,后面还是选用跨平台的框架吧。UI部分还是选用最熟悉的Winform技术,后续可以考虑使用wpf再使用一个prism框架,顺便学学新东西,以后工作也会有新的一些思路。图标部分还是选择我熟悉ScootPlot,作图效率不输于matplotlib,该库的作者也很是励志。
在使用过程中,发现软件需要连续采集功能,就使用Task,async,await等技术实现数据后台采集前台展示的功能。数据采集结束还需要对谱图的分辨率、效率分析,后续还需要加进去。该平台只需要实现定义的几个接口就可以快速集成新的光谱仪设备,一般厂家都提供开发sdk,实现方式类似设计模式中的适配器模式。
数据采集软件大概花了半个多月的时间开发,顺利集成了avantes,高利通,复享三台不同厂家的光谱仪。开发该软件的难度在于前期外触发功能测试,笔者使用信号发生器模拟上升沿触发信号实现外出发功能单独测试。后续在功能迭代是如何抽象出合理的设备接口也是非常重要,这个也是需要时间积累,并非一拍脑袋就能想到的方案。
来这个公司已经两个月了,感觉合肥的打工环境还是不如杭州的,工作压力比较大,工资压得也是不太高。由于公司主要业务是用qt开发的,最近正在使用qt开发一款设备的控制软件,也是在疯狂补C++的基本知识,对于设计模式也在重新看《Head First设计模式》这本书,不得不谁,比gof写的有意思多了。对于后续的工作也是继续学习C++基础知识和设计模式,争取在半年时间内熟练掌握qt框架,C#方面自己也会积极推广的,在一些公司内部工具中还是使用C#,毕竟C#程序员不加班。。。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。