资源简介
基于STM32F205的W5500从FTP服务器下载文件例程,经过测试可以使用
详细的FTP连接下载过程,详细驱动指令
代码片段和文件信息
#include “app_ftp.h“
static tFTPCtrlDef FTP_DownloadCtrl;
static unsigned char FTP_DataIP[4]; //FTP服务器数据通道IP
static unsigned short FTP_DataPort; //FTP服务器数据通道端口
extern unsigned short ConvertHexCharToHex(unsigned char *pStrsDataunsigned short lenunsigned char *pHexData);
unsigned char IsCommendValid(uint16_t Responses)
{
if((Responses == R_150)||(Responses == R_200)||(Responses == R_220)||(Responses == R_226)
||(Responses == R_227)||(Responses == R_230)||(Responses == R_331)||(Responses == R_530))
{
return 1;
}
else
{
return 0;
}
}
void FTP_Commend_Analysis(unsigned char *pdataFUN_COMM comm)
{
uint16_t Responses;
char tmp[256];
uint8_t dat[30]={0};
unsigned char i;
char * tok=0;
// /************************************************打印************************************************/
// #ifdef NET_PRINTF
// memset(tmp0sizeof(tmp));
// strcpy(tmp(char*)pdata);
// NetSocketTcpSend(NET_SOCKET_4 (unsigned char*)tmp strlen(tmp));
// #endif
// /************************************************打印************************************************/
Responses =(pdata[0]-‘0‘)*100+(pdata[1]-‘0‘)*10+(pdata[2]-‘0‘);
if(IsCommendValid(Responses))
{
FTP_DownloadCtrl.Waiting_Flag = 0;
}
else
{
return;
}
switch(Responses)
{
case R_220: //服务器OK
{
FTP_DownloadCtrl.ServerReady_Flag = 1;
// FTP_DownloadCtrl.UserLogin_Flag = 0;
}break;
case R_230:
{
FTP_DownloadCtrl.UserLogin_Flag = 2;
}break;
case R_227: //进入被动模式,接收FTP服务器的IP和端口号
{
strtok((char*)pdata“(“);
//读取IP
for(i=0;i<4;i++)
{
tok = strtok(NULL““);
if(tok == 0)
{
return;
}
FTP_DataIP[i] = atoi(tok);
}
//读取端口号
FTP_DataPort = 0;
for(i=0;i<2;i++)
{
tok = strtok(NULL““);
if(tok == 0)return;
FTP_DataPort<<=8;
FTP_DataPort += atoi(tok);
}
FTP_DownloadCtrl.PASV_Flag = 1;
}break;
case R_331:
{
FTP_DownloadCtrl.UserLogin_Flag = 1;
}break;
case R_530:
{
FTP_DownloadCtrl.UserLogin_Flag = 0;
}break;
}
}
void FTP_FileDownloadCtrl(FUN_COMM comm)
{
unsigned char i;
unsigned int FileOffset;
unsigned int Flash_Addr;
FRESULT res; // FatFs function common result code
short int Total_Datalen;
unsigned int FileSize;
unsigned short int Pack_Datalen;
char tmp[MAX_DATALEN];
CPU_BOOL Ret;
unsigned int retlen;
// unsigned int Offset = 0;
unsigned char GetDataFlag;//下载到数据标志,用来判断是否更新了文件
if(FTP_DownloadCtrl.Waiting_Flag == 1) //正在等待应答,则不动作
{
return;
}
if(NetSocketStatusGet(NET_SOCKET_2) == DEF_OFF)
{
return;
}
if(FTP_DownloadCtrl.UserLogin_Flag == 0) //未登陆,先发送用户名
{
memset(tmp0sizeof(tmp));
sprintf(tmp“USER %s\r\n“inifile_net_param.ftpuser);
FTP_DownloadCtrl.Waiting_Flag = 1;
comm((unsigned char*)tmpstrlen(tmp));
}
else if(FTP_DownloadCtrl.UserLogin_Flag == 1) //发送密码
{
memset(tmp0sizeof(tmp
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2064 2018-12-07 13:59 app_ftp.h
文件 8564 2018-12-19 17:38 app_ftp.c
----------- --------- ---------- ----- ----
10628 2
- 上一篇:NT35310中文文档
- 下一篇:60S2单片机驱动DS18B20温度传感器C程序
相关资源
- Delphi 下ServerSocket和ClientSocket 的通信
- E4A安卓App Server/Client调试助手
- linux下的简单文件服务器和客户端程序
- Qt使用tcp实现的简单服务端和客户端(
- 基于linux系统的ftp服务器
- FTP协议父子连接
- 基于UDP的P2P小Demo (穿透NAT)delphi源码
- qt ftp上传
- STM32F407W5500
- 8UFTP,好用的FTP工具
- PCMan-FTP+溢出脚本
- vc实现的ftp客户端断点续传
- linux下的tftp server端的源码
- Apache HttpClient 4.5.6
- FTP客户端C源码(Linux版)
- TCP服务器端和客户端收发测试程序亲
- 8UFTP 8UFTP
- vsftpd-2.3.4-5.1.3.x86_64.rpm
- tftp server —一个简易的 tftp 服务器
- win64_11gR2_client客户端
- 支持计划任务和通配符指定文件名的
- serv-u ftp serverv6.3.0.0 汉化破解版百度网
- ftpserver 绿色版
- vsftpd-3.0.2.tar.gz
- linux下的通用lcd驱动lcdproc
- 文件夹目录树列表小工具!实用
- QT4实现的给予QFTP类的FTP客户端程序
- soapClient.zip
- FTP作业代码参考
- modbus tcp/ip通信client
评论
共有 条评论