Страница 1 из 1
sim 900 ftp

Добавлено:
17 ноя 2014, 21:53
admin
- Код: выделить все
#include "Function.h"
#include "main.h"
//typedef signed int int8_t; // optional
int8_t answer;
int onModulePin = 2;
char aux_str[30];
extern unsigned int rx1_counter;
//char incoming_data[120];
unsigned int FtpDataMaxLength;
char test_str[ ]= "1111111112";
char response[500];
int data_size, aux;
///////////////////////////////////////////////////////////////////////////////////////////////////
// отсылаем команду перебираем ответы если есть совпадение то 1
//////////
unsigned int sendATcommand(char* ATcommand, char* ATanswer, unsigned int timeout)
{
unsigned int i=0,x=0, answer=0;
x=0;
Sleep(100);// ждем завершение каких либо процессов с уартами.
while( rx1_counter > 0) get1_char(); // Очищаем буфер модема от любах ответов отданных ранее
// put2_str((unsigned char*)" To modem: ");//LOG
// put2_str((unsigned char*) ATcommand);//LOG
put1_str((unsigned char*) ATcommand);// Send the AT command
do {
if(rx1_counter != 0)
{
x =- 1; // устанавливаем на начало строки
do { x++;
response[x]=0;
response[x+1]=0;
response[x]=get1_char();
}
while ((response[x]!=0x0D)&& (x<300));// пока не конец строки
// put2_str((unsigned char*)" From modem: ");//LOG
put2_str((unsigned char*) response);
if (strstr1(response, ATanswer) != 0)// сравнение строк ответа модема и "правильного ответа"
{
answer = 1;
put2_str((unsigned char*) "+++++");
}
}
}
while((answer == 0) && (i++<timeout*2000));
return answer;
}
//----------------------------------------------------------------------------------------------------------//
//----------------------------------------------------------------------------------------------------------//
unsigned int sendATcommand2(char* ATcommand, char* ATanswer1,
char* ATanswer2, unsigned int timeout)
{
unsigned int i=0,x=0, answer=0;
x=0;
Sleep(100);// ждем завершение каких либо процессов с уартами.
while( rx1_counter > 0) get1_char(); // Очищаем буфер модема от любах ответов отданных ранее
put2_str((unsigned char*)" To modem: ");//LOG
put2_str((unsigned char*) ATcommand);//LOG
put1_str((unsigned char*) ATcommand);// Send the AT command
do {
if(rx1_counter != 0)
{
x =- 1; // устанавливаем на начало строки
do { x++;
response[x]=0;
response[x+1]=0;
response[x]=get1_char();
}
while ((response[x]!=0x0D)&& (x<300));// пока не конец строки
if (strstr1(response, ATanswer1) != 0)// сравнение строк ответа модема и "правильного ответа"
{
answer = 1;
put2_str((unsigned char*) "++1+++");
}
if (strstr1(response, ATanswer2) != 0)// сравнение строк ответа модема и "правильного ответа"
{
answer = 2;
char* res = (char *) response;
for ( i = 0; i < 13; ++i)res++;
FtpDataMaxLength= TextToWord(res);
}
}
}
while((answer == 0) && (i++<timeout*2000));
return answer;
}
//----------------------------------------------------------------------------------------------------------//
//----------------------------------------------------------------------------------------------------------//
///////////////////////////////////////////////////////////////////////////////////////////////////
// устанавливаем соединение с ftp сервером
//////////
void GprsOff()
{
while (sendATcommand("AT+SAPBR=0,1", "ERROR", 2000) != 1);// выключаем интернет соединение
}
//----------------------------------------------------------------------------------------------------------//
//----------------------------------------------------------------------------------------------------------//
// соединение с фтп
void GprsOn()
{
do
{
GprsOff();
sendATcommand("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\"", "OK", 2000);//тип соединения
sendATcommand("AT+SAPBR=3,1,\"APN\",\"internet.rt.ru\"", "OK", 2000);//APN интернет соединения
sendATcommand("AT+SAPBR=3,1,\"USER\",\"\"", "OK", 2000);// юзер интернет соединения
sendATcommand("AT+SAPBR=3,1,\"PWD\",\"\"", "OK", 2000);//пароль интернет соединения
Sleep(5000);
}
while (sendATcommand("AT+SAPBR=1,1", "OK", 2000) != 1);//устанавливаем соединение
sendATcommand("AT+SAPBR=2,1", "OK", 2000);// полученный адрес
}
//----------------------------------------------------------------------------------------------------------//
//----------------------------------------------------------------------------------------------------------//
void FtpPutLogin(){
do
{
GprsOn();
while (sendATcommand("AT+FTPPUT:2,0", "ERROR", 2000) != 1);// выключаем интернет соединение
sendATcommand("AT+FTPCID=1", "OK", 2000);
sendATcommand("AT+FTPSERV=\"ip\"", "OK", 2000);
sendATcommand("AT+FTPPORT=21", "OK", 2000);
sendATcommand("AT+FTPUN=\"user\"", "OK", 2000);
sendATcommand("AT+FTPPW=\"pass\"", "OK", 2000);
sendATcommand("AT+FTPPUTNAME=\"error.txt\"", "OK", 2000);// filename file.txt
sendATcommand("AT+FTPPUTPATH=\"/ddd/\"", "OK", 2000);//putch
}
while (sendATcommand2("AT+FTPPUT=1", "OK,", "+FTPPUT:1,1,1280", 300000) != 2);//устанавливаем соединение
}
//----------------------------------------------------------------------------------------------------------//
//----------------------------------------------------------------------------------------------------------//
void FtpUpload(char* Data,int DataLength)
{
if (sendATcommand(append1("AT+FTPPUT=2,",IntToText(DataLength,10)),
append2("+FTPPUT:2,",IntToText(DataLength,10)), 30000))
{
if (sendATcommand(Data, "+FTPPUT:1,1", 30000))
{
put2_str((unsigned char*) "Upload done!!");
} else put2_str((unsigned char*) "Upload false!!");
}
}
//----------------------------------------------------------------------------------------------------------//
//----------------------------------------------------------------------------------------------------------//
void FtpGetLogin()
{
do
{
GprsOn();
while (sendATcommand("AT+FTPGET:2,0", "ERROR", 2000) != 1);// выключаем интернет соединение
sendATcommand("AT+FTPCID=1", "OK", 2000);
sendATcommand("AT+FTPSERV=\"ip\"", "OK", 2000);
sendATcommand("AT+FTPPORT=21", "OK", 2000);
sendATcommand("AT+FTPUN=\"user\"", "OK", 2000);
sendATcommand("AT+FTPPW=\"pass\"", "OK", 2000);
sendATcommand("AT+FTPGETNAME=\"error.txt\"", "OK", 2000);// filename file.txt
sendATcommand("AT+FTPGETPATH=\"/ddd/\"", "OK", 2000);//putch
}
while (sendATcommand2("AT+FTPGET=1", "OK,", "+FTPGET:1,1", 300000) != 2);//устанавливаем соединение
}
//----------------------------------------------------------------------------------------------------------//
//----------------------------------------------------------------------------------------------------------//
void FtpDownload(char* Data,int DataLength)
{ int i=0;
put1_str("AT+FTPGET=2,10");
do {
if(rx1_counter != 0)
{
i =- 1; // устанавливаем на начало строки
do { i++;
Data[i]=0;
Data[i+1]=0;
Data[i]=get1_char();
}while(Data[i]==0 );
}
} while( (i++<2000*2000));
}
//----------------------------------------------------------------------------------------------------------//
//----------------------------------------------------------------------------------------------------------//
void FtpPutClose()
{
if( sendATcommand("AT+FTPPUT=2,0", "+FTPPUT:1,0", 8000))
put2_str((unsigned char*) "Ftp Put Closed");
else
put2_str((unsigned char*) "Ftp NOT Closed !!!");
}
//----------------------------------------------------------------------------------------------------------//
//----------------------------------------------------------------------------------------------------------//
void FtpGetClose()
{
if( sendATcommand("AT+FTPGET=2,0", "+FTPGET:1,0", 8000))
put2_str((unsigned char*) "Ftp GET Closed");
else
put2_str((unsigned char*) "Ftp NOT Closed !!!");
}
void power_on()
{
unsigned int answer=0;
answer = sendATcommand("AT", "OK", 2000);
}