Ymodem协议解析

Ymodem协议

1.1 Ymodem帧格式

YMODEM有两种帧格式,主要区别是信息块长度不一样。

帧头

包序号

包序号 取反

信息块

校验                                   

SOH/STX

PN

XPN

DATA

CRC

1byte

1byte

1byte

128/1024byte

2byte

1.1.1 Ymodem帧头

帧头表示两种数据帧长度,主要是信息块长度不同。

当帧头为SOH(0x01)时,信息块为128字节; 当帧头为STX(0x02)时,信息块为1024字节。

1.1.2 包序号

数据包序号只有1字节,因此计算范围是0~255;对于数据包大于255的,序号归零重复计算。

1.1.3 帧长度

以SOH(0x01)开始的数据包,信息块是128字节,该类型帧总长度为133字节;

以STX(0x02)开始的数据包,信息块是1024字节,该类型帧总长度为1029字节。

1.1.4 校验

YMODEM采用的是CRC16校验算法,校验值为2字节,传输时CRC高八位在前,低八位在后;

CRC计算数据为信息块数据,不包含帧头、包号、包号反码。

    1. Ymodem起始帧

YMODEM起始帧并不直接传输文件内容,而是先将文件名和文件大小置于数据帧中传输;起始帧是以SOH 133字节长度帧传输,格式如下。

帧头

包序号

包序号 取反

文件名称

文件大小

填充区

校验

SOH

0x00

0xFF

filename+0x00

filesize+0x00

n字节0x00

CRC16

其中包号为固定为0;

filename为文件名称,文件名称后必须加0x00作为结束;

filesize为文件大小值,文件大小值后必须加0x00作为结束;

余下未满128字节数据区域,则以0x00填充。 可以看出起始帧也是遵守1.1中Ymodem包格式的。

    1. Ymodem数据帧

Ymodem数据帧传输,在信息块填充有效数据。 传输有效数据时主要考虑的是最后一包数据的是处理,SOH帧和STR帧有不同的处理。

(1)对于SOH帧,若余下数据小于128字节,则以0x1A填充,该帧长度仍为133字节。

(2)对于STX帧需考虑几种情况:

1.余下数据等于1024字节,以1029长度帧发送;

2.余下数据小于1024字节,但大于128字节,以133字节帧长度发送,直至小于128个字节

3.余下数据小于128个字节,以133个字节发送,无效数据以0x1A补充

1.4 Ymodem结束帧

    YMODEM的结束帧采用SOH 133字节长度帧传输,该帧不携带数据(空包),即数据区、校验都以0x00填充。

帧头

包序号

包序号 取反

信息块

校验

0x01

0x00

0xff

128个0x00

0x00 0x00

1.5 Ymodem握手信号

握手信号由接收方发起,在发送方开始传输文件前,接收方需发送YMODEM_C (字符C,ASII码为0x43)命令,发送方收到后,开始传输起始帧。

1.6 Ymodem命令

命令

命令码

说明

SOH

0x01

128字节数据包

STX

0x02

1024字节的数据包

EOT

0x04

结束传输

ACK

0x06

回应

NAK

0x15

没回应,需要重传当前数据包

CA

0x18

取消传输

C

0x43

握手

1.7 Ymodem传输流程图

可以看出YMODEM只有起始帧、数据帧、结束帧的帧长度是133或者1029长度的,除此以外都是一个字节,这也提高了YMODEM的传输效率。

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: LabVIEW是一种图形化编程环境和开发平台,用于与各种硬件设备和传感器进行交互和控制。Ymodem是一种通信协议,用于在串行通信中传输文件。 在LabVIEW中,可以使用内置的函数和工具箱来实现Ymodem协议的功能。首先,需要通过串行通信接口与外部设备进行通信。可以使用LabVIEW的VISA(Virtual Instrument Software Architecture)函数来建立串行连接和通信通道。 一旦建立了通信连接,就可以使用LabVIEW中的Ymodem协议相关函数来实现文件的传输。可以使用VISA函数读取外部设备发送的Ymodem协议数据包,并将其解析为文件。同时,也可以使用VISA函数将文件数据打包成Ymodem数据包发送给外部设备。 LabVIEW提供了一系列的函数和工具箱,用于处理文件传输过程中可能遇到的错误或异常情况。例如,可以使用相关函数来检测丢失的数据包、修复错误的数据包、实现数据的重传等。 此外,LabVIEW还可以使用其图形化界面来构建用户友好的界面,以便用户可以直观地操作和监控Ymodem文件传输过程。可以通过面板和控件的设计来显示传输进度、传输速度以及传输结果等信息。 总之,LabVIEW提供了丰富的功能和工具来实现Ymodem协议的文件传输。使用LabVIEW,可以方便地通过图形化编程来构建实时、高效且稳定的Ymodem协议通信系统。 ### 回答2: LabVIEW是一种图形化编程语言和开发平台,通常用于控制、测量和数据采集等应用。Ymodem协议是一种常用的通信协议,通常用于在计算机之间传输文件。下面我将用300字来解释一下LabVIEW和Ymodem协议。 LabVIEW是由美国国家仪器公司(National Instruments)开发的一种图形化编程语言和开发平台。它采用了数据流图的形式,用户可以通过将不同的功能模块拖拽在一个主程序框图中来设计程序。这些功能模块可以代表不同的传感器、仪器或控制设备,通过连接线将它们连接在一起,形成一个完整的程序。 而Ymodem协议是一种常用的通信协议,它主要用于在计算机之间可靠地传输文件。Ymodem协议通过发送和确认数据包的方式来实现文件传输。发送端将要传输的文件分成一个个固定大小的数据包,并逐个发送给接收端。接收端在接收到一个数据包后,会向发送端发送一个确认信号,表示已经成功接收。如果发送端在规定的时间内没有收到确认信号,就会重新发送该数据包。 在LabVIEW中使用Ymodem协议进行文件传输是非常方便的。LabVIEW提供了丰富的通信库函数和工具箱,用户可以直接调用这些函数来实现Ymodem协议的功能。用户可以通过编写LabVIEW程序来实现发送文件和接收文件的功能。通过使用LabVIEW的图形化编程界面,用户可以直观地设计程序,而不需要编写繁琐的代码。 总之,LabVIEW是一种图形化编程语言和开发平台,用于控制、测量和数据采集等应用。Ymodem协议是一种常用的通信协议,用于可靠地在计算机之间传输文件。在LabVIEW中使用Ymodem协议是非常方便的,只需要调用相应的函数和工具箱即可实现文件传输的功能。 ### 回答3: LabVIEW是一种由National Instruments开发的图形化编程语言和开发环境。而Ymodem协议则是一种文件传输协议,主要用于在计算机之间进行文件传输。 LabVIEW中可以通过使用串口通信模块来实现通过Ymodem协议进行文件传输。首先,需要使用LabVIEW内置的串口通信函数来建立与目标设备之间的连接。然后,可以使用LabVIEW提供的功能来实现Ymodem的文件传输方法。 Ymodem协议的文件传输主要分为三个阶段:文件名发送、文件数据发送和文件信息确认。在LabVIEW中,可以通过序列的方式逐一发送这些阶段所需的信息。 首先,在文件传输之前,发送端需要先发送文件的名称和大小等信息给接收端。发送端可以通过LabVIEW中的串口通信函数来发送这些文件信息。 接着,在文件数据传输阶段,通过LabVIEW中的循环结构来不断发送数据帧给接收端。可以使用LabVIEW提供的文件读取功能来读取本地文件的数据,然后按照Ymodem协议的格式发送给接收端。 最后,在接收端接收到数据后,需要发送确认信号给发送端以告知已成功接收到数据。在LabVIEW中,可以使用条件语句来判断接收到的数据是否正确,若正确则发送确认信号。而在发送端,使用循环结构来等待接收端的确认信号,确保数据传输的完整性。 总之,通过LabVIEW可以实现Ymodem协议的文件传输。利用LabVIEW的串口通信功能和文件处理功能,可以方便地实现在计算机之间进行文件的可靠传输。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值