?? ftp.c
字號:
#include "config.h"
Communi_Stru FtpCtrl; //IP,端口號
FTPCMDINFO FtpCmdInfo; //用戶名,密碼,文件路徑及文件名
FTPCMD FtpCmd[] = //FTP命令字及其內容
{
{"USER ",FtpCmdInfo.Ftp_UserName},
{"PASS ",FtpCmdInfo.Ftp_UserPWD},
{"TYPE ","I"},
{"PASV "," "},
{"RETR ",FtpCmdInfo.DirFile_Name},
{"REST ",FtpCmdInfo.DirFile_Len},
};
uint8 GetFtpPort(INT8U *revbuf)
{
INT8U i = 0,j = 0,k = 0;
INT8U hport,lport;
INT8U *portptr = revbuf;
char hpbuf[10];
char lpbuf[10];
if(strstr((char *)portptr,"227"))
{
while(1)
{
if(*portptr++ == ',')
{
i++;
if(i == 4)break;
}
}
while(*portptr != ',')
{
hpbuf[j++] = *portptr++;
}
hpbuf[j] = '\0';
hport = atoi(hpbuf);
portptr++;
while(*portptr != ')'){
lpbuf[k++] = *portptr++;
}
lpbuf[k] = '\0';
lport = atoi(lpbuf);
sprintf(FtpCtrl.strPort,"%d", ((INT16U)hport<<8)|(INT16U)lport);
return TRUE;
}
return FALSE ;
}
/*****************************************************************
Function name: FtpSendCmd
Descriptions: connecting FTP command with para
parameters: Buffer: point to buf including com and para
len: length of command
Returned value: None
******************************************************************/
uint8 FtpSendCmd(uint8 * ftpCmdbuf,FTPCMD ftpCmd,uint16 * cmdlen)
{
char buff[TRANSINFOLEN];
uint16 i=0;
memset(buff,0,sizeof(buff));
memcpy(ftpCmdbuf,ftpCmd.CmdName,strlen(ftpCmd.CmdName));
*cmdlen =strlen(ftpCmd.CmdName);
memcpy(ftpCmdbuf+*cmdlen,ftpCmd.CmdPara,strlen(ftpCmd.CmdPara));
*cmdlen +=strlen(ftpCmd.CmdPara);
memcpy(ftpCmdbuf+*cmdlen,"\r\n",strlen("\r\n"));
*cmdlen +=strlen("\r\n");
for(i=0;i<strlen((char *)ftpCmdbuf);i++)
sprintf(buff+strlen(buff),"%02X",ftpCmdbuf[i]);
*cmdlen=strlen(buff);
memcpy(ftpCmdbuf,buff,*cmdlen);
return TRUE;
}
uint8 Ftp_Conn (uint8 * uiReviceBuf0,uint16 * uiNum)
{
INT8U tempbuff[TRANSINFOLEN/2];
memset(uiReviceBuf0,0,TRANSINFOLEN);
FtpSendCmd(uiReviceBuf0,FtpCmd[0],uiNum);
Send_data(uiReviceBuf0,TRANSINFOLEN,uiNum);
uartWrite(UART2,uiReviceBuf0,*uiNum,NULL);
uartWrite(UART3,uiReviceBuf0,*uiNum,NULL); //測試
OSTimeDlyHMSM(0,0,2,500);
memset(uiReviceBuf0,0,TRANSINFOLEN);
if(LoadUart2(UART2, uiReviceBuf0, uiNum))
{
memset(tempbuff,0,sizeof(tempbuff));
*uiNum=getHexStr(tempbuff,uiReviceBuf0,*uiNum);
memset(uiReviceBuf0,0,TRANSINFOLEN);
memcpy(uiReviceBuf0,tempbuff,*uiNum);
uartWrite(UART3,uiReviceBuf0,*uiNum,NULL); //測試
}
memset(uiReviceBuf0,0,TRANSINFOLEN);
FtpSendCmd(uiReviceBuf0,FtpCmd[1],uiNum);
Send_data(uiReviceBuf0,TRANSINFOLEN,uiNum);
uartWrite(UART2,uiReviceBuf0,*uiNum,NULL);
uartWrite(UART3,uiReviceBuf0,*uiNum,NULL); //測試
OSTimeDlyHMSM(0,0,2,0);
memset(uiReviceBuf0,0,TRANSINFOLEN);
if(LoadUart2(UART2, uiReviceBuf0, uiNum))
{
memset(tempbuff,0,sizeof(tempbuff));
*uiNum=getHexStr(tempbuff,uiReviceBuf0,*uiNum);
memset(uiReviceBuf0,0,TRANSINFOLEN);
memcpy(uiReviceBuf0,tempbuff,*uiNum);
uartWrite(UART3,uiReviceBuf0,*uiNum,NULL); //測試
}
memset(uiReviceBuf0,0,TRANSINFOLEN);
FtpSendCmd(uiReviceBuf0,FtpCmd[2],uiNum);
Send_data(uiReviceBuf0,TRANSINFOLEN,uiNum);
uartWrite(UART2,uiReviceBuf0,*uiNum,NULL);
uartWrite(UART3,uiReviceBuf0,*uiNum,NULL); //測試
OSTimeDlyHMSM(0,0,5,0);
memset(uiReviceBuf0,0,TRANSINFOLEN);
if(LoadUart2(UART2, uiReviceBuf0, uiNum))
{
memset(tempbuff,0,sizeof(tempbuff));
*uiNum=getHexStr(tempbuff,uiReviceBuf0,*uiNum);
memset(uiReviceBuf0,0,TRANSINFOLEN);
memcpy(uiReviceBuf0,tempbuff,*uiNum);
uartWrite(UART3,uiReviceBuf0,*uiNum,NULL); //測試
}
memset(uiReviceBuf0,0,TRANSINFOLEN);
FtpSendCmd(uiReviceBuf0,FtpCmd[3],uiNum);
Send_data(uiReviceBuf0,TRANSINFOLEN,uiNum);
uartWrite(UART2,uiReviceBuf0,*uiNum,NULL);
uartWrite(UART3,uiReviceBuf0,*uiNum,NULL); //測試
OSTimeDlyHMSM(0,0,5,0);
memset(uiReviceBuf0,0,TRANSINFOLEN);
if(LoadUart2(UART2, uiReviceBuf0, uiNum))
{
memset(tempbuff,0,sizeof(tempbuff));
*uiNum=getHexStr(tempbuff,uiReviceBuf0,*uiNum);
memset(uiReviceBuf0,0,TRANSINFOLEN);
memcpy(uiReviceBuf0,tempbuff,*uiNum);
uartWrite(UART3,uiReviceBuf0,*uiNum,NULL); //測試
GetFtpPort(uiReviceBuf0);
}
return TRUE;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -