微机串行通信协议研究.pdf

上传人:赵** 文档编号:46686732 上传时间:2022-09-27 格式:PDF 页数:3 大小:127.54KB
返回 下载 相关 举报
微机串行通信协议研究.pdf_第1页
第1页 / 共3页
微机串行通信协议研究.pdf_第2页
第2页 / 共3页
点击查看更多>>
资源描述

《微机串行通信协议研究.pdf》由会员分享,可在线阅读,更多相关《微机串行通信协议研究.pdf(3页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、是带有的专门管理串行通信的控件该控MSCommVB件通过串行端口传输和接收数据为应用程序提供串行通信功能探讨如何利用该控件制作规范的协议使得程序具有较强的通用性提高编程效率控件属性分析1 MSComm每个使用的控件对应一个串行端口如果应 MSComm 用程序需要访问多个串行端口必须使用多个控 MSComm 件可以在控制面板 中改变端口地址和中断地 Windows址最多可支持个串口可根据需要扩充微机Windows16的串口市场上有很多品牌的多用户卡能完成此项功能控件有很多重要的属性首先必须熟悉以下MSComm 几个属性属性描述 设置并返回通信端口号CommPort 以字符串的形式设置并返回波特率

2、Settings 奇偶校验数据位停止位 设置并返回通信端口的状态PortOpen 也可以打开和关闭端口 从接收缓冲区返回和删除字符Input 向传输缓冲区写一个字符串Output 以文本形式取回数据InputMode 01以二进制形式取回数据 当接收字符后若属性设置为Rthreshold Rthreshold 0缺省值则不产生事件 OnComm为接收缓冲区收到每一个字符 Rthreshold1都会使控件产生事件 MSComm OnComm 属性为缺省值数据传输事件不会产生Sthreshold 0事件若设置属性为 OnComm Sthreshold 1当传输缓冲区完全空时控件产生 MSComm

3、事件 OnComm 控件提供下列两种处理通信的方式中断MSComm(1)方式是处理串行端口交互作用的一种非常有效的方法可 以利用控件的事件捕获并处理这些通 MSComm OnComm 信事件查询方式在程序的每个关键功能之后可以(2)通过检查属性的值来查询事件和错误 CommEvent 通信协议设计2 我们设计的协议包括 层物理层数据包装层应用3层发送接收选用字符方式InputMode=1物理层2.1 该层主要负责合理设置控件属性完成数据字符级的收发功能对发送不采用中断方式程序中Sthreshold=0根据处理需要数据准备好时启动属性发送接收output采用中断方式每次接收一个字符产生Rthre

4、shold=1事件将数据从通信缓冲区取出放到自己定义OnComm 的字符队列里例如设计一个窗体添上几个Form控件将下面的代码加入到程序中一些全局变MSComm量在模式文件里定义为控件数目每个NmaxCommPort控件对应一个端口为用户自定义接收缓冲区用InString来暂存从通信缓冲区取得的字符为缓冲区NcountInString中字符个数为端口状态对于存在的端口MSCommOk打开状态为才能进行接收和发送TruePublic nCount(NmaxCommPort)As LongPrivate Sub Form_Load()Dim i As IntegerFor i=0 to NmaxC

5、ommPort Comm(i).Settings=9600,n,8,1字符方式 Comm(i).InputMode=0 打开事件陷阱 Comm(i).Rthreshold=1 Receive 关闭事件陷阱 Comm(i).Sthreshold=0 Send Next ICall MSCommOpenEnd SubSub MScommOpen()On Error GoTo ErrHandler Dim i As Integer For i=0 To NmaxCommPort-1 MSCommOk(i)=True作者简介李卫忠男讲师硕士主研方向为计算(1 9 6 8)机应用雷英杰教授博导收稿日期2

6、 0 0 0-0 8-3 0微机串行通信协议研究李卫忠雷英杰空军工程大学导弹学院计算机工程系三原(713800)摘 要 在分析串行通信控件属性的基础上提出了针对设计串行通信协议的一些原则和技巧给出了编程代码VBMSCommMSComm关键词串行通信通信协议VB Study on Protocol of Personal Computers Serial CommunicationLI WeizhongLEI Yingjie(Department of Computer,Missile Institute,Air Force Engineering University,Sanyuan 7138

7、00)AbstractThis Paper analyzes the properties of MSComm control of VB,and gives out some principles and skills to design serial communication protocol with MSComm control,related codes are also given.Ke words VBSerial communicationCommunication protocol第27卷第4期Vol.27 4计算机工程Computer Engineering2001年4月

8、April 2001 开发研究与设计技术 中图分类号 TP311.52 文章编号10003428(2001)04018002文献标识码A 180 nCount(i)=0 Comm(i).PortOpen=True Next i Dim Nok As Integer Nok=0 For i=0 To NmaxCommPort-1 If(MSCommOk(i)=True)Then Nok=Nok+1 Next i If(Nok=0)Then Dim Msg As String Declare variable Dim Style As String Declare variable Dim Tit

9、le As String Declare variable Msg=Chr$(13)+Space$(5)串行端口正在被使用 Msg=Msg+!+Space$(8)+Chr$(13)+Chr$(13)请关闭有关程序 Msg=Msg+Space$(5)+Chr$(13)Style=vbOKOnly+vbCritical Define buttons MsgBox Msg,Style,Display message End End If Exit SubErrHandler:MSCommOk(i)=False Resume NextEnd SubSub MScommClose()Dim i As I

10、nteger On Error Resume Next Close MSComms For i=0 To NmaxCommPort-1 Comm(i).PortOpen=False Next iEnd SubSub comReceive(Index As Integer)Dim RS$If(Comm(Index).InBufferCount=0)Then Exit Sub Comm(Index).InputLen=0 Default,Retrieve all available data RS$=Comm(Index).Input Read data InString(Index)=InStr

11、ing(Index)+RS$End Sub事件发生从通信缓冲区取出放到中InStringPrivate Sub Comm_OnComm(Index As Integer)Select Case Comm(Index).CommEvent Case comEvReceive Received RThreshold#of chars.Call comReceive(Index)Case comEvCD Change in the CD line Case comEvCTS Change in the CTS line Case comEvDSR Change in the DSR line Cas

12、e comEvRing Change in the Ring Indicator Case comEvSend There are SThreshold number of characters in the transmit buffer.Case comEvEOF An EOF charater was found in Case comBreak A Break was received Case comCDTO CD(RLSD)Timeout Case comCTSTO CTS Timeout Case comDSRTO DSR Timeou.Case comFrame Framing

13、 Error Case comOverrun Data Lost Case comRxOver Receive buffer overflow Case comRxParity Parity Error Case comTxFull Transmit buffer full End SelectEnd SubPrivate Sub Form_QueryUnload(Cancel As Integer,UnloadMode As Integer)Cancel=1End SubPrivate Sub Form_Unload(Cancel As Integer)Call MScommCloseEnd

14、 Sub数据包装层2.2 该层主要对数据进行包装发送接收时去掉包装选用字符方式进行通信主要是为了在字符中插入某些控制字符用以识别数据是否组装好对所有要发送的数据组装成可见的码字符串数据组装好后在字符串后加上不ASCII可见控制字符然后启动数据发送接收时根据Chr(13)是否收到控制字符来判断是否收到完整信息包Chr(13)将以下程序作为一个模式文件加入到项目中这层协议提供的软件接口为发送调用过程接收调用MSCommSend()函 数如 果 数 据 组 装 好函 数 返 回GetMsgfromCom()将以下程序保存在一模式文件里TrueOption Explicit通信控件数目Public C

15、onst NmaxCommPort=16 Public MSCommOk(NmaxCommPort)As Boolean通信控件状态 Public InString(NmaxCommPort)As String 每个控件一个接收缓冲区 Public nCount(NmaxCommPort)As Long 缓冲区中字符计数 Public Function GetMsgfromCom(PortNum As Integer,MsgStr As String)As Boolean Dim i As Integer For i=0 To NmaxCommPort-1 nCom=(nCom+1)Mod N

16、maxCommPort If MSCommOk(nCom)And InString(nCom)Then Exit For Next i If(i=NmaxCommPort)Then无信息 GetMsgfromCom=False Exit Function End If i=InStr(InString(nCom),Chr$(13)If(i=0)Then无信息 GetMsgfromCom=False If(Len(InString(nCom)600)Then InString(nCom)=Right$(InString(nCom),600)Exit Function下转第页 End If (18

17、7)181结论5 概念频率统计方法保留了统计方法速度快效率高的特点同时又改进了词频统计方法缺乏语义分析的缺点该方法通过运用知识库进行一定程度的语义分析以概念为单位处理文本提高了提取主题的质量我们的方法还有以下几方面需要改进概念联系的多样性词汇之间具有的概念关系是多样的有些概念之间会互相增强有些概念之间却会彼此消减并且概念互相增强的途径也是多种多样的本文目前仅考虑了由重复性内聚关系引起的概念增强的现象其余几种概念关系还有待研究概念频率统计的精确性当一组单词表达同一概念时不同的单词对该概念的细化程度是不同的也就是说它们在表达该概念的强度上是分层次的在以后的概念频率统计中应该考虑这种现象参考文献1

18、Michael H,Hasan R.Cohesion in English.Longman Group Ltd.,19762 Miller G A,Beckwith R,Fellbaum R,et al.Five Papers on WordNet.GSLReport 43,Cognitive Science Laboratory,Princeton University,19933 Stairmand,Mark A.A Computational Analysis of Lexical Cohesion with Applications in Information Retrieval P

19、h.D.Thesis.Center for Computational Linguistics,UMIST,Manchester,1996上接第页 (181)PortNum=nCom取信息串 但不包含回车字符 If(i1)Then ,Chr$(13)MsgStr=Left$(InString(nCom),i-1)Else MsgStr=End If If(Len(InString(nCom)i)Then InString(nCom)=Right$(InString(nCom),Len(InString(nCom)-i)Else InString(nCom)=End If GetMsgfromC

20、om=TrueEnd FunctionPublic Sub MSCommSend(Port As Integer,SndStr As String)SndStr=SndStr+Chr$(13)If(MSCommOk(Port)=True)Then Sio.Comm(Port).output=SndStr End IfEnd Sub以上两层协议具有通用性不同应用程序只需将窗体文件和模式文件加入到自己项目中即可应用层2.3 该层协议主要负责将用户信息按一定格式组装成可见的码字符串然后调用数据包装层提供的接口程序ASCII发送数据接收时先调用数据包装层提供MSCommSend()的接口程序数据到齐后

21、按照组装顺序GetMsgfromCom()进行拆解该层具体协议需要根据通信内容和软件需求来定义下面以实际应用中一例来介绍这层协议如何具体制订自定义数据结构Public Type MyMsg Tr1 As Single Tr2 As Single Sd1 As Integer Sd2 As IntegerEnd TypeSub SendMsg(port As Integer,Msg1 As MyMsg)Dim s1 As String s1=Format$(Msg1.Tr1,00000.000)+Format$(Msg1.Tr2,00000.000)s1=s1+Format$(Msg1.Sd1,

22、00000)+Format$(Msg1.Sd2,00000)Call MSCommSend(port,s1)End SubFunction GetMsg(port As Integer,Msg1 As MyMsg)Dim s1 As String If(GetMsgfromCom(port,s1)=False Or Len(s1)28)Then Get_keys=False Exit Function End If Msg1.Tr1=Mid$(s1,1,9)Msg1.Tr2=Mid$(s1,10,9)Msg1.Sd1=Mid$(s1,19,5)Msg1.Sd2=Mid$(s1,24,5)End

23、 Function对于每种通信格式数据长度必须严格定义否则数据将混乱实际应用中对各串口可有不同的应用层协议即便是同一端口数据通信格式也可能会有变化不同数据格式可定义不同的长度接收数据时根据不同长度来分别进行数据组装结论3 我们采用上述协议已经在防空C3防空武器训练模I拟器磷肥工业控制系统等诸多领域成功地实现了微机间和微机与单片机之间的串行通信在这些应用中前 层协议2完全相同只要简单地根据需要修改应用层就能大大提高开发效率参考文献谭 灏 鄂卓茂控件下的微机串行通信 计1 ,.Visual Basic MSComm.算机工程 1999,25(7):98王文峰 利用的方式开发通用串行通信软件 计算机应2.VBBinary.用 ,1999(12)开发使用手册 北京机械工业出版社3 Sile B.Visual Basic 6.,1999187

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁