立即注册 登录
气象家园 返回首页

清风的个人空间 http://bbs.06climate.com/?1 [收藏] [复制] [分享] [RSS]

日志

Swan二次开发之后台模块开发小结

已有 1190 次阅读2012-10-22 17:19 |个人分类:c#| swan, 模块, 后台, 前台, 开发

前段时间断断续续的做了一点,因为主要在做前台的东西,所以一直没写。这两天把后台程序做了个大概,有了点体会,好记性不如烂笔头,还是写下来备忘。
Swan的二次开发文档虽然比Micaps3.2的开发文档要好懂(个人感觉),不过里面对哪些应该由用户完成,哪些是系统完成的没有说的很清楚,这就容易导致工作的时候有些茫然了。所以先记下一个大概的开发流程,这些都是在上一篇的市级配置搞定的基础上的。
首先是选择开发语言,按照沃老师的说法,如果不考虑跨平台,可以用.NET等移植性不够好但是自己熟悉的语言来开发,如果考虑跨平台,Fortran,c,c++,qt等是比较好的选择,虽然Fortran我也比较熟悉,但是相对于c#而言,做这个模块还有很多工作要做,由于时间的关系,还是选择了c#,因为现有的开发样例里面的Fortran库连个说明都没有,也不知道里面有些啥函数,该怎么传参数。所以像ini的读取,35类数据的读取,都要自己写库,这样开发时间就大大延长。由于c#对ini的支持库很多,而D35类数据在先前的前台开发中已经写过,所以我可以把精力放在如何实现功能上。
开发语言选好之后,可以写一个简单的控制台程序,加上一个输出语句,编译输出路径设置到swan的procpe目录,然后编译,把程序挂载到一个已有线程或者空白线程中去,这部分开发手册里面讲的还是挺清楚的,不记得了看开发手册。
下面就是考虑模块的配置问题了,像我开发的这个模块,需要从前一个模块的输出中获取生成的文件,然后用于计算,并输出新的文件。所以需要配置的项目主要是前一个模块的文件交换列表的输出文件名,用于读取前面计算完成的文件,还有其他计算过程中需要用到的一些计算参数(比如阈值神马的),另外还要配置好输出的路径,也就是产品路径,这个路径是生成新文件后自己要存放的一个路径。配置文件自己从其他的模块复制一个,然后改一下名称,再修改成自己的就行了,三个段是固定的。
配置问题解决了,就可以开始处理资料了。先从交换文件读取资料,然后进行各种计算,期间如果出现错误,要进行日志的记录,日志的路径以及命名方式在开发手册中说的很清楚,计算完成后,如果需要生成新的文件,那么就要把这个新的文件输出到产品目录中(不用bz2压缩),一般是tmp目录(不是程序的tmp,是产品目录的tmp)LOCAL下的一些子文件夹,这个是在配置里面读取的,可以自己自由指定,不要和现有的文件夹重名。然后就在程序的tmp目录下生成一个当前程序名+"list.txt"的列表文件,文件格式按照手册中的要求即可。
下面就是swan自动做的了,swan会在产品目录的filenotify目录生成GenFile文件,然后把list文件中的文件复制并bz2格式压缩到share目录local下的相对应的目录,进行后续的ftp推送等等。
如果有新文件生成,swan还会在自动建立一个当前线程名+".ini"的交换文件,其实这个文件的作用和前面的模块生成的是差不多的,前一个模块会不会生成交换文件列表取决于模块本身,而只要有文件输出,swan就会生成交换文件列表。从哪个中读取新文件可以自己选择。
目前觉得比较重要而手册中没有或者比较模糊的地方大概就上面这些了。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

返回顶部