论文部分内容阅读
【摘要】近年来,随着计算机技术的迅速发展,计算机技术已经被广泛应用于各个领域,多线程通讯技术应用的作用也显得越来越重要。通过详细地研究有关串行通讯的原理和应用实例的分析,这为接下来的相关技术人员和程序开发人员的工作带来了一定的指导作用。
【关键词】多线程;通讯技术;基本原理;
中图分类号:I253文献标识码: A
一、多线程的应用领域
在操作系统中,进程是应用程序的运行实例,是应用程序的一次动态执行,其所有线程共享虚拟地址空间、全局变量和该进程的操作资源。而多线程是进程内部程序执行的路径,是进程的一个执行单元。多线程是操作系统分配CPU时间的基本单位,一个线程可以执行应用程序的任何部分,包括当前被其它线程执行的部分。一个应用程序至少包括一个主线程,还可拥有其它辅线程,当一个应用程序中的线程多于一个时,就称该程序是多线程的。
为了运行所有多线程,操作系统为每个独立线程安排一些CPU,并通过其本身的调度机制来评价各个活动线程的优先级,优先级别高的活动优先执行,优先級别低的活动线程挂起。创建一个进程时,它的第一个线程称为主线程,它由系统自动生成,然后可由这个主线程生成辅助线程,这些辅助线程又可生成更多的线程。在这个框架中,所有程序编译后生成的都是中间代码,而这些中间代码的隔离、加载和卸载以及安全边界的提供都是通过应用程序域来实现的。此时,一个进程可以包含一个或多个应用程序域,而一个应用程序域又可以包含一个或多个线程。这样实际上就相当于在进程和线程之间增加了一个新的安全边界。无论在同一个进程之内还是在不同的进程之间,每个应用程序域之间都是相互无关的,这些不同的应用程序域之间只能通过远程通讯来实现消息和对象的传递。
二、WIN32 API 的串行通讯技术的应用原理
1.串行口的创建与打开
RS232 串行口在 WIN32 系统可以类比为磁盘上的文件。 WIN32 API 中可以通过一个函数 CreateFile()创建一个新文件或者打开已有的系统文件,有所区别的是函数的参数,当“创建方式”这一参数的值应为 OPEN_EXISTING 表示打开文件。另一方面值得注意的是在串行口文件使用的问题,当串行口文件“共享模式”的参数值为 0 时,串行口为独占使用方式,在串口独立使用的时候,其他的应用程序不能够并行,要并行,只有等到串行口的文件使用结束以后,才能关闭以便其他的应用程序共同使用这个串口。
2. 串行口的设置
串行口打开后就会产生一个串行口的句子,这个句子一般是HANDLEhComm中存放起来的,而且对于hComm对该串行口实时操作时必须注意串行口的设置要进行初始化,否则很难实现串口行的操作。这些串口行的操作中要设置CommProp、CommConfig结构、串口状态、串口超时、标志等这些内容,而且这些设置中,以 CommProp 结构最大最复杂,其设置往往要包含最大发送序列和最大接受序列,所以这个结构的设置也是串口配置中最为关键的环节,而且是串口配置的核心部分内容,决定着关键的结构设置。
一般而言,将 DCB 结构进行初始化的过程主要是数据位数的定义过程,首先是对于每个字符的数据位数的奇偶、事件字符,停止位数,以及流量控制的方式以及串口发送的波特率进行校验和设置,然后再是关注设置的一些方法,比如在此串口的设置中,要预先得到缺省的配置再去修改参数部分,而且这样才能够令下个环节立刻可以将串口当前的状态进行反应,基带协议中带有分组头信息,包括了 HFC 信息与 CRC 信息,这些信息对于分组和传输过程中的错误都能够有效地进行检验,并得到充分的结果,而且在该基带协议中,出于有效载荷正确与否,可以将循环冗余校验码进行加载,加载的信息进行分组,然后在 ARQ 的方案基础上,对分组的荷载进行工作和分析。而话音在系统中,因为有效的分组头没有保护措施,所以蓝牙可以得到快速和没有编号的确认,而且在应答前,还要进行一次分组,返回过程一般使用ACK (ARQN=1)或者 NAK (ARQN=0)程序,在程序形成的过程中,还是要进行 ACK / NACK 域的组成,这种组成可以在某个区域里才能了解负载接收,这种接受能够在区域里的编码是不是对的,并且便于根据实际情况,决定是否重新发送或者发送到下一个分组。
MSComm 控件提供了使 RS-232 进行数据通信的所有协议,它有两种处理通信的方式,即事件驱动和查询方式,本文利用了事件驱动方式,可以满足工业用实时性的要求。但是这里特别指出的是一个MSComm控件只能对应一个串口。假如程序中要用到多个串口,那么相应的就有同等数量MSComm 控件,但是 MSComm 控件的数量并非没有限制,一个程序中对多只能有 16 个 MSComm 控件。这点是需要注意的。利用 MSComm 控件进行串口通信的一般步骤为:
(1)设置通信对象、通信端口以及其它属性;
(2)设定通信协议;
(3)打开通信端口,进行数据的传送;
(4)关闭通信端口。
三、多线程程序以及通讯技术的应用实例分析
1.多线程程序的应用
并发多线程程序设计使得系统性能获得很大提高,具体表现在:①快速线程切换;②减少(系统)管理开销;③(线程)通信易于实现;④并行程度提高;⑤节省内存空间。
目前多线程技术在应用软件和系统软件的实现中得到了广泛的使用,如操作系统中的并行文件操作;数据库中的多用户事务处理;窗口系统中的多个相关了窗口操作;实时系统中多事件的同时响应;网络中多个客户共享网络服务器等等下面给出了一些线程应用的例子:
(一)加快执行速度一个多线程进程在计算一批数据的同时,读入设备(网络、终端、打印机硬盘)上的下一批数据,而这分别由两个线程实现。
(二)c/s应甩局域网上服务器处理多个用户文件(任务)请求时,创建多个线程,若该服务器是多CPU的,则同一进程中的多线程可以同时运行在不同CPU上。
(三)前台和后台工作如在一个电了表格软件中,一个线程执行显示菜单和读入用户输入,同时,另一个线程执行用户命令和修改电了表格。
(四)多事件处理每当用户要求执行一个动作时,就建立一个独立线程来完成这项动作当用户要求有多个动作时,就由多个线程来实现。
(五)多窗口系统当用户要求建立多窗口系统时,用多个线程分别实现主从窗口。
2.多线程通讯技术应用实例
下面,本文将说明如何利用VB设计出基于MSComm控件的两 PC 机的网络串行通信程序:
a.新建工程,打开 VB6.0,点击[文件]、[新建工程],出现界面。选择其中的[标准 EXE]选项,新建工程。
b. 添加标签. 选择选项卡上的标签控件,并将其添加到工程中。在右下角属性卖面板中更改标签的属性为“发送数据”,同样的步骤添加“接收数据”标签。
c.添加输入文本框,并更改属性为空。
d.添加发送按钮。
e.添加 MSComm 控件。
f. 添加程序代码双击 From1,添加代码如下:
Private Sub Form_load()
MSComm1.Commport=1 ‘指定控件所使用的串口
MSComm2.Commport=2
MSComm1.Settings=”9600,n,8,1” ‘设置波特率
MSComm1.Settings=”9600,n,8,1”
MSComm1.PortOpen=True ‘打开串口
MSComm1.PortOpen=True
Text2.Enabled=False ‘输入框中的数据不允许更改End Subg. PC2 上的程序界面与 PC1 完全相同,但是 PC2 是利用 COM1 作为接收串口,COM2 作为发送串口,因此程序代码只是 COM1 功能与 COM2 功能互换即可。
四、结束语
多线程通讯技术的广泛应用,有效的解决各种逻辑并发性问题和物理并行性问题,大大提高了系统处理的效率,增强了整个系统的响应性。
参考文献:
[1]王彩兵.多线程通讯技术原理分析及应用[J].科技咨询导报.2007(26).
[2]叶雪军,朱卫锋.系统集成中的多线程网络通信技术研究[J].数字技术与应用.2012(03).
[3]伍光胜,宋信忠,郑明辉.多线程技术及其应用的研究[J].计算机应用研究. 2001(01).
【关键词】多线程;通讯技术;基本原理;
中图分类号:I253文献标识码: A
一、多线程的应用领域
在操作系统中,进程是应用程序的运行实例,是应用程序的一次动态执行,其所有线程共享虚拟地址空间、全局变量和该进程的操作资源。而多线程是进程内部程序执行的路径,是进程的一个执行单元。多线程是操作系统分配CPU时间的基本单位,一个线程可以执行应用程序的任何部分,包括当前被其它线程执行的部分。一个应用程序至少包括一个主线程,还可拥有其它辅线程,当一个应用程序中的线程多于一个时,就称该程序是多线程的。
为了运行所有多线程,操作系统为每个独立线程安排一些CPU,并通过其本身的调度机制来评价各个活动线程的优先级,优先级别高的活动优先执行,优先級别低的活动线程挂起。创建一个进程时,它的第一个线程称为主线程,它由系统自动生成,然后可由这个主线程生成辅助线程,这些辅助线程又可生成更多的线程。在这个框架中,所有程序编译后生成的都是中间代码,而这些中间代码的隔离、加载和卸载以及安全边界的提供都是通过应用程序域来实现的。此时,一个进程可以包含一个或多个应用程序域,而一个应用程序域又可以包含一个或多个线程。这样实际上就相当于在进程和线程之间增加了一个新的安全边界。无论在同一个进程之内还是在不同的进程之间,每个应用程序域之间都是相互无关的,这些不同的应用程序域之间只能通过远程通讯来实现消息和对象的传递。
二、WIN32 API 的串行通讯技术的应用原理
1.串行口的创建与打开
RS232 串行口在 WIN32 系统可以类比为磁盘上的文件。 WIN32 API 中可以通过一个函数 CreateFile()创建一个新文件或者打开已有的系统文件,有所区别的是函数的参数,当“创建方式”这一参数的值应为 OPEN_EXISTING 表示打开文件。另一方面值得注意的是在串行口文件使用的问题,当串行口文件“共享模式”的参数值为 0 时,串行口为独占使用方式,在串口独立使用的时候,其他的应用程序不能够并行,要并行,只有等到串行口的文件使用结束以后,才能关闭以便其他的应用程序共同使用这个串口。
2. 串行口的设置
串行口打开后就会产生一个串行口的句子,这个句子一般是HANDLEhComm中存放起来的,而且对于hComm对该串行口实时操作时必须注意串行口的设置要进行初始化,否则很难实现串口行的操作。这些串口行的操作中要设置CommProp、CommConfig结构、串口状态、串口超时、标志等这些内容,而且这些设置中,以 CommProp 结构最大最复杂,其设置往往要包含最大发送序列和最大接受序列,所以这个结构的设置也是串口配置中最为关键的环节,而且是串口配置的核心部分内容,决定着关键的结构设置。
一般而言,将 DCB 结构进行初始化的过程主要是数据位数的定义过程,首先是对于每个字符的数据位数的奇偶、事件字符,停止位数,以及流量控制的方式以及串口发送的波特率进行校验和设置,然后再是关注设置的一些方法,比如在此串口的设置中,要预先得到缺省的配置再去修改参数部分,而且这样才能够令下个环节立刻可以将串口当前的状态进行反应,基带协议中带有分组头信息,包括了 HFC 信息与 CRC 信息,这些信息对于分组和传输过程中的错误都能够有效地进行检验,并得到充分的结果,而且在该基带协议中,出于有效载荷正确与否,可以将循环冗余校验码进行加载,加载的信息进行分组,然后在 ARQ 的方案基础上,对分组的荷载进行工作和分析。而话音在系统中,因为有效的分组头没有保护措施,所以蓝牙可以得到快速和没有编号的确认,而且在应答前,还要进行一次分组,返回过程一般使用ACK (ARQN=1)或者 NAK (ARQN=0)程序,在程序形成的过程中,还是要进行 ACK / NACK 域的组成,这种组成可以在某个区域里才能了解负载接收,这种接受能够在区域里的编码是不是对的,并且便于根据实际情况,决定是否重新发送或者发送到下一个分组。
MSComm 控件提供了使 RS-232 进行数据通信的所有协议,它有两种处理通信的方式,即事件驱动和查询方式,本文利用了事件驱动方式,可以满足工业用实时性的要求。但是这里特别指出的是一个MSComm控件只能对应一个串口。假如程序中要用到多个串口,那么相应的就有同等数量MSComm 控件,但是 MSComm 控件的数量并非没有限制,一个程序中对多只能有 16 个 MSComm 控件。这点是需要注意的。利用 MSComm 控件进行串口通信的一般步骤为:
(1)设置通信对象、通信端口以及其它属性;
(2)设定通信协议;
(3)打开通信端口,进行数据的传送;
(4)关闭通信端口。
三、多线程程序以及通讯技术的应用实例分析
1.多线程程序的应用
并发多线程程序设计使得系统性能获得很大提高,具体表现在:①快速线程切换;②减少(系统)管理开销;③(线程)通信易于实现;④并行程度提高;⑤节省内存空间。
目前多线程技术在应用软件和系统软件的实现中得到了广泛的使用,如操作系统中的并行文件操作;数据库中的多用户事务处理;窗口系统中的多个相关了窗口操作;实时系统中多事件的同时响应;网络中多个客户共享网络服务器等等下面给出了一些线程应用的例子:
(一)加快执行速度一个多线程进程在计算一批数据的同时,读入设备(网络、终端、打印机硬盘)上的下一批数据,而这分别由两个线程实现。
(二)c/s应甩局域网上服务器处理多个用户文件(任务)请求时,创建多个线程,若该服务器是多CPU的,则同一进程中的多线程可以同时运行在不同CPU上。
(三)前台和后台工作如在一个电了表格软件中,一个线程执行显示菜单和读入用户输入,同时,另一个线程执行用户命令和修改电了表格。
(四)多事件处理每当用户要求执行一个动作时,就建立一个独立线程来完成这项动作当用户要求有多个动作时,就由多个线程来实现。
(五)多窗口系统当用户要求建立多窗口系统时,用多个线程分别实现主从窗口。
2.多线程通讯技术应用实例
下面,本文将说明如何利用VB设计出基于MSComm控件的两 PC 机的网络串行通信程序:
a.新建工程,打开 VB6.0,点击[文件]、[新建工程],出现界面。选择其中的[标准 EXE]选项,新建工程。
b. 添加标签. 选择选项卡上的标签控件,并将其添加到工程中。在右下角属性卖面板中更改标签的属性为“发送数据”,同样的步骤添加“接收数据”标签。
c.添加输入文本框,并更改属性为空。
d.添加发送按钮。
e.添加 MSComm 控件。
f. 添加程序代码双击 From1,添加代码如下:
Private Sub Form_load()
MSComm1.Commport=1 ‘指定控件所使用的串口
MSComm2.Commport=2
MSComm1.Settings=”9600,n,8,1” ‘设置波特率
MSComm1.Settings=”9600,n,8,1”
MSComm1.PortOpen=True ‘打开串口
MSComm1.PortOpen=True
Text2.Enabled=False ‘输入框中的数据不允许更改End Subg. PC2 上的程序界面与 PC1 完全相同,但是 PC2 是利用 COM1 作为接收串口,COM2 作为发送串口,因此程序代码只是 COM1 功能与 COM2 功能互换即可。
四、结束语
多线程通讯技术的广泛应用,有效的解决各种逻辑并发性问题和物理并行性问题,大大提高了系统处理的效率,增强了整个系统的响应性。
参考文献:
[1]王彩兵.多线程通讯技术原理分析及应用[J].科技咨询导报.2007(26).
[2]叶雪军,朱卫锋.系统集成中的多线程网络通信技术研究[J].数字技术与应用.2012(03).
[3]伍光胜,宋信忠,郑明辉.多线程技术及其应用的研究[J].计算机应用研究. 2001(01).