专题九 WCF实现双向通信共44页文档
- 格式:ppt
- 大小:3.82 MB
- 文档页数:44
目录一、总体设计 (1)1、系统概述 (1)2、设计要求 (2)3、设计方案 (2)二、设计原理 (2)1、硬件设计 (3)2、系统软件设计 (4)三、系统设计图 (6)四、设计小结 (6)五、参考文献 (7)双单片机的串行通信一、总体设计1、系统概述MCS-51 单片机系列是 Intel 公司推出的功能强、速度快的 8位高档单片微型计算机系列产品,是当前工业测试系统中较理想的一种,内部有一个可编程的全双工的串行通信口,即串行通信和发送缓冲器 (SBUF),这两个在物理上是独立的接收发送器,既可以发送数据,也可以接收数据。
全双工的串行通信只需要一根输出线 (发送数据TXD)和一根输入线 (接收数据RXD)。
串行通信中主要有两种技术问题,一个是数据传送,另一个是数据转换。
具体说,在发送端,要把并行数据转换为串行数据;而在接收端,则要把接收到的串行数据转换为并行数据。
串行数据传送是将构成字符的每个二进制数据按一定的顺序进行传送的方式,串行通信协议规定字符数据的传送格式,每个串行数据由起始位、数据位、奇偶校检位和停止位组成。
本系统就是利用单片机的串行口,以串行通信方式,实现两单片机之间的数据交换,信息共享。
2、设计要求功能要求:①实现两片51单片机之间信息的串行通信。
②通信信息由小键盘(0~F)输入,发送机每按一次任意键,即刻发送到接收机。
③接收机按接收的顺序在本机的4位LED显示器上从右往左挤兑显示。
④没有接收到信息前两处的4位LED显示器不显示。
⑤每一个单片机既可以是接收机也可以是发送机。
3、设计方案本系统利用单片机的串行口,由软件和硬件两部分协调实现两单片机的串行数据传输。
硬件电路以AT89C5l单片机为核心,外围电路包括键盘电路(数据的输入),显示电路(数据的输出)。
工作在硬件电路基础上的软件主要完成数据输入,存储,显示,发送和接收。
由于两单片机相距很近,可以直接将其串行口相连。
系统整体电路图如图 1所示图 1 系统整体电路框二、设计原理此设计以AT89C5l单片机为核心,利用其内部的串行口,通过硬件与软件相结合的方式,实现双机的全双工的串行通信。
单片机应用课程设计任务书单片机应用课程设计任务书学院名称:计算机与信息工程学院班级名称:学生姓名:学号:题目:双机间的串口双向通信设计指导教师:起止日期:目录一、绪论 (5)1.1设计背景 (5)二、相关知识 (5)2.1 双机通信简介 (5)2.2 单片机A T89C51介绍 (5)2.3串口通信 (6)三、总体设计 (7)3.1 设计要求 (7)四、硬件设计 (8)4.1.整体电路 (8)4.2复位电路 (8)4.3.控制电路 (9)五、软件设计 (9)5.1甲机软件设计 (10)5.2乙机软件设计 (11)六、测试及运行 (13)心得与感受 (15)参考文献 (16)指导教师评语 (17)附录:源程序 (18)一、绪论1.1设计背景随着电子技术的飞速发展,单片机也步如一个新的时代,越来越多的功能各异的单片机为我们的设计提供了许多新的方法与思路。
对于一些场合,比如:复杂的后台运算及通信与高实时性前台控制系统、软件资源消耗大的系统、功能强大的低消耗系统、加密系统等等。
如果合理使用多种不同类型的单片机组合设计,可以得到极高灵活性与性能价格比,因此,多种异型单片机系统设计渐渐成为一种新的思路,单片机技术作为计算机技术的一个重要分支,由于单片机体积小,系统运行可靠, 数据采集方便灵活,成本低廉等优点,在通信中发挥着越来越重要的作用。
但在一些相对复杂的单片机应用系统中,仅仅一个单片机资源是不够的,往往需要两个或多个单片机系统协同工作。
这就对单片机通信提出了更高要求。
单片机之间的通信可以分为两大类:并行通信和串行通信。
串行通信传输线少,长距离传输时成本低,且可以利用数据采集方便灵活,成本低廉等优点,在通信中发挥着越来越重要的作用。
所以本系统采用串行通信来实现单片机之间可靠的,有效的数据交换。
二、相关知识2.1 双机通信简介两台机器的通信方式可分为单工通信、半双工通信、双工通信,他们的通信原理及通信方式为:1.单工通信:是指消息只能单方向传输的工作方式。
在《实例篇》给出的例子中,我实际上是通过对终结点的绑定进行相应的配置让整个消息的交换过程在一个可靠会话中进行,进而实现可靠消息传输的目的。
由于整个可靠会话的机制是完全在信道层实现的,而整个信道层的最终缔造者就是绑定,所以可靠会话编程是围绕着绑定进行的。
而从结构组成的角度讲,绑定本质上就是一组绑定元素的有序集合,没有个为了实现各自的目的对传入信道栈的消息进行消息的处理。
在这里,实现可靠会话是一个特殊的绑定元素:ReliableSessionBindingElement.一、从ReliableSessionBindingElement谈起WCF中整个可靠会话的实现完全是通过ReliableSessionBindingElem ent这个一个绑定元素创建的信道实现的。
具体的实现机制,我们会在《原理篇》进行单独的介绍,在这里我们仅仅讨论可靠会话编程的部分。
所以我们先来看看ReliableSessionBindingElement属性定义部分,因为可靠会话实现的行为是受这些属性控制的。
1:public sealed class ReliableSessionBindingElement : BindingElement, IPolicyExportE xtension2: {3://其他成员4:public TimeSpan AcknowledgementInterval { get; set; }5:public bool FlowControlEnabled { get; set; }6:public TimeSpan InactivityTimeout { get; set; }7:public int MaxPendingChannels { get; set; }8:public int MaxRetryCount { get; set; }9:public int MaxTransferWindowSize { get; set; }10:public bool Ordered { get; set; }11:public ReliableMessagingVersion ReliableMessagingVersion { get; set; }12: }虽然我们还没有深入到对可靠会话具体实现机制的介绍,但是通过前面对WS-RM可靠消息传输模型的讨论,相信读者对可靠会话的实现机制会有一个大致的了解。
【协议篇-上】在WS-*大家庭中,WS-RM为可靠消息传输提供了一个一个规范,使互操作成为可能。
在《协议篇》中,我们侧重对WS-RM的介绍。
WS- RM,为WS-Reliable Messaging的简称,是WS-*大家庭的一个重要成员。
和前面介绍的WS-Coordination和WS-AT一样,WS-RM的制定者是结构化信息标准促进组织(OASIS)。
制定WS-RM的一个主要目的就是创建一个模块化的实现可靠详细传输(Reliable Mess aging)的机制。
WS-RM定义了一种消息传输协议(Messaging Protocol),以实现在可靠消息传输过程中对消息的识别、追踪和管理。
并在此基础上,定义了SOAP绑定实现了互操作。
到目前为止,WS-R M先后出了两个官方版本,即WS-RM 1.0和WS-RM 1.1…在《实例篇》中,我通过可靠会话实现了对图片的可靠、有序的传输;在《概念篇》中,我们对可靠消息涉及到的可靠消息传输(RM)的相关概念进行了讲述。
在WS-*大家庭中,WS-RM为可靠消息传输提供了一个一个规范,使互操作成为可能。
在《协议篇》中,我们侧重对WS-RM的介绍。
WS-RM,为WS-Reliable Messaging的简称,是WS-*大家庭的一个重要成员。
和前面介绍的WS-C oordination和WS-AT一样,WS-RM的制定者是结构化信息标准促进组织(OASIS:Organization f or the Advancement of Structured Information Standards)。
制定WS-RM的一个主要目的就是创建一个模块化的实现可靠详细传输(Reliable Messaging)的机制。
WS-RM定义了一种消息传输协议(Messaging Protocol),以实现在可靠消息传输过程中对消息的识别、追踪和管理。
并在此基础上,定义了SOAP绑定实现了互操作。
利用WCF改进文件流传输的三种方式本文来自博客园作者:Frank Xu LeiWCF在跨域传输使用了两种模型的方法调用:一种是同步模型,这种模型显然对那些需要大量操作时间的方法调用(如从数据库中获取大量数据时)是一种痛苦的选择。
另一种是异步模型的方法调用,这种模型是一种非阻塞方法,其方法调用期间并不等到方法调用结束获得结果才返回,而是方法调用一经开始就马上返回,程序可以继续向前执行,被调用方法和主程序同时执行,在调用方法结束才返回结果。
显然这种模型给了我们很好的编程和使用体验。
基于WCF在普通的编码是以文本编码方式在信道之间传输信息的,这种编码会把所有的二进制信息以字节数组的形式存储,并以Base64进行编码,而Base64则是用三个字节来储存4 个字符信息。
使得数据量增大约30%以上。
在WCF中引入了一种专门针对数据流进行优化编码的MTOM模型。
下面我们使用编码模型和调用模型三种方式来改写文件流的传输,以提高WCF应用程序的性能。
1、MTOM模型:这模型在于将SOAP消息编码成SOAP MT OM(消息传输优化机制)编码。
这种编码是为那些包含大量的二进制数据的SOAP消息而做的,它是把数据流作为SOAP消息的附件而添加的。
所以利用这种编码在传输信道之间传输可以显著提高传输性能。
在WCF中MTOM 模型的操作契约中只能使用单个Stream对象作为参数或者返回类型。
这种模型的特点如图所示:1.1实现服务契约服务契约是服务所支持的操作、使用的消息交换模式和每一则消息的格式,它控制消息被格式化的方式,在这里由于要使用MTOM编码消息,所以在操作契约中必须要以单一的Stream 对象为输入输出参数。
所以这儿我们把服务定义为如下的形式:[ServiceContract]public interface ISendStreamService{[OperationContract]void SendStream(Stream stream);//这个方法的是为了传递文件的参数而设的[OperationContract]void FileNameSetting(string filename, string destinationpath);}另外我们还定义了一个传输文件路径的名称的辅助方法:FileNameSetting();1.2实现服务器方法在上面定义了公共的接口后,接下来我们就实现接口的方法,主要的方法的目的是为了传输Stream对象,由于Stream是一个抽象类,所以这儿以文件流为操作对象来使用SendStream()这个方法。
在WCF中实现双工通信双工(Duplex)模式的消息交换方式体现在消息交换过程中,参与的双方均可以向对方发送消息。
基于双工MEP消息交换可以看成是多个基本模式下(比如请求-回复模式和单项模式)消息交换的组合。
双工MEP又具有一些变体,比如典型的订阅-发布模式就可以看成是双工模式的一种表现形式。
双工消息交换模式使服务端回调(Callback)客户端操作成为可能。
一、两种典型的双工MEP1.请求过程中的回调这是一种比较典型的双工消息交换模式的表现形式,客户端在进行服务调用的时候,附加上一个回调对象;服务在对处理该处理中,通过客户端附加的回调对象(实际上是调用回调服务的代理对象)回调客户端的操作(该操作在客户端执行)。
整个消息交换的过程实际上由两个基本的消息交换构成,其一是客户端正常的服务请求,其二则是服务端对客户端的回调。
两者可以采用请求-回复模式,也可以采用单向(One-way)的MEP进行消息交换。
图1描述了这样的过程,服务调用和回调都采用请求-回复MEP。
图1 请求过程中的回调2.订阅-发布订阅-发布模式是双工模式的一个典型的变体。
在这个模式下,消息交换的双方变成了订阅者和发布者,若干订阅者就某个主题向发布者申请订阅,发布者将所有的订阅者保存在一个订阅者列表中,在某个时刻将主题发送给该主题的所有订阅者。
实际上基于订阅-发布模式的消息交换也可以看成是两个基本模式下消息交换的组合,申请订阅是一个单向模式的消息交换(如果订阅者行为得到订阅的回馈,该消息交换也可以采用请求-回复模式);而主题发布也是一个基于单向模式的消息交换过程。
订阅-发布消息交换模式如图2所示。
图2 订阅-发布二、实例演示:创建基于双工通信的WCF应用接下来我们通过一个的案例演示基于双工通信的WCF应用。
为简单起见,我们沿用计算服务的例子。
在这之前,我们都是调用CalculuateService直接得到计算结果,并将计算结果通过控制台输出。