多线程通讯技术的运用

多线程通讯技术的运用

 

近年来计算机技术发展迅速,一些相关的计算机辅助技术也随着其发展而发展迅速,并且很多的技术已经被逐步地使用到了国民生产生活的各个领域中。伴随着计算机技术在工业控制领域应用,计算机与设备之间的通信控制得到广泛的应用的同时,其作用显得越来越重要。本文成功地利用VB建立了基于MSComm控件的两PC机之间的串行通讯。本文所作主要工作如下几点:比较详细地研究了有关串行通讯的原理与设计的问题;设计了利用串行通讯实现两PC间的数据传输的系统图;学习了MSComm控件,并且利用VB开发出了实现两PC间串行通信的程序。本文建立的程序完成了预定的目标,从而为企业局域网内的工业控制流的传递、信息的交换提供了一个较为成熟和完善的平台,对于相关技术人员和程序开发人员提供了一定的指导作用。   1基于WIN32API的串行通讯技术原理   1.1串行口的创建与打开   RS232串行口在WIN32系统可以类比为磁盘上的文件。在WIN32API中可以通过一个函数CreateFile()创建一个新文件或者打开已有的系统文件,有所区别的是函数的参数,当“创建方式”这一参数的值应为OPEN_EXISTING表示打开文件。另一方面值得注意的是在串行口文件使用的问题,当串行口文件“共享模式”的参数值为0时,串行口为独占使用方式,在串口独立使用的时候,其他的应用程序不能够并行,要并行,只有等到串行口的文件使用结束以后,才能关闭以便其他的应用程序共同使用这个串口。   1.2串行口的设置   串行口打开后就会产生一个串行口的句子,这个句子一般是HANDLE类型的变量hComm中存放起来的,而且对于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所示。利用MSComm控件进行串口通信的一般步骤为:(1)设置通信对象、通信端口以及其它属性;(2)设定通信协议;(3)打开通信端口,进行数据的传送;(4)关闭通信端口。   2线程同步技术及应用实例   2.1线程同步技术简介   内存调动程序开始运行之后其身份即变为Windows系统中的一个进程,每个进程需要占据高达4G的独立的一个内存空间,各个内存空间之间无法越界存取,以免造成保护性错误被通知非法操作。一个进程的执行效率较低,因此通常分为几个线程开展执行。蓝牙从一定方面来说,是一种近距离数据通讯技术,采用无线的传输形式,然而和红外通讯技术点对点的传输方式相比,蓝牙可以在10米的距离之内实现一点对多点的声音与数据传输,它的传输带宽能够达到1Mbps。目前,这一技术在进行无线通讯时是免费的,可以大大简化笔记本电脑及手机等终端设备与互联网之间的通信,它采用低能耗的无线成功实现诸如视频、语音及数据等传输,可以实现同时发送与接收信号的双加工,传输距离范围一般在0.1到10米之间,假如采用功率放大器,传输的距离最大可以达到100米。总的来说,蓝牙可以实现一点对多点的数据传输,同时还具有传输耗能低、传输速率较快、组网简单方便及安全性好等优点,此外,蓝牙最为突出的一个特点就是能够在一定的传输距离内穿透建筑物,且没有关于通讯方向与视角的要求,目前,红外通讯技术不仅被广泛应用到台式电脑、笔记本电脑及打印机等设备上,同时也广泛应用于电话、相机、游戏机、网络接入设备及医疗工业设备等方面。然而蓝牙虽然是一种比较流行的新兴的短距离无线通讯技术,但是目前还没有得到广泛的应用,从某种方面来说,很多蓝牙设备目前仍然处在实验室试验的阶段,由于蓝牙具有红外通讯技术有的特点,换句话来说,具有红外通讯功能的设备能够使用蓝牙来成功实现无线连接,此外,蓝牙还具有红外通讯技术所没有的一些独具特色的功能,比如,蓝牙传输距离最大可以达到100米,可以穿透建筑物,可以实现一点对多点的传输,可以传输语音与视频等数据。   2.2多线程通讯技术应用实例   #p#分页标题#e# 下面,本文将说明如何利用VB设计出基于MSComm控件的两PC机的网络串行通信程序:a.新建工程,打开VB6.0,点击[文件]、[新建工程],出现界面。选择其中的[标准EXE]选项,新建工程。b.添加标签.选择选项卡上的标签控件,并将其添加到工程中。在右下角属性卖面板中更改标签的属性为“发送数据”,同样的步骤添加“接收数据”标签。c.添加输入文本框,并更改属性为空。d.添加发送按钮。e.添加MSComm控件。f.添加程序代码双击From1,添加代码如下:PrivateSubForm_load()MSComm1.Commport=1‘指定控件所使用的串口MSComm2.Commport=2MSComm1.Settings=”9600,n,8,1”‘设置波特率MSComm1.Settings=”9600,n,8,1”MSComm1.PortOpen=True‘打开串口MSComm1.PortOpen=TrueText2.Enabled=False‘输入框中的数据不允许更改EndSubg.PC2上的程序界面与PC1种完全相同,但是PC2是利用COM1作为接收串口,COM2作为发送串口,因此程序代码只是COM1功能与COM2功能互换即可。在此不再赘述。   3结语   综上所述,基于WIN32API的串行通信的多线程通讯原理的应用,对于异步串行通讯的实现奠定了基本的技术要求,能够进一步保证通讯信息的准确性和快速性,是多线程技术应用于寻呼系统取得了良好预期结果的集中体现。