单个串口设备数据的连续接收

单个串口设备数据的连续接收

ID:46019306

大小:887.00 KB

页数:42页

时间:2019-11-20

单个串口设备数据的连续接收_第1页
单个串口设备数据的连续接收_第2页
单个串口设备数据的连续接收_第3页
单个串口设备数据的连续接收_第4页
单个串口设备数据的连续接收_第5页
资源描述:

《单个串口设备数据的连续接收》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、工控程序设计学习情景2串口设备的数据采集学习情景2.3单个串口设备数据的连续接收2.3.1学习要点1.知识点:线程的概念,委托的概念和使用方法,线程的创建和启动,工作者线程和用户界面线程之间的数据传递,线程同步技2.技能点:工作者线程的创建,串口数据接收和处理操作的封装2.3.2任务描述1.在前一个情景中完成了接收和处理单一串口设备数据的工作任务。实际应用中,上位机需要连续地接收和处理下位机发送的数据,而且在等待和接收数据的时候,用户界面不能停止响应。接收数据和响应用户输入这两个工作在宏观上是同时进行的,为了满足该需求,必须采用多线程模式来进行程序设计。2.该教学情景通过“在工作者线程中

2、接收HSDZC电能综合测试仪的”“HSDZC电能综合测试仪数据接收和处理操作的封装”这两个实施步骤达到连续接收接收单个串口设备(下位机)数据的目的。学习情景2.3单个串口设备数据的连续接收2.3.3相关知识1多线程技术概述(1)线程的概念Windows是一个抢占式多任务操作系统,在系统内核中提供了对多线程的支持,多线程技术可以让应用程序在一个耗时的操作中能够及时对用户操作进行响应,并且从宏观上达到多个任务“齐头并进”的目的进程是应用程序的一个运行例程,是应用程序的一次动态执行过程。线程是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,但它可与同属一个进程的其它线程共享进程所拥有的

3、全部资源。每个进程至少需要一个执行线程,由系统自动创建,程序设计者可以根据需要创建其它线程。由于多个线程共享进程中的全局变量和系统资源,所以线程间的切换比较容易,通信也比较方便。学习情景2.3单个串口设备数据的连续接收(2).NETFramework对多线程的支持.NET平台库提供了Thread类对线程进行处理,该类包含在System.Threading命名空间中,程序中需要包含语句“usingSystem.Threading;”。编程人员可以通过创建一个Thread类的实例来创建一个线程,并通过Thread类提供的方法对线程进行管理。Thread类的常用属性和方法如下表:表2.3.1T

4、hread类的常用属性和方法学习情景2.3单个串口设备数据的连续接收2委托的概念和使用方法C#中的委托的作用相当于C/C++中的函数指针,函数指针是一个函数的入口地址。必修使用函数指针的场合是:程序员A编写了函数f,该函数中需要执行另外一个参数和返回值已经确定,但名字暂时不能确定函数,所以给函数设置一个函数指针类型的形式参数;当程序员B使用函数f时,定义函数g,并把g的入口地址作为实际参数传递给函数f,这样就可以在f中执行函数g了。线程的启动是使用函数指针的一个典型例子,在启动线程之前,先要给操作系统指明线程启动后执行哪一函数中包含的代码,这时就要把函数的指针传递给创建线程的函数。回调(

5、完成后通知)是使用函数指针的另外一个典型例子。如程序员A编写了负责接收网络数据的函数f1,程序员B编写了负责处理数据的函数f2,那么就可以把f2的函数指针作为参数传递给函数f1,当f1接收数据完毕后,自动调用f2。所以回调的特点是:站在程序员B的角度看,函数由自己编写,但是不由自己调用,且不知道什么时候被调用(因为网络速度有快有慢),函数编写者要做的就是把函数指针传递出去。学习情景2.3单个串口设备数据的连续接收定义委托的关键字是delegate,它是从System.Delegate类派生出来的。例如:delegateintSomeDelegate(intp1,stringp2);//i

6、ntp1和stringp2是被引用函数的参数类型和名称。其中参数类型和参数的个数必须和被引用函数的类型与个数一致。3创建和启动线程一个线程必须和一个方法的入口(委托)关联起来,线程启动后,自动从该入口进入,执行函数体中包含的内容。C#应用程序启动时,自动创建主线程,并进入Main方法开始执行,其它线程需要在程序里自己定义和启动。由于委托可以代表一个方法的入口,学习情景2.3单个串口设备数据的连续接收所以创建线程实例时只需要在Thread类的构造方法里传入一个委托实例即可,这个委托名叫ThreadStart,已经在线程命名空间中定义作了定义:publicdelegatevoidThread

7、Start();所以创建线程方式如下:ThreadStartfunctionEntrance=newThreadStart(threadFunction);Threadt=newThread(functionEntrance);在委托ThreadStart的构造方法里面传入的是方法名,这个方法可以是静态方法,也可以是某个对象的方法。线程对象创建后,我们就可以调用其Start方法开始线程的执行了。学习情景2.3单个串口设备数据的连续接

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。