ymodem协议源码Word文档下载推荐.docx

上传人:b****2 文档编号:15183956 上传时间:2022-10-28 格式:DOCX 页数:7 大小:18.14KB
下载 相关 举报
ymodem协议源码Word文档下载推荐.docx_第1页
第1页 / 共7页
ymodem协议源码Word文档下载推荐.docx_第2页
第2页 / 共7页
ymodem协议源码Word文档下载推荐.docx_第3页
第3页 / 共7页
ymodem协议源码Word文档下载推荐.docx_第4页
第4页 / 共7页
ymodem协议源码Word文档下载推荐.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

ymodem协议源码Word文档下载推荐.docx

《ymodem协议源码Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《ymodem协议源码Word文档下载推荐.docx(7页珍藏版)》请在冰豆网上搜索。

ymodem协议源码Word文档下载推荐.docx

  

(1)传送文件的实现

  添加一个命令,fsend,这个命令接受一个参数,就是文件的最终存放目录。

当开发板接收到这个命令后,做好接收文件的准备。

与超级终端进行协商后,将收到的文件写入指定位置。

  

(2)接收文件的实现

  添加一个命令frecv,这个命令接受一个参数,就是超级终端所要索取的文件。

当开发板接收到这个命令后,就等待终端发送索取文件的协商要求。

  二、ymodem协议分析

  1、明确概念

  一步一步来,先把概念搞清楚。

  ymodem协议是一种发送并等待的协议。

即发送方发送一个数据包以后,都要等待接收方的确认。

如果是ack信号,则可以发送新的包。

如果是nak信号,则重发或者错误退出。

2、文件传输过程

  文件传输过程的开启:

  

(1)开启是由接收方开启传输,它发一个大写字母c开启传输。

然后进入等待(soh)状态,如果没有回应,就会超时退出。

  

(2)发送方开始时处于等待过程中,等待c。

收到c以后,发送(soh)数据包开始信号,发送序号(00),补码(FF),“文件名”,“空格”“文件大小”“除去序号外,补满128字节”,cRc校验两个字节。

进入等待(ack)状态。

  (3)接收方收到以后,cRc校验满足,则发送ack。

发送方接收到ack,又进入等待“文件传输开启”信号,即重新进入等待“c”的状态。

  (4)前面接收方只是收到了一个文件名,限制正式开启文件传输,ymodem支持128字节和1024字节一个数据包。

128字节以(SOH)开始,1024字节以(STX)开始。

接收方又发出一个“C”信号,开始准备接收文件。

进入等待“SOH”或者“STX”状态。

  (5)发送接收到“C”以后,发送数据包,(SOH)(01序号)(FE补码)(128位数据)(CRC校验),等待接收方“ACK”。

  (6)文件发送完以后,发送方发出一个“EOT”信号,接收方也以“ACK”回应。

然后接收方会再次发出“C”开启另一次传输,若接着发送方会发出一个“全0数据包”,接收方“ACK”以后,本次通信正式结束。

  (7)当然Ymodem相对于Xmodem改进的地方就在于传输再次开启以后,又可以发送另外一个文件,即一次传输允许发送多个文件,但这个特性我就不准备实现了。

  3、所用到的符号

  #definemodem_soh0x01//数据块起始字符

  #definemodem_stx0x02//1028字节开始

  #definemodem_eot0x04//文件传输结束

  #definemodem_ack0x06//确认应答

  #definemodem_nak0x15//出现错误

  #definemodem_can0x18//取消传输

  #definemodem_c0x43//大写字母C

  4、CRC计算方法

  u16ymodemcrc(u8*bytes,u32len)

  {

  intcrc=0;

  inti,j;

  for(i=0;

i  {

  crc=crc^bytes[i]  for(j=0;

j  {

  if((crc

  else

  crc=crc  }

  }

  returncrc

  三、协议解析

  接收方:

发出0x43表示请求对方发送数据

  发送方:

发出第0个数据包

  数据包构成:

  1:

0x01或者0x02;

0x01表示128字节,0x02表示1024字节2:

0x00表示第0个数据包

  3:

0xff第几个数据包的补码

  4~4+文名的长度文件名,以0x00结束

  4+文件名的长度+1文件大小,以0x00结束

  正文不足128字节补0x00

  crc校验

0x06或者0x150x06应答,0x15非应签

0x43请求对方发送正文

发出第1个数据包

0x01表示128字节,0x02表示1024字节

  2:

0x01表示第1个数据包

0xfe第几个数据包的补码

  4:

正文

0x06或者0x15

  注:

发送方收到应答后马上发送第二个数据包直到数据包发送结束后发出0x04

发出第2个数据包

  3

0x02表示第2个数据包

0xfd第几个数据包的补码

  正文不足128位补0x1a

0x04传送结束

0x06应答

0x43再次请求

发送全零数据包

  数据包的构成:

0x01

0x00

0xff

128个0x00

0x06

  数据通信结束

所用到的符号

  0x0d==\r0x0a==‘\n’

  \r是回车

  \n是换行

  "

\r\n"

这样的组合是在windows下的换行,如果以文本方式打开这个文件,

  就会自动根据操作系统平台,把全部换行自动转化为单个\n

  篇二:

ymodem协议的工作流程分析

  2、文件传输过程

收到c以后,发送(soh)数据包开始信号,发送序号(00),补码(FF),“文件名”,“空字符”“文件大小”“除去序号外,补满128字节”,cRc校验两个字节。

128字节以(soh)开始,1024字节以(stx)开始。

  接收方又发出一个“c”信号,开始准备接收文件。

进入等待“soh”或者“stx”状态。

  (5)发送接收到“c”以后,发送数据包,(soh)(01序号)(Fe补码)(128位数据)(cRc校验),等待接收方“ack”。

  (6)文件发送完以后,发送方发出一个“eot”信号,接收方也以“ack”回应。

  然后接收方会再次发出“c”开启另一次传输,若接着发送方会发出一个“全0数据包”,接收方“ack”以后,本次通信正式结束。

  (7)当然ymodem相对于xmodem改进的地方就在于传输再次开启以后,又可以发送另外一个文件,即一次传输允许发送多个文件,但这个特性我就不准备实现了。

  soh在ascii码表中为01数据包开始

  stx在ascii码表中为02正文开始

  etx在ascii码表中为03正文结束

  eot在ascii码表中为04数据包结束

  enq在ascii码表中为05询问字符

  ack在ascii码表中为06确认

  1、首先由接收方stm32单片机发送大写字母c开启传输,发送方pc机在超级终端中打开传送菜单里的发送文件命令(此时会有设置波特率,数据位,奇偶检校位等的设置),收到大写字母c后,发送soh(01)数据包开始信号,接着发送序号00和它的补码FF,然后发送文件名(project.bin(50726F6a656374为project),(2e62696e为.bin)),再发送一个空字符null(00),然后是文件大小(4224bytes34323234),最后用null来填补达到128字节(ymodem可以发送128字节或者1024字节的数据包,128字节以soh开始,1024字节以stx开始)。

1045为cRc校验的两个字节。

  0100FF50726F6a6563742e62696e00343232340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1