Xmodem/Ymodem/Zmodem协议详解

2023-11-06

Xmodem、Ymodem和Zmodem协议是最常用的三种通信协议。

Xmodem协议是最早的,传输128字节信息块,之后也支持到1k的传输。

Ymodem是Xmodem的增强版协议。具有传输快速稳定的优点,它可以一次传输1024字节的信息块,同时还支持传输多个文件。传输过程中还会携带,文件名,大小,修改时间等信息。

文中所描述的内容都是基于 软件SecureCRT 中的传输来介绍的,不同串口软件这些协议的具体细节可能有差异,请注意!!!

对于同时支持128字节传输和1024字节进行传输的协议,在使用之前需要在软件SecureCRT中进行配置,如果勾选了1024bytes选项,那么在传输过程中,将使用1k的帧格式来进行传输。
在这里插入图片描述

CRC

X/Ymodem都支持使用CRC进行校验,至于CRC原理,网上很多讲的不错的,不再赘述,这里只讲一下使用。

modem协议族使用的是一个CRC算法(CRC-16/XMODEM)(Zmodem还没接触)

CRC算法名称 多项式公式 宽度 多项式 初始值 结果异或值 输入值反转 输出值反转
CRC-16/XMODEM x 16 + x 12 + x 5 + 1 x^{16} + x^{12} + x^{5} + 1 x16+x12+x5+1 16 1021 0000 0000 false false

用查表法的话,下面代码片段可以直接使用,crcGet函数的返回值即为校验值,是个16位的数,取值时候注意大小端。

const unsigned int crc_table[256] = {
    0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7,
    0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef,
    0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6,
    0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de,
    0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485,
    0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d,
    0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4,
    0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc,
    0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823,
    0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b,
    0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12,
    0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a,
    0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41,
    0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49,
    0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70,
    0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78,
    0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f,
    0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067,
    0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e,
    0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256,
    0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d,
    0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,
    0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c,
    0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634,
    0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab,
    0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3,
    0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a,
    0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92,
    0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9,
    0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1,
    0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8,
    0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0
};
unsigned short crcGet(unsigned char *ptr,int len)
{
    unsigned short crc = 0x0000;
    
    while(len--) 
    {
        crc = (crc << 8) ^ crc_table[(crc >> 8 ^ *ptr++) & 0xff];
    }
    
    return(crc);
}

Xmodem

1. xmodem的帧格式
xmodem传输只有文件内数据的传输,没有起始帧结束帧这些,且只能进行单个文件的传输。

xmodem的传输过程中,除了控制字符之外,因为帧长度不一致,格式一共会出现两种③
数据长度为128时,n < 128,格式如下:

SOH freamNum ① ~freamNum data[1] ~ data[n] pad[128-n] ~ pad[128] ② CRCH CRCL
01H 01H feH data[1] ~ data[n] pad[128-n] ~ pad[128] CRCH CRCL

数据长度为1024时,n < 1024,格式如下:

STX freamNum ① ~freamNum data[1] ~ data[n] pad[1024-n] ~ pad[1024] ② CRCH CRCL
02H 01H feH data[1] ~ data[n] pad[1024-n] ~ pad[1024] CRCH CRCL

①:字段为帧序号,第一个数据帧的序列号为01h。如果单个文件传输帧个数超出ffh大小时,重新从00h开始。

②:数据长度不足1024字节时补齐至帧长度,起始帧和结束帧补充00h,数据帧补充1Ah。

③:原理上帧格式由剩余数据长度来决定,如以1024传输时,如果剩余传输长度不足1024时,应发送用1ah补全的STX包。但是根据在CRT中测试,不足1024时则是拆成128字节的SOH包传输的。
2.会话传输过程

发送端 —> <— 接收端
‘C’
数据帧1
ACK
数据帧2
ACK
数据帧3
ACK
… … … …
数据帧n
ACK
EOT
NAK
EOT
ACK

3.实例

发送端 —> <— 接收端
43
01 01 FE 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 B4 A3
06
01 02 FE 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 B4 A3
06
01 03 FE 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 B4 A3
06
01 04 FE 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 B4 A3
06
01 05 FE 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 B4 A3
06
01 06 FE 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 B4 A3
06
01 07 FE 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 B4 A3
06
01 08 FE 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 B4 A3
06
04
15
04
06

Ymodem

平常所说的Ymodem协议是指的Ymodem-1K,除此还有Ymodem-g(没有CRC校验,不常用)。

YModem-1K用1024字节信息块传输取代标准的128字节传输,数据的发送回使用CRC校验,保证数据传输的正确性。它每传输一个信息块数据时,就会等待接收端回应ACK信号,接收到回应后,才会继续传输下一个信息块,保证数据已经全部接收。

在这里插入图片描述

1. ymodem的帧格式

YModem的传输过程中,除了控制字符之外,因为帧长度不一致,格式一共会出现两种③
数据长度为128时,n < 128,格式如下:

SOH freamNum ① ~freamNum data[1] ~ data[n] pad[128-n] ~ pad[128] ② CRCH CRCL
01H 01H feH data[1] ~ data[n] pad[128-n] ~ pad[128] CRCH CRCL

数据长度为1024时,n < 1024,格式如下:

STX freamNum ① ~freamNum data[1] ~ data[n] pad[1024-n] ~ pad[1024] ② CRCH CRCL
02H 01H feH data[1] ~ data[n] pad[1024-n] ~ pad[1024] CRCH CRCL

①:字段为帧序号,起始帧和结束帧为00h。如果单个文件传输帧个数超出ffh大小时,从新从00h开始,而不是以01h开始,因为起始帧也算在帧计数当中。

②:数据长度不足1024字节时补齐至帧长度,起始帧和结束帧补充00h,数据帧补充1Ah。

③:原理上帧格式由剩余数据长度来决定,如以1024传输时,如果剩余传输长度不足1024时,应发送用1ah补全的STX包。但是根据在CRT中测试,不足1024时则是拆成128字节的SOH包传输的,这样也是被允许的,因为ymodem要求接收端能同时兼容接收STX与SOH的帧

2.起始帧和结束帧

起始帧-----------------------------------------------------------------------------------------------------
在CRT中使用Ymodem传输,起始帧大小根据端口配置的传输大小决定,如果使用1k传输则起始帧长度为1024 + 5(帧头帧尾),如果使用128传输则起始帧长度为128 + 5(帧头帧尾)。

帧头中包含多个字段,这样设计目的是允许添加额外的包头字段,而不产生与旧字段的兼容性问题,但是这样会导致不同串口软件的兼容性出现问题,本文中以CRT为准,超级终端、Xshell等其他串口软件好像只有文件名和文件大小两个字段(未求证,评论区可留言)。

可选项前面用20h与前一字段隔开。

文件名 文件大小 文件最后修改时间 文件模式 序列号 自定义
31 31 31 2E 74 78 74 00 31 30 32 34 20 31 34 32 33 35 32 33 34 30 37 30 20 30 暂无 暂无
  1. 第一块是文件名16进制ascii码即为文件名字, 31 31 31 2E 74 78 74转换后得111.txt

  2. 第二块是文件大小16进制ascii码即为文件大小(字节),31 30 32 34转换后得1024 bytes。

  3. 第三块是文件修改日期(可选项),使用这种标准格式是为了消除由于在不同时区之间传输而产生的歧义。
    16进制ascii码后,再将此acsii码当作8进制10进制便得到文件的修改时间(自 1970 年 1 月 1 日(00:00:00 GMT)以来的秒数),之后便可以转换为各个地区时间。
    31 34 32 33 35 32 33 34 30 37 30 转换后得 14 235 234 070(8进制)
    再转换后得 1,651,849,272秒(10进制)最后可转换后得 2022-05-06 23:01:12(北京时间)。
    如果日期为0,那么表示修改日期未知,应该保留为文件收到的日期。

  4. 文件模式(从这个开始往下都不太清楚,也没有用到,有了解的可以评论解答一下)
    如果文件模式被发送,一个空格将文件模式和修改日期分开。文件模式以八进制字符串的形式存储。除非文件源自Unix系统,否则文件模式设置为0。接收批处理(1)检查文件模式中是否有表示Unix类型的0x8000位常规文件。具有0x8000位集的文件被假定是从另一个Unix(或类似的)系统使用相同的文件约定。这些文件在任何方式不会被翻译。

  5. 序列号
    如果发送了序列号,则序列号与文件模式之间用一个空格隔开。传输程序的序列号被存储为一个八进制字符串。没有序列号的程序应该省略该字段,或者将其设置为0。接收方对该字段的使用是可选的。

结束帧-----------------------------------------------------------------------------------------------------
结束帧本质上结构与起始帧一致,如果传输时检查文件名位置,数据为00h既文件名为空,则说明整个会话已经结束,接收到的是结束帧

文件名 文件大小 文件最后修改时间 文件模式 序列号 自定义
00 30 20 30 20 30 暂无 暂无

3.会话传输过程

文件的传输过程,注意:数据帧n(文件内容末尾)根据剩余字节长度决定帧格式(主要是帧头和长度)

发送端 —> <— 接收端
‘C’
标号:多文件续传
起始帧
ACK
‘C’
数据帧1
ACK
数据帧2
ACK
数据帧3
ACK
… … … …
数据帧n
ACK
EOT
NAK
EOT
ACK
‘C’
如果还有文件待发送,上面应答ACK和'C'后,
跳转到上面的多文件续传标号位置
等待发送端回复起始帧,
否则发送端回复结束帧,传输结束
结束帧
ACK

4.实例

发送端 —> <— 接收端
43
02 00 FF 31 31 31 2E 74 78 74 00 31 30 32 34 20
31 34 32 33 35 32 33 34 30 37 30 20 30 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 F0 F0
06 43
02 01 FE 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 BD 44
06
04
15
04
06 43
01 00 FF 32 32 32 2E 74 78 74 00 31 30 32 34 20
31 34 32 33 35 32 33 34 30 36 33 20 30 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 EE D9
06 43
01 01 FE 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 77 E2
06
01 02 FD 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 77 E2
06
01 03 FC 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 77 E2
06
01 04 FB 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 77 E2
06
01 05 FA 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 77 E2
06
01 06 F9 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 77 E2
06
01 07 F8 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 77 E2
06
01 08 F7 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
32 32 32 77 E2
06
04
15
04
06 43
01 00 FF 33 33 33 2E 74 78 74 00 31 30 32 34 20
31 34 32 33 35 32 33 34 31 32 32 20 30 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 9E 90
06 43
01 01 FE 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 36 DD
06
01 02 FD 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 36 DD
06
01 03 FC 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 36 DD
06
01 04 FB 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 36 DD
06
01 05 FA 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 36 DD
06
01 06 F9 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 36 DD
06
01 07 F8 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 36 DD
06
01 08 F7 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 33 36 DD
06
04
15
04
06 43
01 00 FF 00 30 20 30 20 30 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 A2 7C
06

CRT存在的问题

  1. 测试时候发现,CRT在传输多个文件时,只有第一个文件会使用数据为长度为1024字节的包传输数据,当第二个文件开始,所有的传输(包括起始包)将转为数据为128字节的包传输数据,导致降速。
    在这里插入图片描述
    上图为用两个CRT客户端测试发送多个文件,由于第二个时间比较长,所以没有跑完,不过上面的速度都是已经稳定的。可以看出来第一个文件和第二个文件的传输速度相差了大概10倍。
  2. 使用CRT向目标机发送文件时,这个会话无法由接收端结束,如果接收端接收错误或者不想接收了,没办法通过发送控制字符使CRT停止发送并切换回正常状态,而ymodem的协议要求连续4次的停止发送请求可以停止会话。

Zmodem

之后再填坑

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Xmodem/Ymodem/Zmodem协议详解 的相关文章

  • C51_PID 水温控制系统

    前言 通过C语言程序写入51单片机实现水的温度的采集 并通过控制器控制加热器给水体加热 对水体的温进行PID控制 保证温度在设定值范围内波动 最终包括C51的视频的内容以及部分参考资料都可以在 百度分享链接内下载 链接 https pan
  • 关于ESP8266自动下载和CH340的几件事

    最近在玩ESP8266 做了些东西 比如考研倒计时器 网络闹钟 网络灯 用手机控制亮度 气象站等等 ESP8266本身挺简单的 倒是这个自动下载电路 我还是第一次玩 以前玩51也用过串口下载 都是自己冷启动 玩STM32用的ST LINK
  • SPI协议代码

    软件模拟SPI程序代码 文章目录 SPI协议简介 SPI接口介绍 SPI数据传输方向 SPI传输模式 通过两个单片机模拟SPI来加深理解 硬件连接方式 SPI模式 程序思路 主机C代码 波形 从机C代码 波形 概述 通过两个MCU STM3
  • 基于FPGA的串口通讯设计与实现

    繁體 基于FPGA的串口通讯设计与实现 日期 2012 03 26 来源 作者 字体 大 中 小 随着多微机系统的应用和微机网络的发展 通信功能越来起重要 串行通信是在一根传输线上一位一位传送信息 这根线既作数据线又作联络线 串行通信作为一
  • STM32使用USART串口调试ULN2003驱动步进电机

    传送门 STM32控制ULN2003驱动步进电机28BYJ 48最基础版 使用串口调试步进电机28BYJ 48获得需要转速 当使用STM32控制ULN2003驱动步进电机28BYJ 48时 步进电机转速变化缓慢 想要得到合适的控制速度 需要
  • 可靠传输的基本概念

    可靠传输的基本概念 使用差错检错技术 接受方的数据链路层就可以检测出真在传输过程中是否出现误码 这取决于数据链路层向上层提供的服务类型 不可靠传输 仅仅丢弃有误码的帧 其他的什么也不做 可靠传输 想方法实现发送端发送什么 接收端就收到什么
  • 西门子PLC各类通信协议差异对比

    西门子PLC有4大类 几十个型号类型 PLC不同所支持的通讯协议也不相同 S7 200系列支持的协议有 PPI MPI PROFIBUS 以太网 S7协议 AS INTERFACE USS MODBUS 自由口 S7 300 400系列支持
  • STM32F1应用DMA——串口收发不定长数据

    STM32F1应用DMA 串口收发不定长数据 使用STM32自带DMA传输数据 可以减轻CPU负担 只需设置一些参数即可发送想要发送的数据 以下是STM32F1系列芯片测试过的部分代码 可实现DMA串口收发数据 下图来自STM32官网的手册
  • Python实现串口通信(pyserial)

    Python实现串口通信 pyserial pyserial模块封装了对串口的访问 兼容各种平台 安装 pip insatll pyserial 初始化 简单初始化示例 import serial ser serial Serial com
  • LabVIEW串口通信实际操作

    理论基础 LabVIEW串口通信基础知识 读取串口字节 我们新建一个空白 VI 借助串口调试助手和虚拟串口 在 LabVIEW 中编写的一个最简单的例子 写一个基本的读取串口字节的程序 在程序框图中编程如下 注意这里 串口配置放到循环外 不
  • C#串口通讯中 16进制与字符串、字节数组之间的转换

    1 c 中如何将十进制数的字符串转化成十六进制数的字符串 十进制转二进制 Console WriteLine 十进制166的二进制表示 Convert ToString 166 2 十进制转八进制 Console WriteLine 十进制
  • STM32双串口

    STM32双串口的使用 最近老是需要stm32通过串口去跟WiFi模块 蓝牙模块 openmv进行数据交互 然后需要用到stm32的串口调试 就把这个程序整理成一个工程 方便调试 实验目的 外设模块 WiFi模块 蓝牙模块 openmv 发
  • C#串口通信三步走

    第一步 实例化串口通讯类 SerialPort sp new SerialPort 第二步 设置串口信息并打开串口 串口设置 public void SetSP string PortName string BaudRate string
  • Ubuntu+Python环境做上位机

    最近需要制作程控电阻箱的上位机 使得大学毕业后就不再接触硬件的我无从下手 拿到机器后不知道怎么与其进行通信 Google上的资料也很少 现将我的环境搭建过程记录下来 希望对和我一样的小白有所帮助 软件环境 Ubuntu 16 04 pyth
  • LInux下串口编程详解细节

    LInux下串口设置详解 日期 2011 04 01 来源 Linux社区 作者 huang879135 字体 大 中 小 串口的设置主要是设置struct termios结构体的各个成员值 include
  • 串口收发最高位为0

    串口收发最高位为0 昨天在现场 读取电表度数的时候发现一个问题 读取字节最高位不管多少全部为0 搞的我相当郁闷 最后没有办法 只好人工给他置1 今天到了公司打开 linux 程序设计 翻到终端这一章 152页 赫然写着几个大字 ISTRIP
  • 51单片机之串口通讯应用实例(逻辑分析仪调试)

    硬件 STC89C52RC 开发工具 Keil uVision4 前言 8051是一款很经典的 历史悠久的单片机 作为一款入门级的单片机8051受到很多初学者的欢迎 89c52是8051系列的成员之一 拥有8K字节程序存储空间 512字节随
  • Unity缺少System.IO.Ports

    问题 我需要使用串口相关的类库 但是引用不到 怎么解决的 PlayerSetting 界面把 Api Compatibility Level 切换为 NET 4 x 然后就好了
  • 【Qt串口调试助手】1.8 - 修改Qt应用图标和窗口图标

    修改Qt应用图标和窗口图标 GitHub源码 Qt串口调试助手下载 修改应用图标 首先选择一张喜欢的图片 来作为应用图标 图片格式必须为 ico easyicon net 有很多可供下载的资源 下载好后 将其放入工程目录 之后添加到 Qt的
  • Linux系统下使用socat将串口映射到TCP服务器端口

    首先需要安装socat 安装方法即是 apt get install socat 或 yum install socat 然后使用以下命令进行映射 socat TCP LISTEN 8899 fork reuseaddr FILE dev

随机推荐

  • 区块链技术基本概念(上)

    区块链本质是一个对等网络的分布式账本数据库 数据区块 挖矿与分叉问题 一 区块是在挖矿的过程中产生的 二 挖矿实际上就是穷举随机数算法 把上个区块的哈希值加上10分钟内的全部交易单打包 再加上一个随机数 算出一个256位的字符串哈希值 输入
  • 01-物联网(环保管家)(一)温湿度与plc通信具体实现步骤

    先解释几个名词 DTU Data Transfer unit 是专门用于将串口数据转换为IP数据或将IP数据转换为串口数据通过无线通信网络进行传送的无线终端设备 DTU广泛应用于气象 水文水利 地质等行业 MQTT MQTT 是 IBM 为
  • 数据结构(栈和队列)

    Queue常用子类 PriorityQueue Deque常用子类 LinkedList以及ArrayDeque Queue有一个直接子类PriorityQueue 而Deque中直接子类有两个 LinkedList以及ArrayDeque
  • 时间序列分析 - 移动平均SMA, EMA(EWMA) 之python

    pandas pandas DataFrame rolling pandas DataFrame ewm pandas DataFrame mean 其中rolling可以指定窗口类型win type 比如boxcar boxcar tri
  • jsp为基础,设计并实现了一个酒店客房管理系统

    摘要 本毕业设计以jsp为基础 设计并实现了一个酒店客房管理系统 该系统包括客房信息管理 客房预订管理和客房入住管理等模块 通过使用jsp技术 能够实现酒店客房的在线管理 提高客房管理的效率和准确性 关键词 jsp 酒店客房管理系统 客房信
  • gauge自动化框架踩坑(五):关于表格

    官方文档使用表格的方式有两种 1 表格参数 2 动态参数 现针对不同的情况做一分析 一 表格参数 官方文档的解释是 表格参数被用来作为一个step 执行多条数据 以官网的模板项目为例 这里给了一个表格 作为一个step Almost all
  • 将时间序列转成图像——马尔可夫转移场方法 Matlab实现

    目录 1 方法 2 Matlab代码实现 3 结果 若觉文章质量良好且有用 请别忘了点赞收藏加关注 这将是我继续分享的动力 万分感谢 其他 1 时间序列转二维图像方法及其应用研究综述 vm 1215的博客 CSDN博客 2 将时间序列转成图
  • BOOST升压电路PCB布局布线

    一 正确找出BOOST的高频电流环路 尽可能让di dt大的路径小 在boost中为开关管 二极管 与输出电容 二 输入环路 先经过Cin再到芯片输入脚 三 输出环路 重要 SW覆盖面积要小 四 反馈环路 重要 与FB相连的两个电阻越靠近F
  • 零拷贝内存 & 固定内存

    一 总览 虚拟内存是一种计算机内存管理的技术 它让程序认为程序自身有一段完整的连续可用的内存 一个地址空间 当程序运行时所占的内存空间大于物理空间容量 操作系统可以将暂时不用的数据放入到磁盘 用的时候再拿出来 这样磁盘有一部分空间就是用来存
  • log4cplus 分级显示控制

    前不久已经整理过一篇关于log4cplus介绍和使用基础的文章 这次来看看如何更好的使用log4cplus这个 功能强大的日志系统吧 层次结构 在log4cplus中 所有logger都通过一个层次化的结构 其实内部是hash表 来组织的
  • Python中@property和@setter的用法

    一 property 用法 可以使用 property装饰器来创建只读属性 property装饰器会将方法转换为相同名称的只读属性 这样可以防止属性被修改 实例 class DataSet object property def metho
  • mysql grouping sets_GROUPING SETS与GROUP_ID

    SELECT E DEPARTMENT ID DID E JOB ID JOB E MANAGER ID MID SUM E SALARY SUM SAL COUNT E EMPLOYEE ID CNT GROUP ID GG FROM E
  • FreeRTOS源码探析之——软件定时器

    软件定时器是FreeRTOS中的一个重要模块 使用软件定时器可以方便的实现一些与超时或周期性相关的功能 本篇从FreeRTOS的源码入手 来分析FreeRTOS软件定时器的运行机理 1 基础知识 1 1 软件定时器与硬件定时器的区别 硬件定
  • 开放-封闭原则

    我们在做任何系统的时候 都不要指望系统一开始就完全确定需求 然后再也不发生变化 这是不现实 也是不科学的想法 既然需求是一定会发生变化的 那么如何在面对需求的变化时 设计的软件可以相对容易修改 不至于说 新需求一来就要把整个程序都推倒重来呢
  • 【Python】利用format方法保留三位小数

    format方法是内置的Python字符串格式化方法 基本语法为 str format 它增强了字符串格式化的功能 基本语法是通过 和 来代替以前的 format 函数可以接收多个参数 位置可以不按顺序 具体实例如下 print 0f fo
  • UP-DETR:用无监督的方式对Transformer进行预训练来做物体检测

    点击上方 AI公园 关注公众号 选择加 星标 或 置顶 因公众号更改了推送规则 记得读完点 在看 下次AI公园的新文章就能及时出现在您的订阅列表中 作者 Synced 编译 ronghuaiyang 导读 不仅对CNN的backbone预训
  • ReactHooks之useEffect

    useEffect 副作用钩子 useEffect相当于 componentDidMount 组件挂载 componentDidUpdate 组件更新 和 componentWillUnmount 组件将要销毁 这三个生命周期函数的组合 u
  • 计算机处理器性能排名,电脑处理器性能排行榜

    cpu可以说是电脑的心脏 作为电脑的核心存在 cpu性能对电脑性能的影响不言而喻 虽然说因为人民币贬值 cpu价格全面上涨近10 那么电脑处理器性能的市场行情怎么样 下面给大家讲解电脑处理器性能排行榜了 电脑处理器性能排行榜 下面这个cpu
  • Windows 7下安装CentOS 7 Linux双操作系统

    参考文章 1 https blog csdn net zh175578809 article details 78576193 2 https jingyan baidu com article c275f6bacc3326e33c7567
  • Xmodem/Ymodem/Zmodem协议详解

    序 Xmodem Ymodem和Zmodem协议是最常用的三种通信协议 Xmodem协议是最早的 传输128字节信息块 之后也支持到1k的传输 Ymodem是Xmodem的增强版协议 具有传输快速稳定的优点 它可以一次传输1024字节的信息