2440 Xmodem协议传送文件的简单实现
来源:互联网 发布:男生衣服搭配软件 编辑:程序博客网 时间:2024/06/05 23:46
1Xmodem的简单实现,暂不包含数据校验
当准备发送是先由接收方给发送方发送一个NAK信息;之后发送方开始发送包,接收方接收到一个包(132字节)后给发送 ACK给发送方;当发送方发完时(到文件的尾了),在发送一个包,其中包头SHO(包的第一个字节)中为EOT,之后接收方再回一个ACk,至此传输结束;
xmodem的数据帧结构
| | | | | |
| SOH | 信息包序号 | 信息包序号的补码 | 数据区段 | 校验和 |
|_____|____________|___________________|__________|____________|
其中1字节的SOH,1字节的包序号,1字节的序号补码,128字节的数据,1字节的校验码,总共132字节;
2.Xmodem协议相关控制字符
SOH 0x01
STX 0x02
EOT 0x04
ACK 0x06
NAK 0x15
CAN 0x18
CTRLZ 0x1A
int my_loadb(int argc, char *argv[])
{
char *k = (char *)0x37100000; //接收的数据放到以该地址为起始地址的区域
int size;
char z;
int i;
//uart_putchar(NAK);
delay(); //延时大概十秒钟,给打开xmodem发送的窗口留出时间
uart_putchar(NAK); // 发送NAK (确保此时Xmodem发送窗口已经打开,等待着NAK)
size = judge_hex(argv[1]);
while(1)
{
z = uart_getchar(); //接收SHO(第一字节)判断是否为 EOT
if(EOT == z)
break;
for(i = 1; i < 3; i++) //接收两字节的序号
{
z = uart_getchar();
//uart_putchar(*(k-1));
}
for(i = 3; i < 131; i++) //接收128字节的数据
{
*k++ = uart_getchar();
//uart_putchar(*(k-1));
}
z = uart_getchar(); //接收一字节的校验码,在次并没有处理;
uart_putchar(ACK); //接收玩一个包,发送ACK
}
uart_putchar(ACK); //收到EOT ,再发送一个ACK
my_puts("download ok");
my_puts("\n");
my_puts("the start address is :");
my_putx(0x37100000);
my_puts("\n");
return 0;
}
- 2440 Xmodem协议传送文件的简单实现
- 超级终端使用Xmodem协议传送文件
- 超级终端使用Xmodem协议传送文件
- TFTP:简单文件传送协议
- TFTP简单文件传送协议
- xmodem协议 文件接收发送
- 通过Uart实现Xmodem协议
- 使用Java实现Xmodem协议
- 使用Java实现Xmodem协议
- 使用Java实现Xmodem协议
- 基于Xmodem协议的PC与单片机文件传递
- (15)TFTP:简单文件传送协议
- Xmodem 协议
- XMODEM协议 .
- xmodem 协议
- XMODEM协议
- Xmodem协议
- XModem协议
- friendarm 6410板子在windows的第一个程序 (下程序,在模拟dos终端编译汇编,C)
- ubuntu 9.10 在vmware上安装虚拟机步骤;
- 面向对象的特征
- s3c6410 s3c2440串口发送接收数据的实现(轮询)及相关寄存器
- 函数指针 往指定内存中写数据
- 2440 Xmodem协议传送文件的简单实现
- s3c6410 的外部中断实现
- s3c6410 定时器中断的实现
- s3c6410 DMA 实现(入门级)
- 看第一句时已然被打动!......
- iphone中的UITouch
- C 语言常见面试题
- 【DFS(记忆化)】poj 1351 Number of Locks
- 用getaddrinfo()函数,通过主机名获得ipv6和ipv4的地址