Перевод string в int

Тема в разделе "Arduino & Shields", создана пользователем Иван С, 1 июн 2012.

  1. ИгорьК

    ИгорьК Гуру

    :) удивительные места бывают в Интернете.
     
  2. Oldindianamen

    Oldindianamen Нерд

    Позвольте продолжить тему, что бы не плодить подобные.
    Максимально простенькие часы:
    Код (C++):
    #define INTERVAL 1000
    int h = 0;
    int m = 0;
    int s = 0;
    long lastTime = 0;
    void loop(void){
        while(millis() - lastTime > INTERVAL) {
        lastTime=millis();
        s++;
        if (s >= 60){ s = 0;
                       m++;}
        if (m >= 60) {m = 0;
                       h++;}
        if (h >= 24) {h = 0;}
         }
       DisplayTime(); // функция для вывода на дисплей
    }
    Настройка планируется через веб-страницу, данные с которой обрабатываются функцией handleForm1()
    Код (C++):
    void handleForm1() {
    String chasSet = server.arg("chasset");
    String minSet = server.arg("minset");
    int h = chasSet.toInt();
    int m = minSet.toInt();
    Serial.print(h);
    Serial.print(m);
    server.send(200, "text/html", s); //Send web page
    }
    Как "превратить" String chasSet и String minSet в int h и int m я разобрался.
    Подскажите, как вытащить эти данные из handleForm1() ?
     
  3. ostrov

    ostrov Гуру

    Сделайте эти переменные глобальными, как самый простой вариант. Иначе придется изучать указатели, что больно. Есть и другие способы, но первый самое то.
     
  4. Asper Daffy

    Asper Daffy Иксперд

    Вот так и плодим :(
     
    DetSimen нравится это.
  5. parovoZZ

    parovoZZ Гуру

    какая разница, сколько адресов в ОЗУ использует программа? Без разницы, если программа работает и оверстека не происходит.
     
  6. Asper Daffy

    Asper Daffy Иксперд

    Я чуток переформулирую, чтобы понятнее было: какая разница, говнокодище там или нет? Без разницы, если программа работает и оверстека не происходит.
     
    ИгорьК и DetSimen нравится это.
  7. parovoZZ

    parovoZZ Гуру

    очень сильно влияет на время исполнения программы, если есть такие требования. Но современная тенденция такая - взять проц побыстрее, налить говнокодище. Пофиг, что подтупливает, зато быстренько состряпано.
     
  8. Unixon

    Unixon Оракул Модератор

    Код (C++):

    void handleForm1(int& h, int& m)
    {
      String chasSet = server.arg("chasset");
      String minSet = server.arg("minset");
      h = chasSet.toInt();
      m = minSet.toInt();
      Serial.print(h);
      Serial.print(m);
      server.send(200, "text/html", s); //Send web page
    }

    void foo()
    {
      int h,m;
      handleForm1(h,m);
    }
     
     
  9. Oldindianamen

    Oldindianamen Нерд

    вот такой гуанокод получился
    Код (C++):

    #define INTERVAL_SECOND 1000
    int s = 0;
    long lastTime = 0;
    String chasSet = server.arg("chasset");
    String minSet = server.arg("minset");

    void handleForm1() {
    chasSet = server.arg("chasset");
    minSet = server.arg("minset");
    }

    void loop(void){
        int h = chasSet.toInt();
        int m = minSet.toInt();
        while(millis() - lastTime > INTERVAL_SECOND) {
        lastTime=millis();
        s++;
        if (s >= 60){ s = 0;
                       m++;}
        if (m >= 60) {m = 0;
                       h++;}
        if (h >= 24) {h = 0;}
         }
     
    }
    В таком виде изменить h и m со странице удается, но время на дисплее не меняется (каждый новый цикл h и m принимают первоначальное значение).
    Если int h = chasSet.toInt(); int m = minSet.toInt(); вынести из loop, то h и m принимают значения, заданное при загрузке, часы идут, но изменить h и m со страницы не выходит.
    Идеи закончились. Куда дальше копать?
     
    Последнее редактирование: 12 сен 2019
  10. Asper Daffy

    Asper Daffy Иксперд

    Вот сюда. Читать и смотреть на свои h и m. Если не прояснилось, ещё раз перечитывать и снова смотреть. Пока не прояснится.
     
  11. Oldindianamen

    Oldindianamen Нерд

    Оказывается я туповат для этого, но свой вопрос решил.
    Использовал библиотеку Ticker.h
     
  12. Asper Daffy

    Asper Daffy Иксперд

    Очень жаль
     
    DetSimen нравится это.