串口通讯中数据处理-Sky.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
今天给大家简单讲讲Delphi中串口通信中的数据处理 1.串口通信的基本原理: 一般计算机与外部设备通讯有两种方式: 并行传送(Parallel ):一次的传输量为8个位(1字节),通过并行端口,如打印机 串行传送(Serial ):一次只传输1个位,通过串行端口,如RS-232 位与字节的概念: 二进制中的每一位0和1,被叫做一个位,每8个位构成一个字节 一个字节中最右面的位被称为第0位,最左面的位被称为第7位。 传输过程中的字节类型:一般有两种。 1.文本(字符字母、标点符号等)在计算机中存储时,每个不同的字符都用不同的数值来表示。这些数值的范围通常在0-127或0-255范围。 7位:ASCII码,每个字节留一个备用位 8位:前128个遵循ASCII码规则,其余的128个用来做扩展字符、数字符号、图形字符等编码。 2.二进制数据: 某些可执行指令文件和图形图像文件就是以二进制形式而不是ASCII码形式存储的。 一个数据可用二进制形式存储,可以占多个字节。在通信领域,常常把这种类型的资料叫做二进制数据。 今天要讲的就是有关二进制数据的处理方法。 文本的处理方法比较简单。我以前写过一个测试软件发布在盒子上。可以从这个地址下载:/article.asp?articleid=2877 几个概念: 波特率:每秒所能产生的最大电压状态改变率(一秒钟可以振荡的次数)bps 通信双方必须要取得一样的通信速度。原始信号经过不一样的波特率取样后,所得的结果完全不一样,如取样速度只有原来一半时,信号被跳着取样,数据因此错误。 数据位:有5,6,7,8四种 停止位:在奇偶位(选择有奇偶校验)或数据位(选择无奇偶校验)之后发送或接收的停止位。停止位的长度可在1、1.5或2位 三者中选择)。 奇偶校验位:数据传输之后是可供选择的奇偶校验位发送和接收。奇偶位的状态取决于选择的奇偶校验类型。如果选择奇校验,则该字符数据中为1的位数与校验位相加,结果应为奇数。可选奇,偶或无。 如果要保证通讯畅通。通讯双方以上4项设置必须一致。 一个字节是8位,数据位可以7位,然后一位校验位就8位了。 就是说数据占5.6。7或8位。 这些参数可以自己设置。但是如果要保证通讯畅通。通讯双方以上4项设置必须一致。 2.Delphi中串口通信常用的常用控件 进行串口通讯可以用Windows的Api函数: Delphi的Windows.pas单元文件中已经将Win32 API均声明进去,因此在Delphi里面使用API时只要在uses 区段中加入Windows,使其引用该单元文件即可。 串行通信相关函数: CreateFile:建立文件,在此用打开通信端口 CloseHandle:关闭由CreateFile建立的文件,在此用于关闭通信端口 GetCommState:取得计算机串口的设置参数 SetCommState:设置计算机串口的参数 WriteFile:将数据写入文件,在此用来将数据由串口送出 ReadFile:由文件中读取数据,在此用来取得送到串口的数据 ClearCommError:清除串行端口的错误,并取得信息 PurgeComm:清除串口上的缓冲区 EscapeCommFunction:控制串口的硬件状态 SetCommMask:设置事件的掩码,用以触发事件 WaitCommEvent:等待设置事件的发生 GetCommModemStatus:取得串口上的硬件线路状态 这里不推荐使用Windows API函数。 虽然用API函数可以实现很强大很灵活的功能,但是势必要花更多的时间和精力在通讯细节上。而Dephi的是RAD的经典代表,当然会有更简单的方法,那就是使用封装好的控件。 较常用的控件有spcomm,mscomm,comport,apro等。其中mscomm是ActiveX控件,另外3个控件都是Delphi控件,自带源码,可以到delphi盒子,Delphi园地,sourceforge等网站下载。具体使用方法这里不详细介绍。 3.数据帧的概念 今天我们主要讲的是二进制数据的处理,所以先介绍下数据帧的概念。 我们要进行数据通讯,那么通讯双方必须遵循一定的协议,这样,通讯双方才能够相互理解从对方所接收过来的数据。 帧是传送信息的基本单元,每帧由帧起始符标志域,控制域,数据长度域,数据域,帧信息纵向校验域及帧结束域等6个域组成。每个域由若干字节组成。 比如有这样一个帧格式: 代码 字节数 说明 68H 1 帧起始符 RTUA 4 终端逻辑地址 MSTA 2 主站地址与命令序号 68H 1 帧起始符 C 1 控制码 L 2 数据长度 DATA 变长 数据域 CS 1 校验码 16H 1 结束码 从这个数据帧格式可以看出,一个数据帧

文档评论(0)

feiyang66 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档