作物病虫害专家在线视频诊断系统的设计与实现
2014-11-20张航明花廷李乃祥
张航+明花廷+李乃祥
摘要:为提高天津地区作物病虫害防治水平,以Flex和.NET Framework为开发框架,Flex Builder 3.0和Visual Studio 2008为开发工具,SQL Server 2008 Express为数据库管理系统,FMS为交互媒体服务器,采用B/S体系结构,设计开发了一个高实时性、高集成度和高分布性的作物病虫害专家在线视频诊断系统。该系统性能稳定,用户使用方便,安装维护简单,可以实现作物病虫害专家与就诊用户之间的远程视频音频诊断会话和文本诊断会话,有效地提高病虫害防治水平。
关键词:作物;病虫害;视频诊断;Flex
中图分类号:S435;TP311 文献标识码:A 文章编号:0439-8114(2014)18-4427-03
作物病虫害防治工作是农业生产中的一个重要环节,对病虫害进行准确诊断与防治能有效提高作物的质量与产量。病虫害的诊断需要专业人员的指导,而当前农村基层组织中专业病虫害诊断与防治存在人员不足的情况。针对这种情况,一些病虫害诊断系统已经被开发出来,并在实际农业生产中得到应用[1,2]。这些系统一般是以C/S模式开发的,要求使用者具有较高的计算机操作水平,升级和维护工作困难,共享程度低[3]。随着技术不断发展,越来越多的软件设计采用B/S模式。相对于C/S模式,B/S模式在技术上具有分布性强、共享性强、维护方便等特点,终端用户只需会使用浏览器即可获取相关信息[4]。本研究采用B/S模式并结合Flex技术,设计并实现了作物病虫害专家在线视频诊断系统,以期使得诊断更加快捷、方便,实现资源信息化、诊断决策科学化,为作物种植管理和病虫害防治提供了有效的技术支持。
1 系统设计
1.1 系统结构
作物病虫害专家在线视频诊断系统采用面向对象的方法,结合MVC(Model-View-Controller)模型来开发设计。系统采用Adobe Flex、FMS(Flash media server)、ASP.NET和SQL Server数据库等技术,以Visual Studio 2008和Flex Builder 3.0为开发平台。由于Flex本身不能直接访问和操作服务器端的数据库,其需要通过服务器端语言(C#)配合来实现客户端和服务器端的数据交互与通信[5]。系统整体架构如图1所示。
1.2 系统功能
作物病虫害专家在线视频诊断系统包含用户管理、在线用户列表、诊断会话、诊断会话管理、诊断会话备录、其他辅助功能等6个功能模块。其中关键部分为诊断会话模块,包含诊断会话发起、视音频诊断会话、文本诊断会话、诊断会话终止等功能。系统功能图如图2所示。
1.2.1 用户管理功能 用户管理功能分为前台管理和后台管理。前台管理主要提供前台用户登录、注册(仅限诊断用户)、密码取回以及个人资料修改等功能。后台管理为系统管理员提供系统所有用户的查看、添加、修改、删除等功能。
1.2.2 在线用户列表功能 在线用户列表功能分别显示所有诊断用户列表、在线诊断用户列表、所有专家列表和在线专家列表,提供系统所有用户的联系信息和状态信息。
1.2.3 诊断会话功能 诊断会话功能包括诊断会话发起、视音频诊断会话、文本诊断会话、诊断会话终止等功能。
1.2.4 诊断会话管理功能 诊断会话管理功能针对系统管理员用户设置,主要包括诊断会话模式设置、诊断会话记录查询和打印等功能。
1.2.5 诊断会话备录功能 诊断会话备录功能针对专家用户,提供诊断会话记录的查看、添加等功能。
1.2.6 其他辅助功能 其他辅助功能提供用户会话历史记录列表显示与详情查看、对方视音频会话音量调整、会话消息声音提示设置、视音频捕获参数调整、清空文本聊天消息列表、查看自己视频等功能。
1.3 数据库设计
利用ER(Entity relationship)方法进行数据库的概念设计,设计ER模式,得到最终的模式(概念模式)。系统包括用户、诊断会话历史记录、用户登录日志和诊断会话等4个部分。数据库设计在系统需求分析结果的基础上,充分考虑数据结构的合理性、完整性和安全性,便于程序设计及系统的维护与升级[6]。根据这些原则,设计的数据库包含用户表、用户登录日志表、诊断会话表和诊断会话历史记录表。
2 系统实现
2.1 诊断会话模块功能实现
诊断会话模块是系统的核心模块和关键模块,主要包括诊断会话的发起、对方接受/拒绝、建立、保持和停止等功能,其工作界面如图3所示。为了保证执行业务逻辑时数据流的正确性,引入了Flex事件机制将异步变为同步。与传统的HTML应用程序相比,Flex具有强大的优势,可以开发出基于浏览器的健壮且高度交互的Web应用,有效降低数据通信量,节省网络带宽,提高页面反应速度[7]。本模块的实现原理为:利用ActionScriopt语言对后台数据进行处理并将服务器端数据发送到客户端,对其编译后生成SWF文件,用户访问时SWF文件被下载到本地,在本地浏览器的FlashPlayer上运行客户端和表现层逻辑,处理用户请求,执行数据验证,发出HTTP和AMF数据请求以及这些请求之间的处理[8]。
本模块功能的实现主要借助Flex和FMS里的NetConnection、NetStream、SharedObject等对象,并调用HttpService来完成。主要代码如下所示:
publisherName = lcInfo.lginedName;
customerName=selectChatter_Win.selectedChatterName;
if(msgSOApp == null)endprint
{
msgSOApp = new MsgSOApp(publisherName, customerName, lcInfo.loginType);
msgSOApp.addEventListener("OnlineShowMsgListChanged", onOnlineShowMsgListChangedHandler);
msgSOApp.createNC();
}
var msgInf:MessageInfo = new MessageInfo();
msgInf.from = “系统通知”;
msgInf.To = customerName;
if(lcInfo.loginType = “诊断用户”)
msgInf.receiverType = “EXPERT”;
else
msgInf.receiverTyper = “USER”;
msgInf.HourAndMinsOfDate = getNowTime();
msgInf.content = publiserName + “向您发出会话邀请”;
msgSOApp.updateMsgToOnlineCollection(msg);
2.2 诊断会话记录管理模块
本模块主要是向系统管理员用户提供前台诊断会话历史记录的列表查询、导出与打印等功能,实现主要借助ADO.NET中的SqlConnection、SqlCommand、SqlAdapter、DataSet和ASP.NET中的HttpResponse、UrlEncode等对象来完成,其中导出功能的主要代码如下所示:
HttpResponse resp = Page.Response;
string FileName = “导出数据”;
FileName = HttpUtility.UrlEncode(FileName, Encoding.UTF8);
FileName = FileName + “.xls”;
resp.ContentEncoding = System.Text.Encoding.GetEncoding(“GB2312”);
resp.AppendHeader(“Content-Disposition”, “attachment;filename=” + FileName);
string colHeaders = “”, ls_item = “”; int k = 0;
……
DataTable dt = ds.Tables[“history”];
DataRow[] myRow = dt.Select();
foreach (DataColumn dc in dt.Columns)
{
colHeaders += dt.Columns[k].Caption.ToString() + “\t”;
k++;
}
k = k - 1;
colHeaders += “\n”;
resp.Write(colHeaders);
foreach (DataRow row in myRow)
{
k = 0;
foreach (DataColumn dc in dt.Columns)
{
ls_item += row[k].ToString() + “\t”;
k++;
}
k = k - 1;
ls_item += “\n”;
resp.Write(ls_item);
ls_item = “”;
}
resp.End();
3 小结
该系统集成使用了Flex、FMS、ASP.NET和SQL Server技术,采用了远程视音频发布和播放技术、基于Flex和FMS的实时数据同步和分发技术、用于实现异步数据流同步的Flex事件处理机制等技术。该系统基于B/S结构,客户端安装维护简单,用户操作简单、方便,可以实现作物病虫害专家与就诊用户之间的远程视音频诊断会话和文本诊断会话,对于提高病虫害的防治水平有一定的意义。
参考文献:
[1] 谭翠萍,张峻峰,郑怀国,等.北京农村知识服务平台建设研究[A].第二届国际计算机及计算技术在农业中的应用研讨会暨第二届中国农村信息化发展论坛论文集[C].北京:电子工业出版社,2008.168-170.
[2] 李继平,程 鸿,李青青,等.蔬菜病害诊断及咨询多媒体系统研制及应用[J].甘肃农业科技,2007(6):11-13.
[3] 彭莹琼,王映龙,唐建军,等.B/S模式的水稻病虫害诊断专家系统研究[J].江西农业大学学报,2008,30(6):1157-1160.
[4] 黄文博,燕 杨.C/S结构与B/S结构的分析与比较[J].长春师范学院学报(自然科学版),2006,25(4):56-58.
[5] 杨 恒,袁怀月,罗 璇.基于Flex和.NET的B/S系统限管理的设计与实现[J].测绘工程,2012,21(2):46-49.
[6] DANIELA F, ALON L, ALBERTO M. Database techniques for the World Wide Web[J]. Sigmod Record,2005,32(3):59-74.
[7] 姚 硕.Flex在开发Web系统客户端应用探究与实现[J].软件,2013,34(9):41-44.
[8] LOTT J, SCHALL D, PETERS K. Actionscript 3.0 Cookbook [M].陈建勋,译.北京:电子工业出版社,2007.endprint
{
msgSOApp = new MsgSOApp(publisherName, customerName, lcInfo.loginType);
msgSOApp.addEventListener("OnlineShowMsgListChanged", onOnlineShowMsgListChangedHandler);
msgSOApp.createNC();
}
var msgInf:MessageInfo = new MessageInfo();
msgInf.from = “系统通知”;
msgInf.To = customerName;
if(lcInfo.loginType = “诊断用户”)
msgInf.receiverType = “EXPERT”;
else
msgInf.receiverTyper = “USER”;
msgInf.HourAndMinsOfDate = getNowTime();
msgInf.content = publiserName + “向您发出会话邀请”;
msgSOApp.updateMsgToOnlineCollection(msg);
2.2 诊断会话记录管理模块
本模块主要是向系统管理员用户提供前台诊断会话历史记录的列表查询、导出与打印等功能,实现主要借助ADO.NET中的SqlConnection、SqlCommand、SqlAdapter、DataSet和ASP.NET中的HttpResponse、UrlEncode等对象来完成,其中导出功能的主要代码如下所示:
HttpResponse resp = Page.Response;
string FileName = “导出数据”;
FileName = HttpUtility.UrlEncode(FileName, Encoding.UTF8);
FileName = FileName + “.xls”;
resp.ContentEncoding = System.Text.Encoding.GetEncoding(“GB2312”);
resp.AppendHeader(“Content-Disposition”, “attachment;filename=” + FileName);
string colHeaders = “”, ls_item = “”; int k = 0;
……
DataTable dt = ds.Tables[“history”];
DataRow[] myRow = dt.Select();
foreach (DataColumn dc in dt.Columns)
{
colHeaders += dt.Columns[k].Caption.ToString() + “\t”;
k++;
}
k = k - 1;
colHeaders += “\n”;
resp.Write(colHeaders);
foreach (DataRow row in myRow)
{
k = 0;
foreach (DataColumn dc in dt.Columns)
{
ls_item += row[k].ToString() + “\t”;
k++;
}
k = k - 1;
ls_item += “\n”;
resp.Write(ls_item);
ls_item = “”;
}
resp.End();
3 小结
该系统集成使用了Flex、FMS、ASP.NET和SQL Server技术,采用了远程视音频发布和播放技术、基于Flex和FMS的实时数据同步和分发技术、用于实现异步数据流同步的Flex事件处理机制等技术。该系统基于B/S结构,客户端安装维护简单,用户操作简单、方便,可以实现作物病虫害专家与就诊用户之间的远程视音频诊断会话和文本诊断会话,对于提高病虫害的防治水平有一定的意义。
参考文献:
[1] 谭翠萍,张峻峰,郑怀国,等.北京农村知识服务平台建设研究[A].第二届国际计算机及计算技术在农业中的应用研讨会暨第二届中国农村信息化发展论坛论文集[C].北京:电子工业出版社,2008.168-170.
[2] 李继平,程 鸿,李青青,等.蔬菜病害诊断及咨询多媒体系统研制及应用[J].甘肃农业科技,2007(6):11-13.
[3] 彭莹琼,王映龙,唐建军,等.B/S模式的水稻病虫害诊断专家系统研究[J].江西农业大学学报,2008,30(6):1157-1160.
[4] 黄文博,燕 杨.C/S结构与B/S结构的分析与比较[J].长春师范学院学报(自然科学版),2006,25(4):56-58.
[5] 杨 恒,袁怀月,罗 璇.基于Flex和.NET的B/S系统限管理的设计与实现[J].测绘工程,2012,21(2):46-49.
[6] DANIELA F, ALON L, ALBERTO M. Database techniques for the World Wide Web[J]. Sigmod Record,2005,32(3):59-74.
[7] 姚 硕.Flex在开发Web系统客户端应用探究与实现[J].软件,2013,34(9):41-44.
[8] LOTT J, SCHALL D, PETERS K. Actionscript 3.0 Cookbook [M].陈建勋,译.北京:电子工业出版社,2007.endprint
{
msgSOApp = new MsgSOApp(publisherName, customerName, lcInfo.loginType);
msgSOApp.addEventListener("OnlineShowMsgListChanged", onOnlineShowMsgListChangedHandler);
msgSOApp.createNC();
}
var msgInf:MessageInfo = new MessageInfo();
msgInf.from = “系统通知”;
msgInf.To = customerName;
if(lcInfo.loginType = “诊断用户”)
msgInf.receiverType = “EXPERT”;
else
msgInf.receiverTyper = “USER”;
msgInf.HourAndMinsOfDate = getNowTime();
msgInf.content = publiserName + “向您发出会话邀请”;
msgSOApp.updateMsgToOnlineCollection(msg);
2.2 诊断会话记录管理模块
本模块主要是向系统管理员用户提供前台诊断会话历史记录的列表查询、导出与打印等功能,实现主要借助ADO.NET中的SqlConnection、SqlCommand、SqlAdapter、DataSet和ASP.NET中的HttpResponse、UrlEncode等对象来完成,其中导出功能的主要代码如下所示:
HttpResponse resp = Page.Response;
string FileName = “导出数据”;
FileName = HttpUtility.UrlEncode(FileName, Encoding.UTF8);
FileName = FileName + “.xls”;
resp.ContentEncoding = System.Text.Encoding.GetEncoding(“GB2312”);
resp.AppendHeader(“Content-Disposition”, “attachment;filename=” + FileName);
string colHeaders = “”, ls_item = “”; int k = 0;
……
DataTable dt = ds.Tables[“history”];
DataRow[] myRow = dt.Select();
foreach (DataColumn dc in dt.Columns)
{
colHeaders += dt.Columns[k].Caption.ToString() + “\t”;
k++;
}
k = k - 1;
colHeaders += “\n”;
resp.Write(colHeaders);
foreach (DataRow row in myRow)
{
k = 0;
foreach (DataColumn dc in dt.Columns)
{
ls_item += row[k].ToString() + “\t”;
k++;
}
k = k - 1;
ls_item += “\n”;
resp.Write(ls_item);
ls_item = “”;
}
resp.End();
3 小结
该系统集成使用了Flex、FMS、ASP.NET和SQL Server技术,采用了远程视音频发布和播放技术、基于Flex和FMS的实时数据同步和分发技术、用于实现异步数据流同步的Flex事件处理机制等技术。该系统基于B/S结构,客户端安装维护简单,用户操作简单、方便,可以实现作物病虫害专家与就诊用户之间的远程视音频诊断会话和文本诊断会话,对于提高病虫害的防治水平有一定的意义。
参考文献:
[1] 谭翠萍,张峻峰,郑怀国,等.北京农村知识服务平台建设研究[A].第二届国际计算机及计算技术在农业中的应用研讨会暨第二届中国农村信息化发展论坛论文集[C].北京:电子工业出版社,2008.168-170.
[2] 李继平,程 鸿,李青青,等.蔬菜病害诊断及咨询多媒体系统研制及应用[J].甘肃农业科技,2007(6):11-13.
[3] 彭莹琼,王映龙,唐建军,等.B/S模式的水稻病虫害诊断专家系统研究[J].江西农业大学学报,2008,30(6):1157-1160.
[4] 黄文博,燕 杨.C/S结构与B/S结构的分析与比较[J].长春师范学院学报(自然科学版),2006,25(4):56-58.
[5] 杨 恒,袁怀月,罗 璇.基于Flex和.NET的B/S系统限管理的设计与实现[J].测绘工程,2012,21(2):46-49.
[6] DANIELA F, ALON L, ALBERTO M. Database techniques for the World Wide Web[J]. Sigmod Record,2005,32(3):59-74.
[7] 姚 硕.Flex在开发Web系统客户端应用探究与实现[J].软件,2013,34(9):41-44.
[8] LOTT J, SCHALL D, PETERS K. Actionscript 3.0 Cookbook [M].陈建勋,译.北京:电子工业出版社,2007.endprint