• 大小: 4KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-16
  • 语言: 其他
  • 标签: W5500  ftp  client  stm32  

资源简介

基于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


评论

共有 条评论