- 1、本文档共198页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
智能大棚控制系统;智能大棚控制系统实现了智能大棚的温度、光敏数值监控及控制功能,本项目模拟实现了大棚环境温度及光敏的监测、通过数据分析控制风扇和灯光的打开和关闭控制,为智能农业提供解决方案。
Windows为多任务操作系统,操作系统在处理任务时采用多线程技术,C#引入了多线程技术,通过多线程技术能够提高程序的执行效率,减少系统资源的浪费。面向对象的程序设计在图形用户界面开发中采用了事件处理机制,通过事件处理实现程序的交互,.NETFramework在处理事件中引入了委托的概念,委托在C#中是一个特殊的对象类型,委托的使用是安全的、面向对象的,通过委托实现方法的调用。;掌握线程的定义及使用
掌握委托的定义及使用
掌握事件的定义及使用;项目运行后,自动监测大棚内环境温度及光敏数据,数据每隔5秒自动进行刷新,风扇状态和RGB状态初始处于“关闭”状态,程序启动运行效果如图5-1所示:;如果监测到温度低于30度,则自动关闭风扇,风扇变为“关闭”状态,如果监测到光敏数据低于120,则自动关闭RGB灯,RGB灯变为“关闭”状态,,如图5-3所示:;任务1:线程实现页面刷新
任务2:委托实现页面刷新
任务3:事件引发页面刷新;任务描述
项目运行通过随机函数模拟生成温度及光敏随机数据,通过后台线程获取随机数据并显示,数据每隔5秒自动刷新,项目运行过程中对数据进行分析,如果温度超过30度,则打开风扇,否则关闭风扇,如果如果光敏大于100,则打开RGB灯,否则关闭RGB灯。;1.线程
线程(英语:thread)是操作系统能够进行运算调度的最小单位,一个进程中可以并发多个线程,每条线程并行执行不同的任务,多个线程并发执行能提高程序执行效率,C#支持多线程并发,C#能过命名空间System.Threading支持线程对象,Thread类用来创建线程对象,如:
Threadt1=newThread(show);
Show为要执行的方法,Thread类的常用属性如表所示:;1.线程
Thread类的常用方法如表5-2所示:;1.线程;1.线程;2.Random类;2.Random类;3.跨线程更新UI;3.跨线程更新UI;3.跨线程更新UI;任务1线程实现页面刷新;任务1线程实现页面刷新;任务1线程实现页???刷新;线程是操作系统运算调度的最小单位,多线程协作能提高程序执行效率。
线程有多种状态,线程通过start()启动执行,通过sleep()进入睡眠状态。
子线程访问主线程控件状态可能抛出异常信息。;任务描述
在任务1中通过设置Control.CheckForIllegalCrossThreadCalls=false;避免了系统对子线程访问主线程更新UI控件的安全检查,这样可以避免程序因为刷新界面出现的“假死”现象,但在实际应用中,因为多线程可能同时访问主线程同一控件,在线程数不多的情况下可能看不出问题,但在线程数量增多及访问UI控件频率增大的情况下可能导致数据错误,因此当子线程访问主线程申请控制UI控件后,最好有一个应答的过程,在访问前申请,在访问后告之,任务2通过委托及control.Invoke和Control.BeginInvoke实现UI控件的刷新实现项目功能。;1.委托;1.委托;1.委托;1.委托;2.Invoke()和BeginInvoke();2.Invoke()和BeginInvoke();2.Invoke()和BeginInvoke();publicpartialclassForm1:Form
{
publicdelegatevoidUpdateUI();
publicForm1()
{
InitializeComponent();
}
privatevoidForm1_Load(objectsender,EventArgse)
{
Threadt=newThread(newThreadStart(setVal));
t.IsBackground=true;
t.Start();
};//读取值
privatevoidsetVal()
{
while(true)
{
if(InvokeRequired)
{
您可能关注的文档
- 物联网.NET开发(第二版) 课件 张勇 项目1--4 搭建Visual Studio开发环境 --- 会员管理系统.pptx
- 移动应用开发项目实战 第二部分-任务三:APP 设计说明书(案例).pdf
- 智能交通系统设计说明书(模板).doc
- 信息技术基础教程 课件 陈旭文 第1--4章 信息技术与信息社会 --- 文字处理软件Word 2021.pptx
- 信息技术基础教程 课件 陈旭文 第5--8章 电子表格Excel 2021 ---常用软件 .pptx
- 小学六年级德育实践活动实施计划.docx
- 幼儿园食堂安全巡检实施方案.docx
- 旅游行业意识形态影响评估计划.docx
- 旅游行业季节性服务提升措施.docx
- 社交网络用户画像可视化技术-深度研究.pptx
文档评论(0)