为RT-Thread增加Ymodem传输协议

2013-2-3 02:56 [复制链接] 20 13607

Ymodem是Xmodem传输协议的升级版,跟Xmodem-1K相似,不同之处是Ymodem在开始传送前会有个文件名传送的过程,每包固定为1024字节,采用CRC16校验
2 O. Z0 R7 c( C6 Z3 A
  i- [9 Z# E. z) Y3 VCRC16校验保证了传输的可靠性.
4 h6 S, j8 A% L- Q/ I$ z2 w
& e9 S: J3 z8 f/ k' a" u) x" t使用:) g6 e2 Y  P% a0 D  H
首先,必须有文件系统或者其它能存放数据的地方/ J" D0 K; ]9 E/ n: U5 w
其次,传输依赖Finsh,调用ry函数后将使用finsh的设备来传输数据* P" Z# X2 @, @% n/ H0 P$ o
最后,解压附件中的三个文件并添加到你的工程
* h/ j0 b: r9 U2 o4 y  D6 Z* I( M  s8 S
1.打开超级终端或其它类似支持Ymodem的终端" Z+ |6 [  ?$ D8 Z4 g
2.finsh里执行ry(char *),参数是接收文件存放的路径,或者其它.例如我要将接收的文件存放在文件系统的根目录下:ry("/")
8 W3 k, I1 d' ]: Y+ ]$ J, T3.此时超级终端里会每隔三秒收到一个字符'C',十次后退出.
8 S& `: O2 k' @* b+ L9 x4.选择你要传送的文件,然后选择Ymodem协议,点击发送
' V: _9 _2 T; R% P* T5.观看进度条....
) n' t( N7 _! ~; G# v$ Z, ]6.完成
& [" d6 r; e/ L( w6 t7 c
  V4 X* Z+ u& i, @% }[attachment=-2]6 ~( _* v4 q9 g

  k7 k: z# m3 X$ Y, o[attachment=-1]
% a. I, H+ M$ k! x& A$ {
5 Z. C; V9 l1 F3 i7 J
( ]+ W( j% M( h) E0 F% e% j5 l$ Q3 P4 X3 h9 Q' J/ m% G* Q9 x+ r8 q
[attachment=-3]
ymodem.png
ymodem1.png
ymodem3.png

Ymodem.zip

2.93 KB, 下载次数: 509

ymodem.zip

2.93 KB, 下载次数: 426

ymodem.zip

3.91 KB, 下载次数: 500

使用道具 举报 显示全部楼层 回复
最新评论 | 正序浏览
显示全部楼层 |楼层直达:
发表于 2013-2-3 09:25:32 | 显示全部楼层

为RT-Thread增加Ymodem传输协议

沙发,学习。
使用道具 举报 回复
发表于 2013-3-25 23:23:23 | 显示全部楼层

为RT-Thread增加Ymodem传输协议

修正了一个新建文件的bug; E1 ^: P7 P) ]; ]7 g9 x# ]
使用道具 举报 回复
发表于 2013-3-25 23:40:45 | 显示全部楼层

为RT-Thread增加Ymodem传输协议

狼呆死嘎!
使用道具 举报 回复
发表于 2013-3-25 23:45:55 | 显示全部楼层

为RT-Thread增加Ymodem传输协议

可行?如果好的话,可以考虑加到RT-Thread中呐
使用道具 举报 回复
发表于 2013-3-26 10:55:18 | 显示全部楼层

为RT-Thread增加Ymodem传输协议

我使用中是还可以,不过只实现了接收的部分,文件系统好了后,发送一些字库文件,资源文件啥的还是蛮方便: B/ M- M% D$ J; M5 w4 X, b
发送部分因使用的较少,还没有实现
使用道具 举报 回复
发表于 2013-3-26 13:34:00 | 显示全部楼层

为RT-Thread增加Ymodem传输协议

我使用中是还可以,不过只实现了接收的部分,文件系统好了后,发送一些字库文件,资源文件啥的还是蛮方便
/ O9 P6 c& p# g, E1 |( X3 V发送部分因使用的较少,还没有实现
你就没验证把接收到的文件发送回去,看是否有问题啊? 也许文件有问题呢?
使用道具 举报 回复
发表于 2013-3-29 18:39:56 | 显示全部楼层

为RT-Thread增加Ymodem传输协议

再更新一次
  o9 v3 B, T$ t. P: ]* V
6 R& |0 \2 E! e  U4 n5 l. _Ymodem当传输到最后一包的时候(1024字节或者128字节),不足一包会用CTRL-Z(0x1A)自动补齐一包,这样接收到的文件后面会写上一些无用的0x1A
4 J7 @( h8 ^# h% D0 J大多数应用是不会影响的,但是越看越不爽9 a  D* A9 u: V- Q+ `

' H* ^' t& l( C0 Z) P就修正了
6 e2 G0 F" T4 a) t5 R7 T* l5 v
使用道具 举报 回复
发表于 2013-3-29 18:40:19 | 显示全部楼层

为RT-Thread增加Ymodem传输协议

[quote]我使用中是还可以,不过只实现了接收的部分,文件系统好了后,发送一些字库文件,资源文件啥的还是蛮方便' U; b( q4 A, X( p& R2 A. u; o
发送部分因使用的较少,还没有实现
你就没验证把接收到的文件发送回去,看是否有问题啊? 也许文件有问题呢?[/quote]
2 V1 T  r' B$ J: ?2 t  a" z( m
$ L: o: |* e% _- i1 zcat打印出来看还不行吗?
使用道具 举报 回复
发表于 2013-3-29 19:34:40 | 显示全部楼层

为RT-Thread增加Ymodem传输协议

cat不出换行符差异吧。
使用道具 举报 回复
发表于 2013-6-3 22:47:24 | 显示全部楼层

为RT-Thread增加Ymodem传输协议

我的为何收到的第一个包都是0x00呢?:PC已经收到C
使用道具 举报 回复
发表于 2013-6-7 20:15:00 | 显示全部楼层

为RT-Thread增加Ymodem传输协议

<!-- l --><a class="postlink-local" href="http://www.rt-thread.org/phpBB3/viewtopic.php?f=3&t=1749">viewtopic.php?f=3&t=1749</a><!-- l -->
8 E! r0 J& j. b; [RT-Thread有Ymodem协议栈么?[已实现]: U& g- m: U6 ?# V1 u4 D  N1 o" i

/ [3 S  _6 f/ _& |, I9 W这个是我12年发的帖子
使用道具 举报 回复
发表于 2013-7-1 22:22:58 | 显示全部楼层

为RT-Thread增加Ymodem传输协议

只收到一个字节:0x01。不知为啥?有遇到此种情况的没?”
使用道具 举报 回复
发表于 2013-8-16 13:25:01 | 显示全部楼层

为RT-Thread增加Ymodem传输协议

只收到一个字节:0x01。不知为啥?有遇到此种情况的没?”

5 m, q/ |0 K) ^+ \$ \4 i9 K: I6 ]/ B8 l& b* ~
设备只收到一个字节吗?用的是啥终端?
使用道具 举报 回复
发表于 2013-10-9 11:24:30 | 显示全部楼层

为RT-Thread增加Ymodem传输协议

好像很慢的样子,不知道为什么?
使用道具 举报 回复
发表于 2013-12-19 12:38:11 | 显示全部楼层

为RT-Thread增加Ymodem传输协议

这个绝对是 利好~~~
使用道具 举报 回复
发表于 2013-12-19 13:10:42 | 显示全部楼层

为RT-Thread增加Ymodem传输协议

在STM32用做升级的boot里用过别人写的一个,升级比较方便,XP以前的系统不用装软件
使用道具 举报 回复
发表于 2013-12-20 10:52:27 | 显示全部楼层

为RT-Thread增加Ymodem传输协议

这个和zmodem有什么差别吗?
使用道具 举报 回复
发表于 2013-12-20 10:52:50 | 显示全部楼层

为RT-Thread增加Ymodem传输协议

zmodem用的挺好的
使用道具 举报 回复
发表于 2013-12-20 10:53:07 | 显示全部楼层

为RT-Thread增加Ymodem传输协议

超级终端也支持(windows版本)
使用道具 举报 回复
发表于 2019-3-9 10:46:03 | 显示全部楼层
Ymodem协议还是挺好用的,传数据有序列号,有CRC校验和重传,感觉还是很完善了。串口嘛,要想很快的速率也是不现实的。我有自己用MFC写的一个Ymodem升级工具
使用道具 举报 回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|RT-Thread开发者社区 ( 沪ICP备13014002号-1

有害信息举报电话:021-31165890 手机:18930558079

© 2006-2019 上海睿赛德电子科技有限公司

Powered by RT-Thread

快速回复 返回顶部 返回列表