首页 > 文章中心 > 接口协议

接口协议

开篇:润墨网以专业的文秘视角,为您筛选了八篇接口协议范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

接口协议范文第1篇

关键词:HART协议 DCS接口卡 应用

根据HART协议的DCS接口卡的硬件和软件设计,我们对其进行过研究分析,了解DCS-HART接口卡的功能和它的工作过程,让我们更好的知道DCS接口卡是怎样对现场仪表进行控制操作的。

一、HART协议

HART协议是远程传感器高速通道的开放协议,它采用的是半双工通信方式,在原有的模拟信号传输上进行数字信号的通信,这种将模拟信号转变为数字信号的系统得到了快速的发展,它设定了一系列的命令其中有通信命令、行为命令、特殊设备命令,这三种命令可以同时出现在一个设备中 。

二、DCS-HART接口卡的硬件设计

DCS-HART接口卡的工作程序,是由MPU对串行口2和DCS通讯,经过串行口1和现场仪表进行通讯,根据卡件的工作状态进行控制信号的输出来决定DC\DC器件向通讯线的供电。MODEM将MPU输出的数字信号转变为HART协议的物理层信号,从MODEM向通讯链路发送的波形和在链路上接收到的波形要进行放大、驱动。变压器使得DCS-HART接口卡和通讯链路发生了耦合作用,将HART协议产生的物理层信号进行叠加,加到要进行采样的电阻上,采样电阻是电压/电流的转换器件,它将HART协议产生的物理层信号转化成电压信号,而DC/DC器件主要是用于向通信链路进行隔离供电。

三、软件设计

1.能够保证DCS和现场仪表的通讯

HART协议对于通讯波特率的规定实际上只有1200bps,它不可能在一次中断完成命令的接受/发送,所以在HART仪表的通讯中断中,每次只接收/发送一个字节,根据接受/发送的状态进行字节的成帧,这样进行的中断需要耗费的时间仅有几百个微秒,每两个字节发送的时间间隔是9.167ms,这是两次通讯程序的中断时间间隔。

如果在DCS串行口中断执行时产生HART通讯中断,可以在DCS中断程序退出后进行HART程序的中断。如果在HART的串行口进行中断时有DCS通讯中断发生在结束HART中断后,再进行DCS中断。

2.有随时插随时用的功能

接口卡的这个功能可以分为两个含义:(一)接口卡可以随时对下位仪表的在线状态进行检测,并将检测结果报告给用户。(二)接口卡可以将下位仪表的数据进行读取或者是对下位仪表发送用户设置的参数。

用户他们不需要在DCS操作台上对每台仪表的信息进行组合,通电开始,卡件就会依次的对每台设备进行地址的查询,并收集每一台设备的管理信息,把这些收集到的信息保存到设备管理的缓冲区域中,方便DCS进行查询。根据下位机的在/离线状态实时数据就会在50ms一次中报告给DCS,所以用户想要观察到画面中的每一路现场仪表的在线状态可以在DCS的操作站台上进行查看[1]。

3.在DCS的结构上实现了对HART仪表的网络管理

DCS对于HART网络的管理存在不足之处,那就是在通讯结构上是进行的主从式通讯,通讯的层次相对较多,通讯的速率也比HART协议规定的1200bps快的多的多。

由于现场仪表的上/离线情况是突发性的,所以当接口卡检测到这种事情的发生后就会自动的将事件上报给DCS的室内操作台,而主从式的通讯结构是不能完成这样的上报事件的,由于这种事件的信息量不是很大,所以只需要很少的字节就可以将全部现场仪表的在线状态表达出来,所以,这种信息可以放到实时数据里发送给操作[2]。

为了使现现场仪表中的信息得以保存,操作台要4次的数据命令,才能使得每一层的信息得以更新,第4次收到的信息才是最新的现场仪表组态信息。

4.HART协议的通讯速度问题

HART协议发送一个字节需要9.167ms,在HART协议中一个很简单的命令就有十几个字节,而对于下位机的响应又有二十几个字节,要完成一次通讯命令要花去将近半秒钟的时间。所以轮询4台下位机要花去2s的时间,DCS和接口卡的实时数据通讯时间对于2s来说可以是忽略的,也就是说实时数据可以在两秒内进行一次更新,如果发生DCS下达命令,实时数据的更新就会增加时间。在完成对4台仪表5遍的实时数据检测,平均响应时间为最大的响应时间一半,也就是5s[3]。

四、小结

DCS接口卡中HART协议的应用,在一定的程度上减少对现场仪表的维护工作,还节约了材料。DCS接口卡初步的实现了对现场仪表的网络化管理,DCS-HART接口卡现场仪表的总线进行了功能的集成,对于DCS接口卡进行对现场仪表系统的完全控制可以慢慢的进行探索。

接口协议范文第2篇

【关键词】SOA 电子渠道接口协议 Web services 业务流程超市化运营

中图分类号:TP391.1 文献标识码:A 文章编码:1006-1010(2013)-08-0082-04

1 广东移动电子渠道和NGCRM接口体

系建设背景

广东移动的电子渠道现状是由几个不同时期建立的网站、短信营业厅、WAP、掌上营业厅、自助终端和面向集团业务的ADC等子系统组成的一个集合。各子系统有自己的渠道特点和擅长的业务,分别承担了某客户群的支撑功能。总体而言,各渠道系统在系统功能层面是相互割裂的,各电子渠道和CRM系统之间的划分界面目前也不清晰,缺乏整体数据及功能层面的规划。因此,电子渠道和NGBOSS接口开发基本上是由业务驱动,即针对某个具体业务增加或者修改相应的接口,某一接口基本上只和实现特定的业务功能相对应。目前NGCRM系统接口的直接问题表现如下:

(1)接口通用性和稳定性不强。经常出现的问题是现有接口无法满足某项特定的业务需求而需要临时增加新的接口,这导致目前的接口数量很大且功能繁杂;在业务支撑上表现为接口有时会拖延业务的上线;相关的接口维护部门的工作负荷也增大。

(2)接口没有合理的扩充和版本适应机制。现状往往使设计者在选择支撑方式时倾向于增加新的接口,因为其成本和风险与在现有接口上扩充相比低得多。

(3)电子渠道现状中的竖井模式也增加了接口收敛的难度。不同的电子渠道对接口有各自的需求,在现有接口上扩充不可避免地会影响已经使用的系统,牵一发而动全身,使得设计者和决策者往往倾向于增加额外接口以满足新的需求。

(4)潜在的安全风险还包括:

1)无流控机制:接口的负荷可以直接传导到核心CRM系统,进而影响到一个区域甚至整个广东移动的业务处理;

2)接口的调用方目前没有认证控制:只要是能够接入CRM核心系统的周边系统都可以调用接口;

3)无接口调用的审计机制。

因此,在NGBOSS建设中对电子渠道接口体系在业务能力和架构上进行重新规划已经成为当务之急。

2 广东移动电子渠道和NGCRM接口体

系介绍

随着NGBOSS的建设,电子渠道接口体系的重新规划和设计成为NGBOSS建设的重要组成部分,其方法论确定为:横向整合和纵向解耦。所谓横向整合是梳理各电子渠道共性的功能、数据、流程,结合电子渠道的业务目标,最终明确目标电子渠道系统架构是由哪些通用的业务流程和数据驱动;纵向解耦则是梳理电子渠道系统和CRM系统的配合分工关系,使得电子渠道和CRM分别承载相对独立的业务流程,以此两点为基础,并同样按照包括了功能、数据、流程的分布,最终确定电子渠道和NGCRM两个系统之间的接口体系规划。

本部分首先将涉及电子渠道的业务需求子集作为输入,完成业务流程框架需求分析,进而分解流程,形成接口数据需求分析,最后完成接口梳理。

通过横向整合和纵向解耦确定的NGCRM和电子渠道接口体系,从以往的以单个业务渠道接口协议为主过渡到了以通用流程、数据分解电子渠道和NGCRM的功能为主并在此基础上明确协议,使得大量接口协议具有和单个业务无关的通用性。这种思路明确了NGBOSS的电子渠道系统和CRM系统之间的接口服务调用关系。

广东移动NGBOSS中NGCRM作为业务服务的提供方,提供对电子渠道的统一接口体系。在进行NGBOSS电子渠道接口设计前,根据电子渠道和CRM的解耦分布对需求进行了分解,甄别出涉及电子渠道和CRM之间存在穿越流程的需求点共143个,识别出涉及穿越的流程共21个。在数据方面,接口按照NGCRM数据域划分为:客户服务域、客户管理域、渠道域、资源域、订单域、产品域。

由于电子渠道系统和NGCRM系统之间的交互主要以流程驱动为主,因此电子渠道系统和NGCRM系统的接口设计也以系统流程穿越为主线,数据复制和查询为辅;通过尽量将主要流程进行通用化设计,流程层面的接口的功能体现为对通用服务的调用;按照将业务功能逻辑集中的NGCRM朝着电子渠道轻量化方向发展的思路,在梳理的业务流程和数据流基础上进行了NGBOSS的电子渠道接口设计。

NGBOSS电子渠道接口协议的总体框架如图1所示。

NGBOSS的电子渠道接口按照功能可以划分为受理相关接口、非受理相关接口、产品接口、ADC专用接口:

(1)受理类相关接口目前共有43个,分别提供了包括客户身份认证、各种客户相关信息的查询、订单受理等功能;

(2)非受理相关接口目前共有266个,提供了包括积分查询,各种增值业务查询等杂项功能;

(3)产品接口目前共有2个,提供了产品配置变更查询;

(4)ADC专用接口目前共有12个,提供了ADC工单杂项功能。

3 基于SOA技术的新一代电子渠道接口

协议体系设计

考虑到电子渠道接互的是异构的系统集群,为最大程度地实现跨系统间的业务交互提供服务,NGBOSS基于SOA进行电子渠道接口协议设计,支持SOAP v1.1协议和基于Web Services的HTTP协议传输,提供URL使用Web方式实时提供服务。核心系统NGCRM提供使用基于XML的语言接口定义文件(WSDL)供电子渠道下载。

基于SOA技术的电子渠道接口协议实现了核心的NGCRM系统和异构的平台之间架构上的松耦合,核心系统NGCRM在协议升级时只需要更新WSDL文件,平台可以在此基础上实现对服务的无缝调用;而平台只要按照语言接口定义文件(WSDL)约定调用服务即可,平台内部的演进改造与接口调用无关。

4 NGBOSS电子渠道接口协议体系实施

的效果

基于SOA电子渠道接口协议为广东移动产品在电子渠道的超市化运营提供了技术保障。NGCRM和电子渠道互相协调,使得产品管理、产品上架、产品销售、产品算费等产品生命周期全流程做到了全配置化,产品实现了超市化运营。

电子渠道和NGCRM协调实现产品超市化运营的流程如图2所示。

在产品管理和上架方面,CRM产品配置服务中心是企业产品数据创建和变更的唯一入口。它向电子渠道后台管理提品创建、变更和产品上架服务,图片、Flash等产品富媒体描述通过CRM产品配置中心数据库向电子渠道产品库同步数据。

电子渠道作为和客户的直接接触点,设计用户界面对产品进行展示,并且在电子渠道上完成产品浏览和购物等相关操作。

用户提交订单后,NGCRM负责后台面向客户产品订购的端到端流程,负责维护和处理CRM订单的开通,并负责维护交易的完整性;向电子渠道用户提供订单流程查询和订单变更功能。

NGCRM管理所有产品的订购关系,并向BOSS的计费系统同步订购关系。实现由产品展示、订单处理到后台计费的全业务流程。

可见,在这种架构下,电子渠道只要专注于提供便捷友好的用户界面即可,至于产品管理和订单处理、计费环境的复杂业务逻辑能力已被NGBOSS承载并封装在开放的标准接口中提供给异构的电子渠道调用,加之前后端系统的协调就实现了产品的超市化运营。

参考文献:

[1] 郑宇晟,黎伟健. 互联网时代电子渠道数据业务发展策略[J]. 移动通信, 2012(21): 81-85.

接口协议范文第3篇

关键词:套接口,网络编程,TCP/IP协议

 

1 引言

网络应用程序是通过网络使用通信协议实现进程间的通信,TCP/IP就是网络上常用的协议之一,在进行网络应用程序设计时,TCP/IP协议的核心内容被封装在操作系统中。网络应用程序要使用TCP/IP协议来实现自己的功能,只能通过由系统提供给用户的TCP/IP协议编程接口来实现[1]。因此,可以说设计网络应用程序就是利用网络编程接口(API)进行程序设计的过程。在Windows环境下的网络应用程序编程接口叫Windows Sockets,即套接口。

2 套接口

2.1 套接口的概念

WindowsSockets API 依靠套接口Socket进行通信。套接口可看成是两个网络应用程序进行通信时,各自通信连接中的一个端点。通信时,其中的一个网路应用程序将要传输的一段信息写入它所在主机的Socket中,该Socket通过网络接口卡(NIC)的传输介质将这段信息发送到另一台主机的Socket中,使这段信息能传送到其它程序中,如图1所示。[1]

当主机A上的网络应用程序A要发送数据时,通过调用数据发送函数首先将要发送的一段信息写入Socket中,Socket中的内容通过主机A的网络管理软件由主机A的网络接口卡发送到主机B,主机B的网络接口卡接收到这段信息后,再传给主机B的网络管理软件,网络管理软件将这段信息保存在主机B的Socket中,然后程序B才能在Socket中读取并使用这段信息。由此看来,Socket的本质是通信过程中所要使用的一些缓冲区及一些相关的数据结构。

2.2 套接口的分类

为了满足不同的通信程序对通信质量和性能的要求,一般的网络系统提供了三种不同类型的套接口,以供用户在设计网络应用程序时根据不同的要求来选择。免费论文。这三种套接口分别是:

(1)流式套接口(SOCK_STREAM),它提供了一种可靠的、面向连接的双向数据传输服务,实现数据无差错、无重复地发送。流失套接口内设流量控制,被传输的数据看作是无记录边界的字节流。在TCP/IP协议族中,使用TCP协议来实现字节流的传输,当用户想要发送大批量的数据或者对数据的传输有较高的要求时,使用流式套接口。

(2)数据报套接口(SOCK_DGRAM),它提供了一种无连接、不可靠的双向数据传输服务。免费论文。数据包以独立的包形式被发送,并保留了记录边界,不提供可靠性保证。数据在传输过程中可能会丢失或重复,并且不能保证在接收端数据按发送顺序接收。免费论文。在TCP/IP协议族中,使用UDP协议来实现数据报套接口。在同一台计算机上或负载较轻的LAN上,因为出现差错的可能性较小,所以可以使用数据报套接口进行数据传输,这样通信的质量可以得到保证,并且通信的效率较高。

(3)原始套接口(SOCK_RAW),该套接口允许对较低层协议(如IP或ICMP)进行直接访问,常用于检验新的网络协议实现,也可用于测试新配置或安装的网络设备。

3 Socket编程基础

3.1 Socket工作模式

Socket以客户/服务器模式工作。Socket服务器程序通常事先已经启动,并在一个众所周知的端口监听对服务的请求。Socket客户应用程序需要某种服务时,便向提供服务的Socket服务器发出请求,服务器接收到请求后,就响应客户提出的请求[2]。

3.2 基本套接字的系统调用

应用程序常用的函数列举如下,

WSAStarup():检查系统中是否有WindowsSockets的实现库

Socket():创建一个Socket

Bind():为创建的Socket指定通信对象

Connect():请求连接

Listen():等待连接状态

Accept():接收连接请求

Send()/Recv():发送接收数据(TCP)

Sendto()/Recvfrom():发送接收数据(UDP)

CloseSocket():关闭指定的Socket

WSACleanup():释放为应用程序或DLL分配的任何资源

3.3用于无连接协议(如UDP)的Socket系统调用流程框图

3.4 用于面向连接协议(如TCP)的Socket系统调用流程框图

4 编程实例

本实例使用了Visual C++6.0下的控制台程序,该程序中的通信协议使用的是面向连接的TCP协议(SOCK_STREAM)[3]。服务器端的IP地址使用系统指定的IP地址,端口号在程序中指定为6000。

4.1 服务器端的实现

建立一个空的基于控制台的应用程序 TCPserver,引入头文件:WINSOCK2.H,在Project—>settings—>ink—>object/libarymodules 下引入:ws2_32.lib库

实现代码如下,

#include <WINSOCK2.H>#include <stdio.h>

int main(){WORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested=MAKEWORD(1,1);err=WSAStartup(wVersionRequested,&wsaData);if (err!=0){return 0;}if (LOBYTE(wsaData.wVersion)!=1||HIBYTE(wsaData.wVersion)!=1){WSACleanup();return 0;}

//检查系统中是否有Windows Sockets的实现库,如果没有则释放为应用程序或DLL分配的任何资源

SOCKETsockSrv=socket(AF_INET,SOCK_STREAM,0);

//创建套接口SOCKADDR_IN addrSrv;addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);

//htonl()函数把一个四字节主机字节顺序的数转换为网络字节顺序的数addrSrv.sin_family=AF_INET;addrSrv.sin_port=htons(6000);

//htons()函数把一个双字节主机字节顺序的数转换为网络字节顺序数

bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));

//把套接口与指定的主机ip地址和端口号联系起来listen(sockSrv,5);

//进入监听状态,最多同时可以接受5个连接请求SOCKADDR_IN addrClient;int len=sizeof(SOCKADDR);

while (TRUE){SOCKET sockTemp=accept(sockSrv,(SOCKADDR*)&addrClient,&len);

//创建一个临时套接口,与其中一个客户端建立连接

char sendbuff[1024];sprintf(sendbuff,'Welcome to zhangjie');

//将字符串格式化到buff中去send(sockTemp,sendbuff,strlen(sendbuff)+1,0);

//向客户端发送数据

char recvBuff[1024];recv(sockTemp,recvBuff,strlen(recvBuff)+1,0);

//接收客户端发送的数据printf('%s ',recvBuff);

closesocket(sockTemp);

//关闭套接口

}return 0;}

4.2 客户端的实现

建立一个空的基于控制台的应用程序TCPClient,引入头文件:WINSOCK2.H,在Project—>settings—>ink—>object/libarymodules 下引入:ws2_32.lib库

实现代码如下,

#include <WINSOCK2.H>#include <stdio.h>

int main(){WORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested=MAKEWORD(1,1);err=WSAStartup(wVersionRequested,&wsaData);if (err!=0){return 0;}if (LOBYTE(wsaData.wVersion)!=1||HIBYTE(wsaData.wVersion)!=1){WSACleanup();return 0;}

//检查系统中是否有Windows Sockets的实现库,如果没有则释放为应用程序或DLL分配的任何资源

SOCKETsockClient=socket(AF_INET,SOCK_STREAM,0);

SOCKADDR_IN addrClient;addrClient.sin_addr.S_un.S_addr=inet_addr('127.0.0.1');

//点分十进制转化成ULong类型addrClient.sin_family=AF_INET;addrClient.sin_port=htons(6000);

//转化成网络字节序connect(sockClient,(SOCKADDR *)&addrClient,sizeof(SOCKADDR));

//请求与服务器建立连接char recvBuff[1024];

recv(sockClient,recvBuff,1024,0);printf('%s ',recvBuff);

send(sockClient,'I am zhangjie',strlen('I am zhangjie ')+1,0);

closesocket(sockClient);WSACleanup();

//通信结束后释放资源return 0;}

5 小结

本文介绍了套接口的基本概念和实现套接口编程的基础,并给出了一个在VC平台下实现的基于TCP的客户/服务器通信实例,体现了套接口编程的灵活性。

6 参考文献

[1]任泰明.TCP/IP协议与网络编程[M].第1版.西安:西安电子科技大学出版社.2004;94-139

[2]邹月,陈建兵.Socket的网络编程研究与实现[J].电脑编程技巧与维护.2008.10-12

[3]谭桂华,魏亮.Visual C#高级编程范例[M].第1版.北京:清华大学出版社.2004;202-235

接口协议范文第4篇

一、网络故障分层诊断技术

1、物理层及其诊断。物理层是OSI分层结构体系中最基础的一层,它建立在通信媒体的基础上,实现系统和通信媒体的物理接口,为数据链路实体之间进行透明传输,为建立、保持和拆除计算机和网络之间的物理连接提供服务。物理层的故障主要表现在设备的物理连接方式是否恰当;连接电缆是否正确;MODEM、CSU/DSU等设备的配置及操作是否正确。确定路由器端口物理连接是否完好的最佳方法是使用show interface命令,检查每个端口的状态,解释屏幕输出信息,查看端口状态、协议建立状态和EIA状态。

2、数据链路层及其诊断。数据链路层的主要任务是使网络层无须了解物理层的特征而获得可靠的传输。数据链路层为通过链路层的数据进行打包和解包、差错检测和一定的校正能力,并协调共享介质。在数据链路层交换数据之前,协议关注的是形成帧和同步设备。查找和排除数据链路层的故障,需要查看路由器的配置,检查连接端口的共享同一数据链路层的封装情况。每对接口要和与其通信的其他设备有相同的封装。通过查看路由器的配置检查其封装,或者使用show命令查看相应接口的封装情况。

3、网络层及其诊断。网络层提供建立、保持和释放网络层连接的手段,包括路由选择、流量控制、传输确认、中断、差错及故障恢复等。排除网络层故障的基本方法是:沿着从源到目标的路径,查看路由器路由表,同时检查路由器接口的IP地址。如果路由没有在路由表中出现,应该通过检查来确定是否已经输入适当的静态路由、默认路由或者动态路由。然后手工配置一些丢失的路由,或者排除一些动态路由选择过程的故障,包括RIP或者IGRP路由协议出现的故障。例如,对于IGRP路由选择信息只在同一自治系统号(AS)的系统之间交换数据,查看路由器配置的自治系统号的匹配情况。

二、路由器接口故障排除

1、串口故障排除。串口出现连通性问题时,为了排除串口故障,一般是从show interface serial命令开始,分析它的屏幕输出报告内容,找出问题之所在。串口报告的开始提供了该接口状态和线路协议状态。接口和线路协议的可能组合有以下几种:①串口运行、线路协议运行,这是完全的工作条件。该串口和线路协议已经初始化,并正在交换协议的存活信息。②串口运行、线路协议关闭,这个显示说明路由器与提供载波检测信号的设备连接,表明载波信号出现在本地和远程的调制解调器之间,但没有正确交换连接两端的协议存活信息。③串口和线路协议都关闭,可能是电信部门的线路故障、电缆故障或者是调制解调器故障。④串口管理性关闭和线路协议关闭,这种情况是在接口配置中输入了shutdown命令。通过输入no shutdown命令,打开管理性关闭。接口和线路协议都运行的状况下,虽然串口链路的基本通信建立起来了,但仍然可能由于信息包丢失和信息包错误时会出现许多潜在的故障问题。正常通信时接口输入或输出信息包不应该丢失,或者丢失的量非常小,而且不会增加。

接口协议范文第5篇

关键词:VoIP;公用信道;服务器

中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)24-1185-04

在VoIP通信过程中,服务器要为每个客户端创建一个信道来维持与其通信。这种用于和客户端保持通信的信道称为协议信道。如图1所示,传统的VoIP服务器都是由上层控制模块来直接控制协议信道,由于上层控制模块和底层协议信道相关,无法实现对不同类型协议信道的控制,因此传统VoIP服务器只能够支持单一的协议。如果能够设计出可同时支持多种协议的服务器,那么它就可以对各种协议进行处理和转换,从而解决不同VoIP协议的互通问题。

1 公用信道的思想

为了解决分布异构问题,人们提出了中间件的概念。中间件是位于平台(硬件和操作系统)和具体应用之间的通用服务,这些服务具有标准的程序接口和协议。中间件能够屏蔽操作系统和网络协议的差异,为应用程序提供多种通讯机制,并提供相应的平台以满足不同领域的需要。因此,中间件为应用程序提供了一个相对稳定的高层应用环境。这里借鉴了中间件的思想,在底层协议信道和上层控制模块之间添加一类特殊的信道,称为公用信道。图2描述了增加公用信道以后服务器控制协议信道的方式。通过公用信道将上层控制模块和底层协议信道相分离。公用信道提供了一系列的接口,上层控制模块只需通过这些接口就可以控制公用信道,从而达到管理和控制整个会话过程的目的,而不必关注底层协议信道具体使用的是哪种VoIP协议。

2 公用信道接口

2.1 会话模型

不同VoIP协议虽然在信令、媒体传输方式上存在不同,但服务器建立会话的过程都大致分为以下几个阶段:

呼叫开始:当服务器收到客户端的呼叫请求后,建立主叫用户信道。然后查找被叫用户地址,创建与被叫用户通信的信道。

呼叫被叫:在主被叫信道建立之后,开始向被叫用户发送能够呼叫请求消息,并等待被叫用户应答。

通话:服务器收到被叫用户应答后,就开始转发主被叫用户的语音数据。

呼叫结束:当收到主叫或被叫用户的挂机请求后,服务器分别拆除主被叫信道,结束通话。

公用信道可以根据服务器建立会话的过程,抽象出一系列与会话相关(呼叫、应答、挂机)的接口,以便上层控制模块使用这些接口来管理和调度公用信道,从而控制整个会话过程。

2.2 接口的多态性

多态性提供了接口和实现的分离,也就是说把做什么和怎么做分开来。多态性不但能改善代码的接口,提高其可读性,而且能创建可扩展的程序。

由于公用信道位于各协议信道之上,公用信道的这些接口的实现是和底层协议信道相关的。根据底层VoIP协议的不同,这些接口的实现方法有很大的差别。因此可采用多态性的思想来设计公用信道接口。由公用信道中定义上层控制模块调用的接口,而这些接口的实现交给底层各协议信道来完成。

在会话过程中,控制模块只需调用这些接口来控制会话,程序会根据底层信道类型的不同,调用相应的函数,公用信道因此表现出不同的行为。这样公用信道就屏蔽了底层协议信道的差异性,从而解决了不同VoIP协议的互通问题。

这种方式还具有良好的扩展性。当需要增加对一种新协议的支持,只需在底层实现公用信道定义的这些接口,而不必对公用信道和上层控制模块做任何改动。

2.3 多态性的实现

由于公用信道接口在实现上的多态性,这里使用结构体com_channel_tech来封装公用信道的接口。该结构体中包含了很多函数指针,这些函数指针指向接口的具体实现。根据底层协议信道类型的不同,底层使用不同的函数来填充com_channel_tech中的各个字段以实现这些接口。当上层控制模块调用某一接口时,系统根据会根据com_channel_tech的具体类型(底层使用的协议)调用相应的函数。这样我们就屏蔽了底层协议信道的差异性,为上层控制模块的调用提供了统一的接口。上层只需调用这些接口,就可以实现对公用信道的统一管理和调度,而不必关注在底层采用的是哪种协议。

例如,当接收到SIP请求,创建公用信道时,上层控制模块只需直接调用com_request接口,从而间接调用结构体com_channel_tech中request函数指针所指的sip_request函数。而对于IAX协议,相应的函数就换成了iax_request函数。

3 协议映射

3.1 公用帧

为了便于上层控制模块管理会话,公用信道中只使用一种协议来传输信令和语音,这种协议称为公用协议。以公用协议格式封装的帧称为公用帧(COM帧)。从客户端发送到协议信道的各种协议帧,必须首先转换成COM帧后才能送入公用信道,然后由控制模块对其进一步处理。从公用信道发往客户端的COM帧,需要根据底层协议信道的类型,进行相应的帧格式转换后才能发送。

由于公用信道既要处理信令又要转发语音数据,所以COM帧分为信令帧和语音帧两种类型。信令帧主要用于控制会话的进程,而语音帧用于传输实际的语音数据。采用结构体com_frame来表示COM帧:

struct com_frame {

int frametype;

int subclass;

int datalen;

int samples;

void *data;

struct timeval delivery;

};

其中frametype字段用于说明COM帧的类型属于信令帧(COM_FRAME_CONTROL)还是语音帧(COM_FRAME_VOICE)。

对于信令帧,只有subclass字段有意义,该字段用于说明信令帧表示的具体控制信息。

对于语音帧,subclass字段代表该语音帧使用的编码格式;datalen表示语音帧长度;samples表示采样点数;delivery表示发送时间戳;指针data指向实际的语音数据。

3.2 信令帧的映射

底层信道的各种协议帧在送入公用信道之前需要转化成COM帧。从公用信道中出来的COM帧需要转化成协议信道能处理的帧。不同协议帧之间的转换过程称为协议映射。协议映射关系的制定是实现VoIP互通的前提和保证。

3.3 语音帧的映射

为了保证语音在转发时不会失真,COM帧在传输语音时必须包含以下信息:语音编码格式、语音数据长度、采样点数、发送时间戳以及实际的语音数据。因此,其它协议帧在转化成COM帧时,必须完成以上内容的转换。

1)IAX帧映射到COM帧:对于IAX协议,语音是通过Mini帧来传输的,在开始发送语音和固定时间间隔内发送Full帧来同步语音帧。由于Mini帧只包含16位的时间戳和语音数据,协议信道需要将先前从Full帧中获得的语音编码格式subclass和32位的时间戳记录下来。这样,语音数据的编码格式可以从对应的协议信道获得。语音数据长度可由Mini帧帧长减去帧头长度得出。采样点数是根据数据长度和编码格式计算得出。时间戳由Full帧的高16位和Mini帧的16位组合而成。原始语音数据直接存入到COM帧的data字段。IAX帧的其他信息与转发语音无关,均保存在协议信道之中。

2)RTP帧映射到COM帧:对于SIP协议的客户端,语音数据通常是通过RTP帧来传送的。从RTP帧转化成COM帧,时间戳可以直接从RTP帧头的timestamp字段取得,语音编码格式从PT字段中得到,语音数据长度可由帧长减去帧头长度计算得出,采样点数也是根据数据长度和编码格式计算得出,而原始的语音数据直接存入到相应字段。

4 语音传输方式

在呼叫建立之后,客户端开始语音通信。语音传输方式有两种:一种是P2P方式,另一种是服务器转发方式(Server Relay)。

4.1 P2P方式

P2P方式是指语音数据直接从一个客户端发送到另一个客户端。P2P传输方式具有降低网络时延、减轻服务器负荷等优点。但不是任何客户端之间都可以建立P2P连接的。除了通信双方需要知道彼此的地址外,P2P还要具备如下条件:

1)通信双方采用相同的信令和语音传输方式。也就是说客户端采用的是相同的VoIP协议。

2)如果通信的一方或双方的网络中存在NAT,语音数据要能够穿越对方的NAT。

3)通信双方要能够理解对方所发送的语音数据。也就是说,发送语音数据的编码格式要能够为对方所支持。

对于满足上述条件的会话,服务器在建立呼叫后会调用com_bridge函数,尝试为客户端之间建立P2P连接。如果建立P2P成功,服务器就释放与客户端通信的信道,由客户端之间直接进行语音通信。

4.2 服务器转发方式

对于不满足建立P2P条件的客户端之间的会话,需要由服务器转发双方的语音数据,也就是说客户端先将语音数据发送给服务器,由服务器转发到另一个客户端。根据会话类型的不同,服务器的转发方式又分为以下两种。

1)经过公用信道的转发

对于不同客户端的语音通信,语音数据需要进行协议类型、语音编码格式的转换,这些都是由公用信道负责完成的。因此,语音数据要送入公用信道处理。图3描述了SIP和IAX客户端进行语音通信的过程。下面以SIP客户端向IAX客户端发送语音通信为例,来说明语音数据的传输路径。SIP客户端的语音以RTP帧的形式发送到服务器的RTP信道中,被转换成COM帧后送入到所在的公用信道。公用信道将其发送给与IAX客户端对应的公用信道。然后调用相应的接口函数将COM帧转换成IAX帧后,发送至IAX客户端。

2)不经公用信道的转发

对于同类型客户端的通信,由于语音数据不需要进行协议、编码格式的转换,可以将其直接发送到对方的协议信道中。所以可以优化上面的传输路径。图4描述了IAX客户端之间进行语音通信的过程,一方的语音数据以Mini帧格式发送到服务器,然后由IAX信道直接将该Mini帧发送到对方的IAX信道。这样语音数据就不必经过双方的公用信道,也不需要对帧类型进行转换,因而提高了语音数据的传输效率,减少了时延。

5 公用信道的通信

5.1 收发COM帧

每个公用信道都维护着一个readq队列,该队列是由COM帧组成的。协议信道发给公用信道的COM帧都是先送入该队列中。当服务器监听到某个公用信道有COM帧时,调用接口函数com_read,从该公用信道的readq队列中读取COM帧进行处理。

对于要发送给客户端的COM帧,直接调用公用信道提供的接口函数com_write即可。该函数的实现是由底层完成的,根据底层协议信道类型的不同,先将COM帧转化成对应的协议帧,然后调用套接字函数sendto将其发往客户端。

5.2 IO多路转接

如前所述,会话建立后上层控制模块要同时管理和控制主被叫两个公用信道,监听主被叫信道的readq队列是否有COM帧到来。如果采用传统的IO阻塞技术,那么线程就可能长时间阻塞在一个信道上,而另一个信道虽然有很多数据却不能得到及时处理。在这种情况下,我们使用IO多路转接技术来同时监听多个信道。

所谓IO多路转接技术,是先构造一张有关描述符(公用信道)的列表,然后调用poll函数,同时监听这些信道,直到这些信道中的一个已准备好进行IO(有数据发生)时,该函数立即返回。在返回时,它会告诉进程哪个信道有数据发生。poll函数的定义如下:

#include

int poll(struct pollfd fdarray[],nfds_t nfds,int timeout);

参数:fdarray 数组中的每一个元素对应一个描述符(公用信道)

nfds描述符的个数

timeout 监听(等待)时间

返回值:准备就绪的描述符,若超时则返回0,若出错返回-1

5.3 管道机制

COM帧是由底层的发送线程送至公用信道的readq队列中,而监听公用信道是由上层控制模块的线程来完成的。由于发送COM帧和监听COM帧是由服务器的不同线程控制,因此需要建立管道机制来解决线程间的通信问题。

在每个公用信道创建的时候,定义了一个alterpipe[2]的数组,用于建立通知管道。其中alterpipe[0]对应于管道的读端口,alterpipe[1]作为管道的写端口。在开始呼叫后,服务器会调用poll函数来监听公用信道的读端口alterpipe[0]。

当有数据送入到readq队列,底层发送线程控制该信道对应管道的写端口alterpipe[1]向读端口alterpipe[0]发送一个通知信号(通常是一个字符)。当读端口接收到该信号后,poll函数就立即返回,并告诉系统哪个信道有数据请求处理。服务器就从该信道对应的readq队列中读取出COM帧。这个过程可由图5来描述。

6 互通实例

下面就以IAX与SIP互通为例,说明互通过程中协议的映射过程。这里以SIP客户端发起呼叫和先挂机为例,呼叫的具体流程如图6所示,图中省略了一些次要消息的交互过程。

6.1 呼叫建立

主叫方SIP协议信道收到呼叫请求后,立即建立主叫公用信道。并分析被叫号码,根据被叫客户端的类型,建立相应的被叫公用信道以及到被叫客户端的协议信道。这样,双方就可以开始建立呼叫。SIP客户端呼叫IAX客户端的信令过程描述如图5所示:

1)SIP客户端向服务器的SIP信道发送INVITE消息;2)SIP信道收到INVITE消息,立即创建主叫公用信道,并向SIP客户端发送100 Trying消息,确认收到呼叫请求,服务器正在处理中;3)SIP信道将INVITE消息翻译成COM_CONTROL_INVITE消息,并发送到主叫公用信道中;4)当公用信道收到该消息后,立即创建一个新线程,接入到上层控制模块,分析被叫号码,查找被叫地址,并根据被叫客户端类型分别创建被叫公用信道和被叫IAX信道,以便与IAX客户端通信;5)被叫公用信道将COM_CONTROL_INVITE消息转换成NEW消息发送给IAX信道;6)IAX信道将该消息发送给IAX客户端;7)IAX客户端发送ACCEPT消息确认建立连接;8)IAX客户端发送RINGING消息,表示其正在振铃中;9)IAX信道将RINGING消息转化成COM_CONTROL_RINGING消息,发送给被叫公用信道;10)被叫公用信道将该消息转发给主叫公用信道;11)主叫公用信道将COM_CONTROL_RINGING消息翻译成180 Ringing消息,发送给SIP信道;12)SIP信道将该消息发送给SIP客户端;13)IAX客户端发送ANSWER,表示被叫端已经应答。ANSWER消息按与Ringing消息类似传送过程转化成200 OK消息发送给SIP客户端。呼叫建立完成,双方开始语音通信。

6.2 语音转发

SIP协议采用的是RTP传输语数据音,而且收发语音的端口不同于SIP协议端口(2N,2N+1,N为随机整数);IAX是信令和语音是共享端口的,使用Mini帧传输语音。同前面的信令映射方法类似,语音帧也需要经过RTP/Mini帧 COM帧 Mini/RTP帧的转化过程。

6.3 呼叫释放

呼叫结束的过程如图6所示:28)SIP客户端向服务器的SIP信道发送BYE消息,请求结束会话;29)SIP信道收到BYE消息,立即向SIP客户端发送ACK消息,确认收到结束;30)SIP信道将BYE消息翻译成COM_CONTROL_HANGUP消息,并发送给主叫公用信道中;31)主叫公用信道将COM_CONTROL_HANGUP消息发送给被叫公用信道,并释放主叫公用信道和SIP信道;32)被叫公用信道向IAX信道发送HANGUP消息;33)IAX信道向IAX客户端发送HANGUP消息;34)IAX客户端向IAX信道发送ACK消息,表示已收到释放请求。服务器释放被叫公用信道和IAX信道。

参考文献:

[1] 张登银,孙精科.VoIP技术分析与系统设计[M].北京:人民邮电出版社,2003.

[2] Abbasi T, Prasad S, Seddigh N., Lambadaris I. A Comparative study of the SIP and IAX VoIP protocols.Electrical and Computer Engineering,2005.Canadian Conference on1-4 May 2005 Page(s):179-183.

[3] 糜正琨.IP网络电话技术[M].北京:人民邮电出版社,2000.

接口协议范文第6篇

【关键词】血液净化系统;转换器;SPI接口

0 引言

血液透析又被称为血透,是用来净化病人血液的一种方法。透析用浓缩液和透析用水经过透析液供给系统配制成合格的透析液,通过血液透析器与血液监护警报系统引出的病人血液进行溶质弥散、渗透和超滤作用;作用后的病人血液通过血液监护警报系统返回病人体内,同时透析用后的液体作为废液由透析液供给系统排出;不断循环往复,完成整个透析过程。本次设计主要在于血液透析机的监控模板模块的软件部分。该模块通过RS232接收主控板的控制命令,并解释,使用相应的指令通过SPI接口发送给驱动板,从而达到控制下层设备的目的。

1 RS485-SPI通信转换器总体介绍

1.1 转换器系统简介

血液透析机系统外部框图主要包括:主控板、转换器、血泵、补液泵、超滤泵、肝素泵、平衡腔、加热器、电导板、电源、指示灯、按键界面等等。从功能上可以将系统分成四部分。按键发送、指示灯控制、协议转换、系统监测。

按键发送,由按键扫描定时器每0.1s扫描一定矩阵键盘,将扫描码转换成按键码,并将按键信息通过CBUS模块(CBUS模块为按键指示灯控制协议通信模块)封装成帧格式,通过CBUS总线发送给主控板。

指示灯控制,是通过CBUS接收主控板发送的CBUS命令帧,由CBUS处理任务对命令帧进行解释,然后更新状态灯的亮灭状态。对于报警灯置相应的标志,由报警灯闪烁定时器对报警灯进行直接控制。

协议转换功能是将主控板发送的485协议帧进行解释,再通过调用各个模块的驱动将转换后的命令通过SPIBUS总线模块下发到各个子模块;如果需数据返回的,则从模块读出的数据根据485协议,通过调用DBUS模块的发送功能上传给主控板。

系统监控则是监控主控板在规定的时间内是否有发送了命令。如果在规定时间内都没有发送命令,则视为主控板死机。

1.2 协议转换原理

如图2所示,主控板的信号是RS232电平信号,而底层485模块使用的是RS485协议。故在监控板上通过硬件设计将RS232电平转换TTL电平,监控板再将TTL电平信号转换成485电平信号从RS485接口输出。

TTL信号又与MCU的USART2连接。监控板能获取485总线上的数据流,并对所有命令进行监听。如果是转给SPI总线上所挂载的模块的485命令,那么就将485帧转换成SPI帧,通过SPI总线转送到SPI模块。

如图2所示,系统挂4个模块,超滤泵、平衡腔为485模块,血泵、肝素泵为SPI模块。主控板并不关心多少模块是挂载到SPI总线上,而是一律视为485模块。监控板的协议转换功能则是监听485命令,将与血泵与肝素泵相关的命令转换成SPI分别发送给血泵或肝素泵。从而达到协议转换功能。

2 SPI接口

2.1 SPI的作用

医用透析机包含许多终端子系统,如血路子系统、液路子系统、加热子系统、监控子系统、抗凝子系统等,这些子系统需要接受透析机主控系统的控制,目前的子系统提供SPI接口,主控模块提供RS232接口,且RS232传播距离有限,需转换为RS485接口才能确保与各个子系统之间的长距离通信。因此需设计一个转换器,转换器硬件实现RS232―RS485―SPI之间的接口转换,转换器软件实现RS232协议数据与SPI协议数据之间的匹配,而本文主要讲实现SPI接口软件设计。

2.2 SPI通信协议概述

规定本次设计中主机与各模块间采用SPI接口进行信息交换的通信协议。设定主机(含人机界面的主控制模块)到各从机(独立的分散控制模块)间的信息为下行数据,各从机到主机的信息为上行数据。其通信拓扑为星型结构,主机集中控制方式,各从机可通过中断向主机申请中断处理(若此时主机未与其它从机通信)。

2.3 SPIBUS驱动

SPIBUS是基于SPI通信接口根据本系统而扩展的设备数据通信总线。其主要用于与子模块,如直流电机、肝素泵、平衡腔等,进行通信。发送命令字控制子模块工作,读取子模块的数据。

SPIBUS模块主要为模块驱动提供统一良好的SPI总线访问接口。除了负责SPI数据通外,还负责根据SPI总线通信协议,在发送数据中发送同步码、计算并发送校验和;在接收数据时,对校验和进行计算并校验。

3 通讯调试记录

3.1 试验通讯调试方案简介

医用RS485-SPI通信转换器的试验方案设计如图1。本设计实验方案主要的目的是通过主机与转换器,转化器与血泵、补液泵、超滤泵、肝素泵、平衡腔、驱动板等连接组成一通路。通过主机下达指令,再通过SPI接口下达给血泵、补液泵、超滤泵、肝素泵、平衡腔、驱动板等;以串口调试助手是否有返回相应得到数据为依据。以此来判断试验方案是否成功,已达到检验医用RS485-SPI通信转换器是否实现其对应功能。

3.2 测试情况总结

通过上面的试验通讯调试设计方案,可以看出所做的医用RS485-SPI通信转换器装置是成功的。在主控板也就是PC机与受控设备之间数据的往返,通过串口调试助手清晰地看到实现了通讯信息的正常工作时相应的各种状态。

4 结束语

由于本系统为医疗设备,对安全性与可靠性要求较高。在系统出现异常,可能威胁到病人的生命安全时,必须需要一种设备能确保系统处于安全状态,对系统的异常情况进行报警及安全处理。监控板在系统中启动监视系统工作状态的作用。因而本文主要是介绍监控板,完成监控板中转换器的SPI接口软件设计与实现。对通信转换器的系统了解以及其工作原理,我们大概知道了SPI接口在其中主要是起一个信息交换,将RS232协议数据通过RS485协议帧解释然后下达给SPI接口协议,最终下达给各个子模块,完成信息交换。

【参考文献】

[1]范书瑞,赵燕飞.ARM处理器与C语言开发应用[M].北京航空航天大学出版社,2008.

[2]邱铁.ARM嵌入式系统结构与编程[M].清华大学出版社,2009.

[3]范书瑞,李琦,赵燕飞.Cortex-M3嵌入式处理器原理与应用[M].电子工业出版社,2011.

[4]陈启军,张伟,周伟.嵌入式系统及其应用:基于Cortex-M3内核和STM32F103系列微控制器的系统设计与开发[M].同济大学出版社,2011.

接口协议范文第7篇

本方案中,千兆以太网通信接口的软件设计主要是基于TI公司提供的嵌入式操作系统SYS/BIOS和TCP/IP网络开发包NDK(NetworkDevelopment′sKit)来实现的。网络开发包NDK是TI公司为本公司DSP的网络程序开发提供的平台,采用自顶向下、分层、模块化的设计方法来支持TCP/IP协议,并占用较少的系统资源(对于常规的TCP/IP服务,程序空间仅需200KB~250KB的程序空间,数据空间仅需95KB)。TCP/IP协议的体系结构包括应用层、传输层、网络层、数据链路层以及物理层,对于NDK模型,网络开发包NDK就实现了5层体系结构中的传输层、网络层、数据链路层。图3为TCP/IP模型与NDK模型的对比示意图。

NDK通过编程接口与嵌入式操作系统SYS/BIOS以及底层硬件相互隔离。对于NDK而言,SYS/BIOS被抽象成一个操作系统适应层(OSAdaptationLayer),底层硬件被抽象成一个硬件适应层(HardwareAdaptationLay-er),它们的函数库OS.LIB、HAL.LIB成为了NDK与SYS/BIOS以及底层硬件的接口。图4为基于NDK与SYS/BIOS的通信接口软件架构图。由图4可以看出,NDK主要包含NETTOOL.LIB、STACK.LIB、OS.LIB、HAL.LIB、NETCTRL.LIB五个部分。(1)NETTOOL.LIB提供网络服务,包含NDK提供的基于网络服务的所有套接字以及一些用于网络应用开发的附加工具。(2)STACK.LIB是主要的TCP/IP协议栈,提供了顶层(套接字层)至底层(以太网和PPP层)的所有功能。(3)OS.LIB提供与SYS/BIOS操作系统的接口。(4)HAL.LIB提供与底层硬件的接口。(5)NETCTRL.LIB控制TCP/IP协议栈与外界的交互,管理所有网络事件、协调操作系统与硬件驱动,主要包括:①初始化TCP/IP协议栈和底层设备驱动;②启动和维护系统配置(通过配置服务提供者的回调函数);③连接底层设备驱动和安排驱动事件呼叫TCP/IP协议栈;④卸载系统配置和清除底层驱动。对于基于NDK与SYS/BIOS的通信接口的软件架构,其实现主要分为三部分工作:(1)编制底层驱动程序。底层硬件驱动负责向TCP/IP协议栈提供具体的操作接口,用以控制以太网器件的配置和运行,主要包括:初始化驱动环境,包括器件复位、中断使能、存储区数据访问优先级设定、器件枚举和配置等;以太网数据包的接收和发送;监测底层网络器件状态,将事件信息反馈给协议栈;关闭驱动环境,并收回占用的系统资源。(2)在SYS/BIOS操作系统平台上配置和运行NDK的TCP/IP协议栈。CCS5.3提供了配置工具XGCONF来实现图形化界面配置NDK,如图5所示,传输层、网络层、数据链路层分别选用TCP、IP、EMAC协议,并对其作相关必要的配置,主要包括发送/接收窗口大小、IP地址、生存时间等内容的配置。(3)开发用户定制的网络应用程序。本方案中主要是完成接收上位机控制信息和发送结果信息这些操作,采用流式套接字(Socket)来实现。Socket是应用层与TCP/IP协议簇通信的中间软件抽象层,它是一组接口,把复杂的TCP/IP协议簇隐藏在其后面。对于用户来说,一组简单的Socket接口就是全部通信过程,让Socket去组织数据,以符合指定的协议。

本设计中,选取DSP作为服务器,上位机作为客户端。对于DSP端,先初始化一个监听Socket,然后与端口绑定(bind),并对端口进行监听(listen),再调用accept阻塞,等待PC端连接。对于PC端,先初始化一个Sock-et,然后请求连接DSP端(connect),若此时DSP端正处于等待PC端连接状态,则DSP端接受此连接请求,于是,PC端与DSP端就成功建立起了连接。PC端发送数据请求,DSP端接收请求并处理请求,再把回应数据发送给PC端,PC端读取数据,最后关闭连接,一次交互结束。DSP与上位机进行Socket通信的具体过程如图6所示。

2功能测试

为了测试本文设计的千兆以太网接口的可行性,PC端采用VC++的MFC来设计测试程序,测试程序主要实现对单通道正弦信号的采集、处理以及显示等操作,测试界面如图7所示。根据具体的设计需求,测试程序分为数据发送/接收和数据处理/显示这两个部分。其中,数据发送/接收部分通过Socket编程完成与DSP的收发数据包等通信过程,数据处理/显示部分不仅能够支持用户对服务器端参数和控制参数的可配置,而且通过显示接收到的正弦信号时域波形与频谱图,实现对PC端与DSP端通信的直观体验,同时更增加了本接口程序的可移植性与可扩展性。通过测试可以发现,正弦信号的时域波形图与频谱图较为流畅,且稳定性较高,能够支持长时间稳定可靠传输及显示。

3结论

接口协议范文第8篇

关键词:HCI;蓝牙技术;无线通信

1 引言

蓝牙(Bluetooth),是一种短距离无线通信技术,用于替代数字设备牙设备运行在和计算机外设间的电缆连接以及实现数字设备间的无线组网。1998年5月由爱立信、IBM、英特尔、诺基亚、东芝等5家公司成立了蓝牙特殊利益小组(SIG),负责联合制定蓝牙规范。蓝牙工作在向全球统一开放的2.4GHz工业、科学、医学(Industrial Scientific Medical)频段,可以同时传输数据和语音,至多8个活动的蓝牙设备可以共享信道带宽,形成所谓的匹克网(piconet)。在每一个piconet中,有1个为蓝牙主设备,其余7个为从设备,同时可容许有更多的从设备以暂停(park)的方式锁定到主设备。多个picon-

et可以相互重叠。形成散射网(scattern-

et)。

SIG所颁布的蓝牙规范就是蓝牙无线通信协议标准,它规定了蓝牙应用应遵循的标准和需要达到的要求,包括核心协议(Core)与应用框架(Profiles)两部分。协议规范部分定义了蓝牙的各层通信协议,遵循开放系统互连参考模型,从低到高地定义了蓝牙协议堆栈的各个层次,如图1所示。

按照蓝牙协议的逻辑功能,协议堆栈由下至上分为三个部分:传输协议、中介协议和应用协议。本文中主机控制接口(HCI)位于传输协议之中,它并不是严格意义上的通信协议,它仅为应用协议堆栈的高层部分提供了一个访问低层传输协议的指令接口。

如果我们从HCI层出发,可以将蓝牙协议堆栈分为硬件与软件2个协议块。硬件部分由射频部分(RF)、基带部分(BB)、链路管理器部分(LM)和HCI固件构成,我们也可以把硬件部分称为蓝牙子系统。软件部分由HCI主机驱动程序、逻辑链路控制适配协议(L2CAP)、串口仿真协议(RFCOMM)、服务发现协议(SDP)、电话控制协议(TCS)及其它应用协议所构成。在蓝牙协议堆栈模型中的虚线部分为对本文中HCI协议层软件的具体划分。

2 HCI协议剖析

在蓝牙协议模型中,HCI软件驱动程序与HCI固件统一归为HCI(主机控制接口),所以要基于HCI进行开发,首先必须了解HCI涉及的具体内容。主机控制接口为蓝牙硬件中基带控制器和链路管理器提供了命令接口,从而实现对硬件状态寄存器和控制寄存器的访问,特别是该接口提供了对蓝牙基带的统一访问模式。HCI分为主机、传输层、主控制器三部分,并在每一层为HCI系统提供不同的功能。本文把HCI协议层划为HCI软件和HCI硬件两部分来加以讨论。

2.1 HCI软件

HCI软件部分可分为HCI固件和HCI驱动两个部分。

HCI固件位于主控制器。HCI固件通过对基带命令、链路管理器命令、硬件状态寄存器、控制寄存器和事件寄存器的访问,实现蓝牙硬件HCI指令。主控制器(Host Controller)意味着具有主控制接口功能的蓝牙器件。

与HCI固件不同,HCI驱动位于主机,即协议模型中的HCI软件驱动部分。若某事件发生,用HCI事件通知主机,而主机将收到HCI事件的异步通知。当主机发现有事件发生时,它将分析收到的事件包并决定何种事件发生。主机端的HCI驱动程序,一方面通过接口被蓝牙应用程序调用(本文所提到的蓝牙应用程序是相对于HCI层而言的,指的是构建于通用外接模块上的扩展应用程序),实现对上层应用的承载;另一方面实现了协议中的HCI功能集,使主机可以向蓝牙子系统发送HCI指令,或接收子系统返回的HCI事件。

2.2 HCI的硬件

HCI驱动和HCI固件是通过主控制器传输层(位于主控制器与主机之间的中间层)进行通信的,这些中间层和主控制传输层提供了在没有数据描述信息情况下传输数据的能力。在蓝牙规范的描述中,蓝牙子系统与主机之间共有3类数据转移的方式、每一种数据在硬件接口均具有一定的封装格式,分别是由3种传输层支持,分别为UART/RS232和USB。采用不同的主控制器传输层对主机所接收的HCI事件异步通知不会产生影响。

3 蓝牙应用开发方案

在图1中所提到的主机是一个广义的概念,可以是以MPU为核心的计算机、也可以是以MCU为核心的控制电路,二者用途各异。其中以MCU为核心的控制电路适用于嵌入式应用开发,而以MPU为核心的计算机则适合于人机接口的软件开发。

蓝牙协议为建立于蓝牙技术之上的多种应用提供了完整的解决办法,但对于不同应用一般只用到蓝牙协议中的某几个,而且对于每部分协议也不用它所提供的全部功能。进而,在蓝牙应用开发中可以从不同的协议层入手。在开发蓝牙系统时,一般采用两种方式进行开发,一种是采用只提供无线接口的简单模块,从蓝牙子系统做起,再针对应用自行开发主芯片,该主芯片包括从基带层到应用层的完整蓝牙协议栈,这种开发方式较为复杂,但不一定需要HCI层;另一种方法是购买由供应商提供的完整的蓝牙模块,这些模块实现了蓝牙子系统的全部或部分功能,屏蔽了射频和基带两个硬件协议层,可以直接在HCI基础上进行开发。

目前供应商提供的蓝牙模块大致可分为2类,第1类为只实现了蓝牙链路控制功能的模块,第2类为蓝牙链路控制与嵌入式HCI驱动功能均已实现的模块。这2类模块的主要不同之处在于第2类包括一个RISC(精简指令集计算机)处理器,实现链路控制和HCI功能,而第1类的RISC则不具有HCI功能。在实际应用中,要根据实际情况而选择不同类型的模块。

如果选用集成了链路控制与HCI驱动功能的蓝牙模块,那么就可以在一个比较完整的平台上进行开发。如果主机具有USB或UART接口,在蓝牙模块与主机信号电平兼容的情况下,接口连接可以不需要其它辅助硬件电路。许多情况下,USB或UART接口集成在主机的核心芯片上,所以可以实现蓝牙模块与主机的无缝接口。这种模型下的蓝牙技术应用开发,主要工作集中在蓝牙主机端软件的实现上,包括HCI驱动程序与传输层驱动程序。正是由于这种蓝牙模块实现了嵌入式HCI协议,所以应用开发可以直接从HCI层开始,避免了基带与射频的硬件实现,是一种全软件式的开发模式,开发成果具有很好的可移植性。本文中正是采用了这一开发方案进行的蓝牙通用外接模块的开发。通过封装HCI协议层,可以生成标准的HCI接口函数,为上层的应用开发(在本文指的是蓝牙通用模块)提供一个完整的平台。

制功能的蓝牙模块,由于它不提供HCI传输层接口和嵌入式HCI驱动程序。此时,嵌入式HCI驱动程序的功能将转嫁给主机来实现。这样,与前一种开发模式相比,主机的HCI层驱动程序将变得十分复杂,开发周期也将是比较长的。

4 蓝牙通用外接模块设计开发实例

笔者基于HCI成功地开发了一种在现有的供应商提供的蓝牙模块基础上进行指令重新解释与结构封装的通用外接模块。本模块最终面向基于此通用模块的扩展应用,提供了USB接口、UART/RS232接口、耳机接口、麦克MIC接口、键盘等多种接口,可同时进行数据和语音信息的传输。该通用外接模块既可以单独构成蓝牙应用系统使用,也可以与主机连接使用,使用应用者很方便地借助于蓝牙技术来实现应用产品的无线通讯。

为了对此通用外接模块进行功能测试,在实验开发阶段(本文中对此通用模块说明均是针对开发阶段的),笔者使用了两台PC作为通用外接模块之上的扩展应用的主体,2个通用外接模块分别作为蓝牙piconet中的主、从设备,蓝牙设备通过UART或USB口由PC处接收命令和数据信息,通用外接模块对此信息进行处理后,以无线传输方式将信息发至另一蓝牙设备的应用主体PC处。

下面从硬件和软件两个方面加以介绍,本文论及的设计主要包括蓝牙通用模块及作为扩展应用主体的PC两大部分。

4.1 硬件设计

蓝牙通用模块部分硬件电路主要由语音芯片、微控制器部分(即蓝牙主机部分)及蓝牙模块等组成。硬件结构如图2所示:

其中采用了支持双串口的DALLAS公司生产的DS89C420微控制器作为蓝牙主机,两串口分别与蓝牙模块及构建于通用模块之上的扩展应用的主体进行通信;使用MSM7560L语音芯片;蓝牙模块采用的是Ericsson公司生产的模块,型号为ROK 101 007,属于本文提到的第2类模块,采用ARM7芯片作为RISC处理器。

在硬件实现上,微控制器部分主要由DS89C420微控制器、电源系统、振荡电路、复位电路、接口电平转换电路等几部分组成,微控制单元是核心部分。电平转换电路用于在蓝牙模块与PC通信接口之间进行电平的转换。另外还包括一些不同类型的接口电路、跳线开关电路以及若干状态LED等外围器件,以备建立于通用外接模块之上的扩展应用及通讯状态监测的需要。

4.2 软件设计

4.2.1 PC部分软件设计

PC部分测试程序主要是开发蓝牙应用组件,测试程序运行于Windows操作系统之上,提供了USB和串口驱动程序,应用程序函数接口(API)等,具体可分为PC串口初始化、蓝牙通信参数设定、蓝牙通用外接模块控制、HCI指令封装、数据信息处理等几个部分。

其中第一步要做的工作是初始化计算机串口,串口参数可以根据实际需要进行选择。第二步要进行的是蓝牙模块参数的设定,其中包括蓝牙设备主从设定、蓝牙模块初始化参数的设定、程序监测设定等几部分。以上所有这些动态设定,是通过扩展应用主体(此外为PC)往通用外接模块串口发送公共变量而实现的。当收到参数设定成功消息后,进行下一步,即向通用外接模块串口发送命令消息来实现蓝牙设备的初始化、查询、链接建立过程,在收到通用模块发回的链接建立完成的反馈信息后,即可按一定的格式将数据信息发往通用外接模块接口,完成数据信息的无线传输。

4.2.2 通用外接模块软件设计

通用外接模块一方面从PC方的RS-232串口接收PC端的公共参数信息(用于串口初始化及蓝牙模块参数设定)、命令信息及数据信息,另一方面发送相应的 HCI指令给蓝牙模块ROK 101 007,然后将返回的事件进行分析处理,最终将有关程序状态、通讯数据信息返回给本地PC。软件实现的全部功能是通过C51语言进行开发的,由专用寄存器设置子程序、中断处理程序、定时器中断程序、看门狗程序、链路初始化子程序、链路建立子程序、通信数据处理子程序、断开链路子程序、蓝牙测试子程序等功能块来完成。所有程序信息对于通用外接模块以外的扩展应用主体而言都是不可见的,扩展应用只需按一定的格式发送相应的信息给通用外接模块即可完成整个通信过程,在此就不对程序进行具体的说明了。

至此,通用外接模块开发实验阶段软件设计完成,通过测试本模块完全达到了预期的要求,数据传输正常,性能良好。

本封装模块之所以被加以“通用”二字来界定,是因为本模块在功能上很好地做到了以下几点:

(1)本模块提供了对多种扩展应用接口的支持,包括UART/USB以及语音传输接口。

(2)本模块既支持以MPC为扩展应用主体的计算机上的扩展应用,又支持以MCU为扩展主体的控制器件上的扩展应用;

(3)本模块提供对多种操作系统的支持,目前为止,支持Windows95/98/2000/

xp及Linux操作系统。

5 一种构建于通用外接模块之上无线通讯扩展应用——裁判系统

目前,在很多大型赛事中比赛所采用的裁判打分系统大都是采用有缆连接的方式进行的,各位裁判将各自的评定的比赛成绩通过有线的电缆传输到主控机上进行综合评定,然后产生最终的结果。但这一系统存在着一个很明显的不足之外,就是有缆连接所带来的不便性,而通过采用笔者所设计的通用外接模块后, 通过在通用外接模块的基础上相应地增加LCD、键盘和MCU后,只要对外加的MCU进行简单的编程既可实现裁判打分系统的无线通讯化。

日前,笔者参与设计的蓝牙无线打分系统已被成功地用于很多大型比赛之中。

6 结束语

蓝牙产品的开发重在有特色的应用,在通用模块的基础上进行外围设备的开发和上层软件的编写,可以大大地缩短产品的开发周期,为各种蓝牙应用奠定了基础,从而方便地实现产品的蓝牙无线通讯,使人们摆脱各种线缆的束缚。目前基于蓝牙技术的产品开发,正在短距离无线通信中显示出一股强劲的势头,蓝牙技术的大发展期必将很快的到来。

参考文献

[1] Bluetooth Special Interest Group,

Specification of Bluetooth System

Core v1.1[s],2001.

[2] 马兴,梁剑,陈前斌.基于HCI协议层

的蓝牙技术应用开发[J].重庆邮电学

院学报,2002,14(4):78-82.

[3] 金钝,许光辰等.蓝牙技术.北京:

电子工业出版社,2001.