Страница 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);
}