基于C#的自动站土壤水分入库程序设计

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:lhnyzz520
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:利用c#语言的便利灵活性,结合MSSQL数据库,针对气象部门土壤自动站报文数据上传后进行有效实时解析人库。对土壤水分数据进行分类解析入库、实时解码、并行处理等,对数据进行粗加工,并生成显示、报警等机制,也为二次开发提供标准的数据库接口,统一标准,避免重复解析,进一步提高数据的实时性、效率性和适应性。
  关键词:气象;c#;数据库;土壤水分;报文
  中图分类号:TP311 文献标识码:A
  文章编号:1009-3044(2020)15-01 17-04
  1背景
  随着气息事业的日益发展,人民生活对气象需求的多样性也日益增长。气象部门在对日常天气预报的精准预报下,对预报的衍生产品的研究也日益透彻,特别像浙江这样一个气象灾害比较频繁的地区,我们不仅要关注和防范一般的自然天气灾害,还要特别防范由天气现象造成的次生灾害,譬如山体滑坡、泥石流、塌方等地质灾害,往往这些灾害给人民的生命财产造成了极大的危险。而气象部门针对此情况,在容易发生地质灾害的地方布置了大量的针对土壤水分的自动站来监测土壤水分的饱和度,通过大数据的分析,做出针对性的预案。这往往要对土壤水分数据处理的实时性、准确性、并行性提出了较高的要求,并需要和预报数据相互结合,做出更精准的预测。为此我们设计了新的土壤水分入庫程序,提高了处理的实时性和并发能力,满足了大数据处理的需求。
  2设计思路
  为了保持和其他气象数据的兼容性和传承性,同样土壤水分数据在取样后,采用了报文形式的传输形式,以文件形式传输,而不是目前流行的数据流格式或数据库格式的传送,处理时需要对每个文件中的报文进行解包分析,判断数据的时限性、准确性和报文的类别,实时入库,避免信道堵塞并发出相应的处理信息。
  2.1开发语言介绍
  c#是微软公司与2001年基于C 之后新开发的一种面向对象程序设计的语言,它运行于Net FrameWork之上,是一种类似于JAVA的脚本性语言。他集成了C语言的灵活性又继承了C 面向对象的特性,并且面向Intemet编程进行了重新设定,使得他结合了VB、DELPHI、JAVA等各类语言的一些特性,在整个Net框架之内,可以轻松地驾驭各种开发程序,保留了c的强大能力,有简洁了C 的复杂性,友好的IDE界面,便利的语言继承,使得原先大量的c语言程序设计师转向了c#语言,发挥了它的稳定、简单、安全又功能多样的特点。
  2.2系统设计
  本系统利用地面宽带和4G信号,接收从土壤水分自动站传回的数据,它以文件形式报文结构存在。我们利用线程池和文件缓冲队列,解码传回来的数据,根据相应的要素排列生成对应的数据库,数据库采用了微软的MSSQL,利用数据库AI-waysOn群集和可用性组的特点实现的高可用性及灾难恢复解决方案,利用分布式的特点实现了数据的高效率利用和互相备份的存储。利用了Windows的消息队列设计,进行窗体之间的信息互传,给用户在数据缺测时做到及时提醒报警,并提供标准的COM接口为二次开发和第三方用户提供服务。
  通过不定期的扫描接收文件,判断文件的时效性,生产相应的日志,为后面的故障解决提供数据依据。为了提高执行效率,在业务模式相对简单的情况下,抛弃了复杂的类处理,在对象后面直接采用c语言API函数快速解决底层驱动问题,大大提高了扫描的效率。为土壤水分预报的及时性提供了技术的保障。
  2.3报文内容
  基于气象部门的特殊性和继承性,数据的流转脱胎于航空报文的模式,为了资料的兼容性,目前还有大量的资料采用了报文的传输格式,同样,我们的土壤水分数据传输也采用了这一方式,当然各类的数据报文格式也有所不一,但都是以ASCII码文件的形式存在的,报文的内容为5个字符为一组数据,相邻数据以空字符相隔,有报文头和结束符,每组数据有着不一样的意义,需要程序进行译码。一般以“NNN”为报文的结尾,如“58xxx 23456 N2342…NNN”等,在土壤水分信息报文中,包含了站号、经度、维度、高度、生成时间、观察时间、相对湿度等内容。在报文传输到达后,经过时效性、合法性验证后,对报文进行判别翻译后写入数据库以供共享所用。
  3软件设计
  3.1总体框架图
  根据业务需求,结合技术特点和行业特征,我们设计了以下的软件方案:
  在数据应用端,我们采用了定时扫描文件的策略,根据土壤水分数据的来报频率,设计相应的时间去判别是否有新的数据到来,以减轻前端处理机的运行负荷,当判别有新报文来临时,设计了一个防冲突的机制,防止别的用户在操作该文档,正常读取报文内容后,进行拆包人库,采用了模块化的设计和消息队列机制,防止文件死锁,减少程序处理时的CPU想要时间。而网络层充分利用了目前气象信息网络的先进性,千兆的局域网、百兆的地面宽带网和高速4G网络,保证了数据传输的有效性和完整性,合理地分布了分布式数据库进行存储和备份,通过业务端的逻辑优化,提高查询和并发处理的性能。
  3.2软件设计流程
  根据总体框架图中的流程,对整个软件的数据流转和业务流转进行合理的分配协调,成功地进行了以下的设计:
  3.3土壤水分数据库结构设计
  土壤水分数据以每小时每站点生成一个单独文件,文件中报文内容为一条单独记录,格式如下:
  通过微软的ADO数据库引擎,成功地在软件中直接对MS-SQL2015数据库进行操作,及时地把数据插入库中,保证了程序的完整性,方便程序移植到同类业务单位。
  3.4软件编码
  在应用端,我们打开VISIOStudi02015,在文件菜单项中选中新建项目,然后在项目中选取C#Windows应用程序的建立,如ASM,这样我们就创建了一个C#的程序框架。namespaceASM
  由于定时器的延迟性和不确定性,在土壤水分入库的机器上尽量不要运行其他占CPU高的程序,并确保报文数据来报的定时性,这样会大大增加处理入库的效率,在报文入库的同时,其他任务避免直接操作该报文,等他入库后调用数据库的COM接口来查询数据,以使任务的统一化,增加报文处理的成功率。
  3.5程序功能界面
  在报文解析人库处理中,我们尽量简化界面的操作,减少人机交互带来的操作失误,把CPU时间多分配给报文解码线程,确保程序的灵敏度和反应度,避免在程序处理时,界面发生假死或白板现象。程序启动后会定时根据报文的传输时间启动报文处理模块,不需人工干预,稳定、高效、连续,在报文加密观察时或临时增加采集或处理遗漏的情况下,可以通过界面上的按钮进行手工处理,并且把执行结果同步显示在界面上。
  4结束语
  本文通过数据库技术,改变了原先以文本方式为主的显示方式,对要素数据进行了归纳,方便了数据的存储、调用、查询和归档,对数据的冗余性、纠错机制提供了驱动依据,也便于及时读人报文数据,避免由于读取不及时造成报文数据的丢失,并且系统提供了手工处理功能,在系统故障或线路延迟造成的文件逾限、丢失,可以通过人工处理得以解决。完美地解决了报文数据处理上的各种缺陷,通过一段时间运行、改正,目前系统日益完善,在土壤水分数据处理的及时性、完整性和准确性上得到了充分的验证。为预报部门提供了翔实充分的数据,并取得了良好社会效益。
其他文献
课程与教学的关系时教育理论中重要问题20世纪末,重新整合课程与教学已经成为时代的要求.模拟电子技术是机电专业一门重要的专业基础课,内容晦涩难懂,本文在阐述了模拟电子技
我国众多高等院校不断更新自己的教育设备以及扩大场地的规模。对于数字校园系统的用户群体,由于组织机构的更新换代快和新生游览的时效性,需要便携性的Android端数字校园系统来提供安全性、时效性和便携性的服务。该系统设计地理位置信息的查询、行程计划的生成、师生交流等主要功能,大幅度增加数据流通的便携性,减少用户使用前后的时间成本。
皮革和毛皮中的禁用偶氮染料要经过还原裂解、提取柱萃取、净化和浓缩等实验操作步骤才能进行仪器分析。从试剂与耗材方面、仪器设备方面和人员操作方面对皮革和毛皮中禁用偶
"尝试教育"主张"先练习后讲解、先自学后师教、先试验后引导、先实践后认知",让学生在亲身体验中认知,由感性认识逐步体会其机理,上升到理性认识,后通过教师的引导讲解对自己
在"以学生为中心"的新的培养模式下,电子信息工程专业进行了人才培养方案的设计改革,以学生发展为中心,确立了培养目标;以学习效果为中心,确定能力培养要素;以学生学习为中心
妊娠期糖尿病是指在妊娠期首次发生或发现的糖耐量异常,是由于胰岛素分泌不足引起糖、蛋白质、脂肪代谢紊乱,使血糖浓度升高,孕妇血糖水平的高低直接影响到孕妇及胎儿健康,妊
硫酸镁有解痉、镇静、减低颅内压作用,用于惊厥、子痫、尿毒症等[1].镁离子引起肌松主要是能抑制运动神经末梢对乙酰胆碱的释放,阻断神经和肌肉间的传导,使骨骼肌松弛,且能抑
微信公众平台因便利的互动性、信息推送的实时性而被广泛使用。大学生作为旅游占比较大的群体,经济水平有限,为此提供一个经济实惠的旅游信息平台成为关键。该文主要研究内容
摘要:随着互联网技术的不断发展,传统教学模式已经无法满足人们的实际需求。在大数据背景下,人们对于个性化重视程度不断加深,可视化的数据更是在一定程度上帮助教师、学生更好地融入教与学的环境中。该文简要论述了大数据背景下新型约课系统在个性化课程推荐过程中出现的问题及解决对策,借助spark数据处理技术处理数据,构建基于课程的协同过滤算法的新型约课系统,为用户提供个性化辅导方案,以满足用户的学习需求,增强
本文对100例老年患者使用静脉留置针的护理进行总结,包括留置方法、心理、置管时和置管期间的护理、常见不良反应及预防措施等。笔者认为:良好的护理可提高老年患者使用留置针