logo资料库

自定义串口数据通信协议的分析与设计.pdf

第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
资料共3页,全文预览结束
第30卷 第24期 Vol.30 № 24 计 算 机 工 程 Computer Engineering 2004年12月 December 2004 ·开发研究与设计技术 · 文章编号:1000—3428(2004)24 —0192—03 文献标识码:A 中图分类号: TP393 自定义串口数据通信协议的分析与设计 王承君 潍坊学院计算机系,潍坊 ( 261041) 以微软公司的串口通信控件为底层接口,建立了一个简单的串口通信协议。协议的设计基于帧传输的思想,采 摘要: 用发送应答重连失败的方式进行。利用该协议能实现双机短信聊天、文件传输等实时数据通信功能。 关键词: ;通信协议;串口;数据帧 MSComm(SPCP)SPCP / / / SPCP Analysis and Design of Self-defining Serial Port Communication Protocol WANG Chengjun (Department of Computer ,Weifang College, Weifang 261041) 【Abstract 】 This paper proposes a simple serial port communication protocol (SPCP) based on MSComm developed by Microsoft Company. The notion underling SPCP design is data frame transfer in sending/acknowledging/reconnecting/failure way. By SPCP, real-time applications can be developed, for example, peer-to-peer chatting, file transfer, and so forth. 【Key words】SPCP; Communication protocol; Serial port; Data frame 串行通信接口是计算机标准配置的通信接口, (RS232) 利用串口进行数据通信、数据采集等是计算机的重要应用领 域之一。建立在串口之上的数据传输可以根据具体的实际情 况构建自己的数据交换规则,即通信协议。本文讨论的即是 构建在短信、文件传输等方面的数据通信协议。 1 SPCP 协议分层结构 为了实现计算机之间的通信并减少协议设计的复杂性, 大多数网络通信按层次方式进行组织,并且可以参照事实上 的国际标准七层通信模型。从通信角度看,各层提供的 服务可以分为两大类,即面向连接的服务和无连接的服务。 SPCPSPCP 见图 。1 的设计是基于面向连接的服务。协议体系结构图 OSI 接收端程序 数 据 发送端应用程序 文 件 传 输 短 信 传 输 其 它 缓冲区 SPCP 串 行 通 信协议 MSComm 控件 Windows API 串行口 文 件 传 输 短 信 传 输 其 它 缓冲区 SPCP 串 行 通 信协议 MSComm 控件 Windows API 串行口 1 SPCP 图协议体系结构图 (SPCP) 串口通信协议的设计 2 SPCP 的设计思想基于帧传输的方式,即在向串口发送 数据时是一帧一帧地发送。对于上层应用如文件传输 来 说,应用程序所发送和接收的都是流式数据,即如果应用程 序需要进行上层协议解释的话,这些流式数据将面临重新拼 ) ( —192— / / 装。为保证可靠的传输,在传输开始前,通过握手建立连接 类似协议;在每一帧的传输中采用发送应答重连 (TCP/IP)/ 失败的方式进行。 2.1 帧格式 本传输协议中设计种帧:控制帧、数据帧、短语帧。 其中控制帧和数据帧用于文件传输,短语帧用于短消息发 送。每一帧分为帧头和负载两个部分,其中帧头占个 字6 节,前两个字节用于区分种帧,后个字节对于不同帧的意 义各不相同,负载长度不定。 2.1.1 数据帧 数据帧的帧头见图的前两个字节均为,第 、字节 (2)02 3 3 3 4 (AB)4 5 (MN)2 3 、部分表示负载数据的长度,用字节表示,第 、字节 、部分表示第 、字节的校验和。 序号 意义 0 1 1 0 2 A 3 B 4 M 5 N 图数据帧的帧头 2 规则: ·第 、字节为表示数据帧; 1200 ·表示传输数据长度, ·表示校验, 负载数据的长度通常根据运行程序的输出缓冲区大小而 ABL=A*100+B MNM*100+N=A+B ; 。 定,一般最多不超过输出缓冲区的一半。 2.1.2 控制帧 控制帧分为发送端控制帧和接收端控制帧,除发送端控 制帧中的“请求接收新文件”帧外,其余控制帧均不含负 载,控制帧头如图 。3 作者简介:王承君-,男,副教授,主研方向为网络编程与 (1966 网络通信、数据库应用 收稿日期:2004-08-10 E-mail wcj_sdwf@sina.com : )
序号 意义 0 1 1 0 2 A 3 B 4 M 5 N 图控制帧头 3 规则: ·第 、字节为表示控制帧,为请求表示,为附加 1210ABMN 表示。 ·当时,表示描述字符串文件名子串的长度,表示 AB=11M N 描述字串中文件大小的长度。 ·时,通知放弃传输。 ·时,通知文件传输完毕。 ·时,请求对方发送数据。若,请求发送下一 AB=10 AB=00 AB=01mn=10 个,若,请求重发。 mn=00 信息短语 帧 2.1.3 ( 短语帧的组成与数据帧相似,前两个字节均分别为 和0 ) ) ,第 、字节、部分表示负载数据的长度,用字节表 123(AB 示。与数据帧不同的是短语帧没有校验,同时数据帧的负载 为二进制数据,而短语帧的负载为文本数据,见图 。4 序号 意义 0 0 1 1 2 A 3 B 4 X 5 X 图短语帧头 4 规则: ·第 、字节为表示信息帧。 1201 ·表示数据长度, ·为配位字符,任意。 数据分帧与数据重组 应用程序发送来的数据作为一个流按协议进行分 ABL=A*100+B XX SPCP 2.2 帧,切割后为每帧加上帧头和校验和进行发送;在接收端, 分帧的数据去掉帧头后存入文件缓冲区,接收完成后写入磁 盘。整个过程如图、图 。 6 5 数据分帧: 加帧头、校验和 SPCP 发送缓冲区 应用数据 《〈〈〈〈〈〈发送 图发送5 》》》》》》》接收 SPCP 接收缓冲区 分析帧:去掉帧头、校验 SPCP 面向应用的数据缓冲区 3 传输过程 图接收6 在发送数据前,发送方将数据进行分帧包装,然后按发 送请求、数据传输、发送完成的步骤进行通信。 3.1 由发送端发“请求接收新文件”信号,等待反馈。 发送请求 (1) (2) (3) (4) 数据传输 (1) (2) 3.2 接收端收到请求信号后,向用户询问是否接收。 用户确认接收后,接收端发出“请求发送文件”信号。 发送端收到“请求发送文件”信号后,开始发送数据。 首先由发送端发出第一帧数据,然后等待反馈。 接收端收到一帧数据后,若帧长度校验和错误则发 出“请求重新发送帧数据”信号,如果正确,则发出“请求 发送下一帧数据”信号。 (3) 若发送端收到“请求重新发送帧数据”信号,则重 新发送先前发送的帧数据。 (4) 若发送端收到“请求发送下一帧数据”信号,则首 先检查已经发出的一帧数据是否是最后一帧,如果是则发出 “发送完毕”信号,否则,发送下一帧数据。 重复 、 、的步骤。 3.3 (5)(2)(3)(4) 发送完成 (1) 发送方发出“发送完毕”信号后,关闭文件,并提 示用户“发送完毕”。 (2) 接收端受到“发送完毕”信号后,则把文件缓冲区 中存储的数据写入磁盘,然后关闭文件,并向用户提示“接 收完毕”。 4 SPCP 4.1 MSComm 协议的实现 控件 本 通 信 协 议 的 底 层 数 据 接 口 采用控 件 。MSComm 控件是公司提供的简化下串行通 ActiveX MSCommMicrosoftWindows 信编程的控件,它为应用程序提供了通过串行接口 收发数据的简便方法,在 、等编程环境下均可使用。 MSComm 询方式。 控件提供两种处理通信方式:事件驱动方式和查 VBVC (1) 事件驱动通信是处理串行端口交互作用的一种非常 有效的方法。在许多情况下,在事件发生时需要得到通知, 例如,在或线上 Carrier Detect (CD) 一个字符到达或一个变化发生时。在这些情况下,可以利用 MSComm OnComm 和通信错误都可通过属性获得 控件的事件捕获并处理这些通信事件。 OnComm 事件还可以检查和处理通信错误。所有通信事件 Request To Send (RTS) CommEvent 。 (2) 在 程 序 的 每 个 关 键 功 能 之 后 , 可 以 通 过 检 查 控件的属性的值来查询事件和错误。 MSCommCommEvent 如果应用程序较小,并且是自保持的,这种方法可能是更可 取的。例如,如果写一个简单的电话拨号程序,则没有必要 对每接收一个字符都产生事件,因为唯一等待接收的字符是 调制解调器的“确定”响应。 每个使用的控件对应着一个串行端口。如果 MSComm 应用程序需要访问多个串行端口,必须使用多个MSComm 控件。可以在控制面板中改变端口地址和中断 地址。 4.2 SPCP 协议实现的主要算法设计 Windows 当通信控件接收到数据以后,触发 MSCommMSComm 控件的事件,从而对接收数据进行处理。图是当 OnComm MSCommSPCP 通信控件接收到数据以后协议的处理逻辑。 7 关于文件接收管理的功能主要包括发送文件请求、发送 数据帧和发送完成信号功能,同样文件接收管理的功能主要 包括接收新文件、请求发送、请求重新发送和接收完成处理 等功能,限于篇幅,处理逻辑这里不在列出。 —193—
N 信息帧? Y 数据帧? Y 计算长度 计算长度 串口接收 串口接收 内容显示 N 校验正确? Y 文件发送管理:重发 文件接收管理:新帧 文件发送管理:新帧 文件接收管理:重发 获取帧头 控制帧? Y 读取控制标示 新文件? N 请求数据? N 传输完成? N 放弃传输? N Y Y Y Y 接收文件名 接收文件长度 文件接收管理:新文件 N N 新帧数据? Y 发送完成? Y 文件发送管理:完成 文件发送管理:完成 串口等待 图7 处理逻辑 图 7 5 协议应用实例 双机互联程序通过串口将两台计算机连接起来,按照自 (SPCP) 8VB6.0 定义的串口通信协议进行信息交换,实现通过串口进 行聊天、文件收发的功能。图是用开发的程序主界 面。图中左半部分负责聊天功能,右半部分负责实现文件传 输功能。上方工具条上的个按钮分别完成打开串口、关闭 串口、配置串口参数功能。左部中央的编辑框显示聊天的信 息,左方下部的文本框完成短信息发送功能。界面的右半部 分负责文件的传输,如果需要发送文件,必须选中“发送文 3 图程序主界面 8 ( 件”单选框,在其下的文本框中输入或选择文件, 然后单击开始传输;若要接收文件,选择“接收文 件”单选框,在其下的文本框中输入或选择保存路 径和文件名,单击开始传输进行文件接收。 6 结束语 ) ( ) 本文以控件作为底层接口建立了一个 MSComm (SPCP) 简单的串口通信协议。从中可以了解如何创建 简单的通信协议以及开发协议时遵循的技术。当然本 协议还有许多不完善之处,比如文件传输效率不高, 安全性没有考虑等,有待于以后进一步优化。 参考文献 . Visual C++. 李现勇串口通信技术与工程实践北京:人民邮电出 1 Stewart R R, Xie Qiaobing. Stream Control Transmission Protocol (SCTP). A Reference Guide . Addison-Wesley Pub. Co., Bk&CD- Rom Edition, 2001-12 2 版社,2002 3 版社,2003 4 谭思亮串口通信工程开发实例导航北京:人民邮电出 丸山修考日通信协议技术北京:科学出版社, .Visual C++. 2004 (). . ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ ) 上接第 页 (124 二元和三元的正确率相差不多,可见当词的距离变大后,词的 前后影响迅速减弱。 错误分析 (2) 标注错误可分为两类:未登录词性错误和兼类词错误。 以三元正向马尔可夫为例,总词数;标注正 : 122 276 确;标注错误 : 107 371 : 14 905 。 /n /a /n /n /u /n 占 /n /n 48.7% 其中,未登录词性占,兼类词错误 7 64451.3%7 261 。 未登录词性 天体 际空间 的极端现象 极端应当为极端 兼类词 通讯手段是电磁波辐射 辐射应当为极端 由于汉语语言中的词性活用现象,一个词可以以多种词 性使用,这给词性收录带来了很大的困难,从而产生未登录 词性错误。标注算法主要解决的是兼类词的错误,从结果来 看,其正确率一般,还需要进一步改进。 /n /n /v /vl /n /n /v —194— 结语5 本文介绍了系统的设计思想、框架和实现。并 SEGPOS (1) 对各种切分、标注算法进行了比较、评测和研究。通过研 究,为今后的研究提供了信息:未登录词是目前切分过 程中的主要困难之一,要提高切分的正确率,就是妥善解决 未登录词的问题。未登录词的组成复杂,有人名、地名专业 术语等,每种词都不同,需要有针对性地解决。词类活(2) 用现象在汉语中普遍存在,这给标注带来了很大困难,要提 高标注的正确率,就要对词类活用进行研究。不同的方 法能处理不同的错误,只有多种方法结合使用,才能不断提 高切分标注的正确率。 (3) 参考文献 路志英林孔元郭祺中文切分词典的最大匹配索引法天津大学 刘颖用隐马尔柯夫模型对汉语进行切分和标注排歧计算机工程 万建成杨春花书面汉语的全切分分词算法模型小型微型计算机 徐菁张辉陆汝占汉语语料的切分标注加工系统计算机工 屈刚陆汝占一个改进的汉语词性标注系统上海交通大学学报 ,, .. ,.. 1 .. 学报,1999,(5) 2 与设计,2001,22(4) 3 系统,2003,24(7) 4 ,.. 程,2003,29(9) 5 2003,39(6) , ,..,
分享到:
收藏