Ymordem原理:

1开启是由接收方开启传输,接收方发送一个字符'C',然后进入等待(SOH)状态,如果没有回应,就会超时退出。
2发送方开始时处于等待过程中,等待字符'C'。发送方收到'C'后,发送第一帧数据包,内容如下:
SOH 00 FF Foo.c NUL[123] CRC CRC (Foo.c为文件名,NUL[123]补0)
进入等待(ACK)状态。
3接收方收到第一帧数据包后,CRC校验满足,则发送ACK。
4发送方接收到ACK,又进入等待“文件传输开启”信号,即重新进入等待“C”的状态。
上面接收方只是收到了一个文件名,现在正式开启文件传输,Ymodem支持128字节和1024字节一个数据包。128字节以(SOH)开始,1024字节以(STX)开始。
5接收方又发出一个字符'C',开始准备接收文件。进入等待“SOH”或者“STX”状态。
6发送方收到字符'C'后,开始发送第二帧,第二帧中的数据存放的是第一包数据。内容如下:
(SOH/STX)(01序号)(FE补码)(128/1024位数据)(CRC校验),等待接收方“ACK”。
7接收方收到数据后,发送一个ACK,然后等待下一包数据传送完毕,继续ACK应答。直到所有数据传输完毕。…
8数据传输完毕后,发送方发EOT,第一次接收方以NAK应答,进行二次确认。发送方收到NAK后,重发EOT,接收方第二次收到结束符,就以ACK应答。最后接收方再发送一个字符'C'开启另一次传输,发送方在没有第二个文件要传输的情况下,发送如下数据:SOH 00 FF 00~00(共128个) CRCH CRCL,接收方应答ACK后,正式结束数据传输。

转载于:https://www.cnblogs.com/simon-code/p/5669610.html

Ymordem学习使用相关推荐

  1. java入门 慕路径,Java入门基础知识总结学习教程大全【必看经典】

    类型的表达式,是循环条件,表达式3是党执行了一遍循环之后,修改控制循环的变量值. ??? for语句的执行过程是这样的:首先计算表达式1,完成必要的初始化工作:然后判断表达式2的值,如果表达式的值为t ...

  2. Java EE学习心得

    –Java EE学习心得   1.    称为编程专家的秘诀是: 思考-----编程--------思考------编程--.. 编程不能一步到位,不能一上来就编,必须先思考如何写,怎样写?然后再编程 ...

  3. FastAI 2019课程学习笔记 lesson 2:自行获取数据并创建分类器

    文章目录 数据获取 google_images_download 的安装和使用 挂载google 个人硬盘到Google colab中 删除不能打开文件 创建ImageDataBunch 训练模型 解 ...

  4. FastAI 课程学习笔记 lesson 1:宠物图片分类

    文章目录 代码解析 神奇的"%" 导入fastAI 库 下载解压数据集 untar_data 获取帮助文档 help() ? ?? doc 设置路径 get_image_files ...

  5. 深度学习学习指南-工具篇

    colab Colab是由Google提供的云计算服务,通过它可以让开发者很方便的使用google的免费资源(CPU.GPU.TPU)来训练自己的模型. 学习经验总结 如何使用命令行? 通过!+cmd ...

  6. Redis学习之路(一)--下载安装redis

    redis学习之路--下载安装redis windows安装redis 1.下载redis 2.安装 3.查看是否安装成功 windows安装redis 1.下载redis 网址:https://gi ...

  7. python内置库之学习configparser库(一)

    python内置库之学习configparser库(一) 1.引言 ini文件简介 [节] 键=值 注:节不能重复出现 2.自己封装了一个增删改查的类,可以参考一下 import configpars ...

  8. 前端Vue学习之路(二)-Vue-router路由

    Vue学习之路 (二) Vue-router(基础版) 一.增加静态路由 二.动态路由+路由嵌套+404页面 三. 编程式导航 四.命名路由 五.命名视图 六.重定向和起别名 1.重定向 2.起别名 ...

  9. 前端Vue学习之路(一)-初识Vue

    Vue学习之路 (一) 1.引言 2.更换npm国内镜像源 3.用npm下载Vue 4.Vue全家桶 5.使用命令创建项目 5.推荐插件 6.推荐网站 7.学习扩展 1.引言 先安装node.js环境 ...

最新文章

  1. hive 简单操作搜狗实验室的词频文件
  2. 通俗易懂,快速幂基本思想
  3. CIPAddressCtrl的用法
  4. mongodb 备份mysql_MongoDB备份与恢复
  5. 水题(water)(非详细解答)
  6. 【报告分享】2020全球网络趋势报告.pdf(附下载链接)
  7. vue Class 与 Style 绑定
  8. 线程与进程的区别及其通信方式
  9. 工具类篇——时间处理Calendar类
  10. 敏捷 - #7 原则:工作软件是进度的主要衡量标准 ( #7 Agile - Principle)
  11. Clickhouse: A股分时线bar数据python实验-批量导入[上]
  12. Modern Python Cookbook》(Python经典实例)笔记 2.3 编写长行代码
  13. 【java算法】二分查找算法详解
  14. pytest tox.ini使用
  15. inferred type_您最终可以使用var在Java中声明Inferred Type局部变量-这就是为什么它很棒...
  16. Eclipse汉化版本和导入src
  17. 《圣斗士》黄金圣斗士美图赏
  18. 2012年02月25日的日记
  19. H5版的怀旧游戏机,可在手机电脑上在线玩经典模拟器游戏的网站源码
  20. 动网论坛自动回帖程序

热门文章

  1. java3d 上色_Unity 着色过程
  2. 全排列—leetcode46
  3. error LNK2005: _DllMain@12 already defined的解决办法
  4. C语言 静态库制作(亲测可行)
  5. C语言指针详解----指针声明定义赋值
  6. 四轴PID控制算法详解(单环PID、串级PID)
  7. 一道关于 json 和 slice 的题难倒了 80% 的人
  8. 【Linux】库文件
  9. HTML <dfn> 标签的简单介绍
  10. python调用父类对象的几个方法