- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
rs485半双工程序发送文件和文本
rs485半双工程序发送文件及文本(十六进制、二进制数据)
(这是***编写的一个RS485半双工传输程序的协议,及说明。支持全双工,可以发送文件和字符,对文件采取分块传输的原则。发送文本支持16进制二进制自动发送,功能比串口调试助手强大,免费提供源代码 HYPERLINK mailto:renchunyun@ renchunyun@,
????? 1、RS485传输协议格式
?
(1)、传输文件
?? A、请求包
是发送方发给接收方的,用于发送方向接收方发出发送文件的请求
ENQ
文件尺寸
文件名长度
文件名
校验
?
ENQ=5 一个字节
文件尺寸 4个字节
文件名长度 1个字节
文件名 若干字节
校验 1个字节
B、普通数据包
普通数据包是发送方向接收方发送的具有固定长度的数据包共1028个字节
STX
序号
数据(1024个字节)
校验
STX是包标识,表明是一个普通数据包,长度为一字节。值为2
序号用来标识当前数据包在整个传输过程中的顺序号,2个字节
数据为传输的具体数据内容,1024个字节
校验位,为从STX开始的所有字节的异或和
?
C、结束数据包
ETX
数据长度
序号
数据
校验
ETX为结束包首字符,表示一个包的结束,1个字节
数据长度为两个字节为该数据包传输的数据长度
数据包含具体要传输的内容,长度由数据长度值决定。
D、响应包
一个字节
名称
取值
含义
ACK
6
接收方收到正确无误的数据
NAK
21
发送方收到的数据有错误
CAN
24
接收方由于某种原因取消了发送方的传输请求
?
(2)、传输文本
?
传输文本格式
SOH
0
文本长度
0
文本内容
SOH为传输文本头,长度为1字节,内容为1
第二个段为2个0字节,第四个段为1个0字节,这两个段主要是为了与传输文件的格式保持一致,便于接收端接收。
文本长度为2个字节;
文本内容段为具体的文本内容,长度由文本长度段决定。
由于传输文本不具有校验位,所以不具有检错能力。
(2)、发送及接收状态
文件发送态
0态:发送操作尚未开始处于接收态,单击发送文件,提示输入文件名后,此时即是0态,此时发送以ENQ为头的请求包,通知对方接收文件。然后进入1态。
1态:表示发送操作已经开始,等待对方响应,若受到Ack,则表示上次传输成功,然后判断剩余文件长度是否小于1024 ,是则发送ETX数据包,然后转2态。否则发送Stx数据包。收到CAN表示对方拒绝接受此文件取消操作。收到NAK,表示传输错误要求重传。
2态:表示发送方已发送结束数据包,等待对方确认,若收到NAK,则重传上次数据包;若收到ACK,则传输成功切换到初始状态即接收0态。
文本发送态:
仅有一个状态
把要送的文本加上包头,按传输文本的格式传输出去。无校验也没有确认包。
文本发送辅助功能:自动发送,16进制发送及接收,二进制发送及接收,自动清空等。
接收状态
分两种即0态和接收1态。
0态:程序处于接收状态,等待发送方的请求包,若收到一完整的数据包后,首先判断数据包是否为请求包,不是则退出消息响应函数,是则提出包头看是为文件请求包还是文本数据的发送。若是文件请求包,从包内容中提取发送方发送的文件名称,及文件大小开辟内存空间,存储到默认的存储路径中。若接收方开辟内存空间失败则发送CAN,成功接收将接收数据序号设为1,发送ACK,并切换到接收1态。若为文本数据,提取并显示在接受界面上并退出消息循环函数。
1态:表示程序处于数据接收状态,等待接收普通数据包或结束数据包,当接收方接受到一帧完整的数据包后首先检查数据包类型。若是普通数据包,检查校验位,校验正确,则提取其中数据并写入文件,发送ACK,校验错误则发送NAK要求重传。若是结束包,同样检查校验位,若校验正确置状态为0态,发送ACK,否则发NAK要求重传。
3、RS485程序结构
(1)、线程及主要操作函数
a、主线程
本程序在主线程中除进行串口的基本设置如设置、读写函数等,最重的是处理文件及文本的接受和发送。此功能由OnReceiveEvent()来实现。这是一个自定义消息函数。实现步骤如下:
(1)、在RS485View.h中定义消息 #define WM_MYMSG WM_USER+101;
(2)、RS485View.h中在
//}}AFX_MSG
……..
DECLARE_MESSAGE_MAP()
中定义函数
afx_msg LONG OnReceiveEvent(WPARAM wParam,LPARAM lParam);
(3)在RS485View.cpp中
添加ON_MESSAGE(WM_MYMSG,OnReceiveEvent)最后如下
?
//}}AFX_MSG_MAP
// Standard printing commands
O
您可能关注的文档
- 2014年高考数学复习专题:代数变形常用技巧和其应用.doc
- 2014年黑龙江教师招聘考试体育学科命题分析和应试策略.doc
- 2014年黑龙江教师招聘考试音乐学科命题分析和应试策略.doc
- 2014试验人员继续教育网络平台-公路工程路基路面压实度检测和评价试卷.doc
- 2013译文和原文(1-20篇).doc
- 2014高考地理二轮模拟新题分类汇编:专题四++地质循环、地壳运动和地形地貌.doc
- 2013高考化学二轮复习课件:第一阶段 专题二 第1讲 物质结构与元素周期律.ppt
- 2015一级建造师机电工程应试技巧和答题注意事项.doc
- 2015年职称英语_应试技巧班-补全短文技巧与方法.doc
- 2015走向高考匀变速直线运动规律.doc
- 第18讲 第17课 西晋的短暂统一和北方各族的内迁.docx
- 第15讲 第14课 沟通中外文明的“丝绸之路”.docx
- 第13课时 中东 欧洲西部.doc
- 第17讲 第16 课三国鼎立.docx
- 第17讲 第16课 三国鼎立 带解析.docx
- 2024_2025年新教材高中历史课时检测9近代西方的法律与教化含解析新人教版选择性必修1.doc
- 2024_2025学年高二数学下学期期末备考试卷文含解析.docx
- 山西版2024高考政治一轮复习第二单元生产劳动与经营第5课时企业与劳动者教案.docx
- 第16讲 第15课 两汉的科技和文化 带解析.docx
- 第13课 宋元时期的科技与中外交通.docx
文档评论(0)