zoukankan      html  css  js  c++  java
  • XModem与YModem

    XModem用在串口异步传文件:

    1 #define SOH 0x01
    2 #define STX 0x02
    3 #define EOT 0x04
    4 #define ACK 0x06
    5 #define NAK 0x15
    6 #define CAN 0x18
    7 #define CTRLZ 0x1A
    View Code

    标准Xmodem协议(每个数据包含有128字节数据)帧格

                                                                                Xmodem包格式

                 Byte1                             Byte2                           Byte3                       Byte4~131            Byte132~133

        Start Of Header(SOH/STX)          Packet NumberID          ~(Packet NumberID)          Packet Data            16-Bit CRC

    0 发送发每次以128字节的帧结构发送,不足128字节则要用CTRLZ填充,每发送一次都要接收从机端回应的信息,因此效率较低,已经废弃

    1 如果正确发下一包则ACK,错误重发则NACK;强制停止则<CAN>,主机不需要发送<EOT>确认

    2 发送方发送完成则发送方发送<EOT>通知接收方。接收方回以<ACK>进行确认;

    3 启动发送由从机发起,'C'表示进行CRC16校验,NAK表示进行累加和校验。校验先CRCH后 CRCL

    Ymodem:

    YModem协议是XModem的改进协议,快速(一次传输1024字节的信息块,同时它还支持批文件传输),传输稳定。YModem分成YModem-1K(数据块1K,帧头STX,用的较多)与YModem-g(去掉CRC,不等待ACK所以速度快)

    YModem的采用的是CRC16-CCITT欧洲版本的CRC校验,它的生成多项式为:x16+x12+x5+1

    1、起始帧的数据格式:

      SOH  00 FF  filename[多加00作为结束 ] filezise[多加00作为结束 ]  NUL[表示剩余以00填充 ] CRCH CRCL

          如果文件大小小于1024则

      SOH 01 FE data[,1A ...1A ]  CRCH CRCL 

    2、数据帧的数据格式:

      STX 01 FE data[1024] CRCH CRCL

            剩余128~1024则:不足1024的用1A填充:       STX [Index] [~index] data[,1A ...1A ]  CRCH CRCL

           剩余0~18则:不足128的用1A填充:       SOH [num] [~~num] data[ ,1A...1A]  CRCH CRCL

    3、结束帧数据结构:

         SOH 00 FF NUL[128个00] CRCH CRCL

    eg:j将文件名为foo.c,大小为4196Byte(16进制为0x1064)的文件作为传输的过程:sizeof("foo.c")=6;sizeof("1064")=5;

     ZMODEM:精华在于实现了类似于TCP在保持一个可靠连接的同时,采用滑窗技术避免过长的确认信息等待,从而提高传输速度。其他特点还包括发送方自动发送、自动重传;串流式(streaming)传输方式,传输速度较快,而且还具有自动改变区段大小和断点续传、快速错误侦测等功能,secureCRT中集成了一个zmodem协议.

  • 相关阅读:
    VS2008编译的程序在某些机器上运行提示“由于应用程序配置不正确,应用程序未能启动”的问题
    C++中的预处理命令 .
    C++ sizeof用法 .
    详解C/C++预处理器 .
    C 风格字符串,C++string类,MFC,CString类的区别。
    VC: GDI绘图基本步骤总结 .
    关于字符数组 和 字符串比较 C++
    they're hiring
    HTTP Proxy Server
    Polipo
  • 原文地址:https://www.cnblogs.com/jieruishu/p/10932268.html
Copyright © 2011-2022 走看看