收藏 分享(赏)

Xmodem协议详解以及源代码.doc

上传人:hyngb9260 文档编号:5239284 上传时间:2019-02-13 格式:DOC 页数:10 大小:55.50KB
下载 相关 举报
Xmodem协议详解以及源代码.doc_第1页
第1页 / 共10页
Xmodem协议详解以及源代码.doc_第2页
第2页 / 共10页
Xmodem协议详解以及源代码.doc_第3页
第3页 / 共10页
Xmodem协议详解以及源代码.doc_第4页
第4页 / 共10页
Xmodem协议详解以及源代码.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

1、研究 Xmodem协议必看的 11个问题原文地址:http:/ “string.h“void port_outbyte(unsigned char trychar)unsigned char buf2;buf0 = trychar;lowLevel_write(buf,1);unsigned char port_inbyte(unsigned int time_out)unsigned char ch;int i;last_error = 0;if(lowLevel_read(last_error = 1;return ch;static int check(int crc, const un

2、signed char *buf, int sz)if (crc)unsigned short crc = crc16_ccitt(buf, sz);unsigned short tcrc = (bufsz1) = 0);int xmodemReceive(unsigned char *dest, int destsz)unsigned char xbuff1030;unsigned char *p;int bufsz, crc = 0;unsigned char trychar = C;unsigned char packetno = 1;int i, c, len = 0;int retr

3、y, retrans = MAXRETRANS;for(;)for( retry = 0; retry bufsz)count = bufsz;if (count 0)memcpy (len += count;+packetno;retrans = MAXRETRANS+1;if (-retrans bufsz) c = bufsz;if (c = 0)memset (if (c = 0)xbuff3 = CTRLZ;elsememcpy (if (c 8) xbuffbufsz+4 = ccrc elseunsigned char ccks = 0;for (i = 3; i bufsz+3

4、; +i)ccks += xbuffi;xbuffbufsz+3 = ccks;for (retry = 0; retry MAXRETRANS; +retry)for (i = 0; i bufsz+4+(crc?1:0); +i)port_outbyte(xbuffi);c = port_inbyte(DLY_1S);if (last_error = 0 )switch (c)case ACK:+packetno;len += bufsz;goto start_trans;case CAN:c = port_inbyte(DLY_1S);if ( c = CAN)port_outbyte(ACK);flushinput();return -1;break;case NAK:default:break;port_outbyte(CAN);port_outbyte(CAN);port_outbyte(CAN);flushinput();return -4;elsefor (retry = 0; retry 10; +retry)port_outbyte(EOT);c = port_inbyte(DLY_1S)1);if (c = ACK) break;flushinput();return (c = ACK)?len:-5;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 事务文书

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报