Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2019, 16:31   #1
non.intellegunt
Новичок
Джуниор
 
Регистрация: 14.01.2019
Сообщений: 3
По умолчанию С+

Добрый день, господа. Мной изучается язык ассемблера, на языке Си я не бум-бум, да и нет необходимости таковой, поэтому мой вопрос вполне может показаться глупым - Данный код написан на языке Си? Если что, то данный код написан под ардуино.
Код:
#include <OneWire.h>  //Подключаем библиотеку для обмена с датчиком температуры
#include <avr/wdt.h>  //Подключаем библиотеку для использования сторожевого таймера

//----------------------------------Флаги -----------------------------------------
bool GPRS_connect=false;     
bool CSt_send_success=true; 
bool BT_send_success=true;   
bool change_request = false;
bool blink_led;            
//----------------------------------------------------------------------------------

//--------------------------------------
int Command;          
int Command_o=-1;   
int term;            
int term_o;         

int GET_step, GET_step_o;    
int SRead_step, SRead_step_o;
unsigned long Startup_time_s;     
unsigned long Last_succsess_time; 
unsigned long Last_blink_time;    

int DO=38;            
long int LOG=1234;     
long int PAS=1111;     

OneWire  ds(42);      
byte data[2];        

unsigned char Step;      
String responce_status; 
 
String Request;          
String Responce;         
String SIM_Data;                

void setup()
{
 /* ----------------------Включаем сторожевой таймер на 8 секунд.---------------- */
                                     */
 wdt_enable(WDTO_8S);

 /*Формируем первичный запрос к серверу.                                     */
 
 Request = "http://t.lazysmart.ru/device_status.php?LOG=";
 Request+=String(LOG);
 Request+="&PAS=";
 Request+=String(PAS);

 /*Инициализируем COM-порты*/
 Serial.begin(57600);                  
 Serial1.begin(19200);                 
 Serial1.setTimeout(1000);             

 /*Инициализируем порт, который управляет реле перезагрузки модема*/ 
 pinMode(48,OUTPUT);  //Для вкл./выкл. модема

 /*Инициализируем порты, к которым подлючены сигнальные светодиоды*/ 
 pinMode(49,OUTPUT);  
 pinMode(50,OUTPUT);  
 pinMode(52,OUTPUT);  

 /*Инициализируем порт, который управляет выходным реле*/ 
 pinMode(DO,OUTPUT); 

 digitalWrite(48,HIGH); 
 digitalWrite(49,HIGH); 

 /*Запускаем модем*/
 powerUp();           //Запускаем GPRS-модем
 //---------------------------!ИНИЦИАЛИЗАЦИЯ ЗАВЕРШЕНА-----------------------------------------------------------------------------
 
 //---------------------------ПОДКЛЮЧЕНИЕ К GPRS-----------------------------------------------------------------------------------
 GPRS_Init();
}
 //--------------------------!ПОДКЛЮЧЕНИЕ К GPRS-----------------------------------------------------------------------------------

 //--------------------------------------ОСНОВНОЙ ЦИКЛ-----------------------------------------------------------------------------
void loop()
{    
  //Моргаем сетодиодом "В работе" не чаще раза в секунду
  if(blink_led && Last_blink_time - (millis()/1000) > 1){
    Last_blink_time = (millis()/1000);    //Время с момента последнего моргания 
    digitalWrite(49,LOW); //Переключаем светодиод "В работе"
    blink_led = false;
  }
  else if(Last_blink_time - (millis()/1000) > 1){
    Last_blink_time = (millis()/1000);    //Время с момента последнего моргания 
    digitalWrite(49,HIGH); //Переключаем светодиод "В работе"
    blink_led = true;
  }

  /*Главный цикл программы выполняется пошагово*/
  if(Step != ' '){
     switch(Step){
        /* На первом шаге отправляем запрос серверу */
        case '1': {                                       
                    digitalWrite(50,HIGH); //Зажигаем светодиод при отправке запроса
                    int SendStatus = SendGETRequest();
                    // Определяем статус отправки запроса
                    if(SendStatus==1){                      
                      Step = '2';   //Запрос успешно отправлен - переходим к следующему шагу
                    }
                    else if(SendStatus==-1){                      
                      SIM900_Reload();  //При отправке возникла критическая ошибка - нужно перезагрузить модем
                    }          
                  }
                  break; 
                  
        /* На втором шаге ожидаем ответ сервера */
        case '2': switch(WaitForResponce()){
                     case 0: {
                             break; //еще анализируем ответ от сервера
                     }
                     case 1: {
                            //Ответ получен успешно
                             PrintlnToSerial(Responce); //Посылаем текст ответа на отладочный порт  
                             digitalWrite(50,LOW);      //Гасим светодиод при успешном ответе
                             String S = AnalizeResponce("COMMAND"); //По кодовому слову "вычленяем" полезные данные из ответа                                                        
                             if(S != "NOT_STR"){
                                //Если ответ валиден и в нём найдены полезнае данные (команда устройству от сервера) - 
                                // то выполняем полученные команду, если она отлична от предыдущей
                                PerformCommands(S);
                             }
                             Step = '3'; //Переходим на следующий шаг
                             break; 
                     }
                     case -1:{
                             Step = '1';    //Возникла ошибка, вернул -1. Возвращаемся на предыдущий шаг для отправки нового запроса                            
                     }
                  }
                  break;

        /* На третьем шаге производится обмен с датчиком температуры (для получения её актуального значения),
           выполняются полученные от сервера команды и формируется новый запрос */          
        case '3': {
                     AnalizeSystem();                                      
                     Step = '1'; //Возвращаемся на первый шаг
                  }
     }           
  }
  
  //Сбрасываем сторожевой таймер на каждом цикле программы
  wdt_reset();
  

/*-------------------------------------------------------------------------------------------------------------------*/

   }   
}

/*-------------------------------------------------------------------------------------------------------------------*/
non.intellegunt вне форума Ответить с цитированием
Старый 14.01.2019, 16:46   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Нет. На С++. Либа же на С++ написана...
p51x вне форума Ответить с цитированием
Старый 14.01.2019, 16:56   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от non.intellegunt Посмотреть сообщение
Я, как и любой другой человек, многое не знаю
В том числе и о существовании подписей на форумах.

...и о разнице между == и != похоже тоже.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 14.01.2019, 16:59   #4
non.intellegunt
Новичок
Джуниор
 
Регистрация: 14.01.2019
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
В том числе и о существовании подписей на форумах.

...и о разнице между == и != похоже тоже.
ХАХАХАХАХАХ, ЭТО ПОДПИСЬ? РОФЛ..Боже, испанский стыд, и не только испанский.

Последний раз редактировалось non.intellegunt; 14.01.2019 в 17:02.
non.intellegunt вне форума Ответить с цитированием
Старый 14.01.2019, 17:03   #5
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

это скетч, написан на С++...

о правилах форума автор, наверное, тоже еще не знает.

к чему данный вопрос об ЯП?
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 14.01.2019, 17:09   #6
non.intellegunt
Новичок
Джуниор
 
Регистрация: 14.01.2019
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Алексей_2012 Посмотреть сообщение
это скетч, написан на С++...

о правилах форума автор, наверное, тоже еще не знает.

к чему данный вопрос об ЯП?
Благодарю за ответ.
Да, с правилами и самим форумом не успел ознакомиться, и непривычно, что подпись что так низко к сообщению.
ЯП мне нужно знать для себя в большей степени.
non.intellegunt вне форума Ответить с цитированием
Старый 14.01.2019, 17:11   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от non.intellegunt Посмотреть сообщение
ХАХАХАХАХАХ, ЭТО ПОДПИСЬ? РОФЛ..Боже, испанский стыд, и не только испанский.
Ну эта подпись видимо в основном и предназначена для такого троллинга ) (эксплойт лени админа не меняющего стиль подписей)
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 14.01.2019, 17:39   #8
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,546
По умолчанию

Эта программа для микроконтроллера AVR. Если есть желание изучать С (++) для РС-совместимых компов, то образец мало подходящий, потому что в данной версии языка сильная зависимость от архитектуры самого МК. Я так думаю.
digitalis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц