# FileTransferProtocol **Repository Path**: GKoSon/FileTransferProtocol ## Basic Information - **Project Name**: FileTransferProtocol - **Description**: 本仓库是协议文档 非可执行代码 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-13 - **Last Updated**: 2026-05-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 本文档旨在描述一种灵活高效的文件传输协议 方便上位机下位机交换文件 ## 角色定义 * **文件请求者** * **文件提供者** ![1778637842749](images/readme/1778637842749.png) ## 四种帧:文件信息帧 文件请求帧 文件内容帧 文件结束帧 HEAD 统一定长 8字节 (TYPE 4字节+LEN 4字节) BODY 长度 描述在HEAD的LEN中 TAIL 统一定长 2字节 ![1778652315471](images/readme/1778652315471.png) 注:帧采用string亦即ASCII方便人眼阅读 ## 真实演示 > 准备一个test.bin测试 (编译1.c凭空产生) > 准备一对虚拟串口 com1-com2通讯 > winForm上位机作为文件提供者选择COM1 > XCOM.EXE模拟MCU选择COM2 ### 首先**文件提供者**上位机COM1发起*文件信息帧* ``` 00010078{ "fileSize": 9, "fileName": "test.bin", "md5": "XXX", "ver": 4} ``` ### 然后**文件请求者**COM2发起第一个*文件请求帧* ``` 00020022{ "addr": 0, "len":9} ``` ### 然后**文件提供者**上位机COM1给出*文件内容帧* ``` 00030009123456789XX 二进制hex如下: 30 30 30 33 --HEAD 30 30 30 39 --LEN 31 32 33 34 35 36 37 38 39 --BODY 31 C3 --TAIL ``` ### 最后**文件请求者**COM1发*文件结束帧* ``` 00040022{"fileName":"test.bin","status":0} 00040022{"fileName":"test.bin","status":1} ``` ### 补充:COM2亦可分步骤 去模拟真实MCU行为 ![1778641512843](images/readme/1778641512843.png) 上位机[https://gitee.com/GKoSon/file-transfer-host](https://gitee.com/GKoSon/file-transfer-host) a8353ca MCU [https://gitee.com/GKoSon/hc32f460\_evboard](https://gitee.com/GKoSon/hc32f460_evboard) bd48ef1