Atmel Studio игнорирует пользовательскую Структуру и выдаёт ошибки. с Arduino IDE на Visual Micro

Тема в разделе "Arduino & Shields", создана пользователем releyshic, 21 авг 2016.

  1. releyshic

    releyshic Нерд

    Atmel Studio игнорирует пользовательскую Структуру и выдаёт ошибки.
    Открыл Скетч который прекрасно работает в Arduino IDE но при открытии в Visual Micro выдает несколько ошибок на тему, мол "не знаю такого типа"
    Самое интересное, что ошибки показывает в тех строках где вообще defin ы и прочее никак не относящееся ни структуре ни к функциям
    Объявление структуры находится до каких либо функций
    Помогите кто знает в чем дело

    Код (C++):
    _22.08.16_Time.ino:8:1: error: 'MyTime' does not name a type
    :MyTime Convert_TimeToMyTime(const Time &TIME)
    _22.08.16_Time.ino:48:25: error: 'MyTime' does not name a type
    :void WriteOnTablo(const MyTime &T)
    _22.08.16_Time.ino:48:33: error: ISO C++ forbids declaration of 'T' with no type [-fpermissive]
    :void WriteOnTablo(const MyTime &T)
    _22.08.16_Time.ino:231:1: error: qualifiers can only be specified for objects and functions
    _22.08.16_Time.ino:In function 'void loop()
    _22.08.16_Time.ino:643:24: error: invalid initialization of reference of type '
    const int&' from expression of type 'MyTime
    :WriteOnTablo(TIME_Timer)
    _22.08.16_Time.ino:48:6: error: in passing argument 1 of 'void WriteOnTablo(const int&)
    :void WriteOnTablo(const MyTime &T)
    _22.08.16_Time.ino:646:40: error: invalid initialization of reference of type '
    const int&' from expression of type 'MyTime
    :WriteOnTablo(Convert_TimeToMyTime(TIME))
    _22.08.16_Time.ino:48:6: error: in passing argument 1 of 'void WriteOnTablo(const int&)
    :void WriteOnTablo(const MyTime &T)
    Error compiling project sources
     
  2. Vetrinus

    Vetrinus Гик

    Так atmel studio, или visual studio с плагином visual micro?
    Нелишним было бы на кол взглянуть, на всякий случай
     
  3. releyshic

    releyshic Нерд

    atmel studio с плагином visual micro
     

    Вложения:

  4. Vetrinus

    Vetrinus Гик

    Эм.. а зачем, стесняюсь спросить?
    Arduino в нем программируется и без visual микро абсолютно спокойно
     
  5. releyshic

    releyshic Нерд

    абсолютно спокойно это через программатор и без отладки если это не программатор за 15 тыров?

    Это к вопросу напрямую не имеет отношения, наврятли дело в надстройке
     
  6. releyshic

    releyshic Нерд

    к тому же я не представляю как скетч Ардуины переделать в нормальную программу студии, особенно не знаю что с библиотеками делать и даже не знаю какие нужны
     
  7. Vetrinus

    Vetrinus Гик

    А зачем вам тогда все это? Есть хоть одна реальная причина, по который вы, не обладая знаниями, пытаетесь вместо простого и понятного инструмента - arduino ide, использовать инструмент для задач классом выше, с соответствующей сложностью вхождения, и отличным от Wiring языком программирования.
    На худой конец поставьте уже обычную визуал студию, поставьте ей в комплект visual micro и будет вам счастье, лично у меня работает.
     
  8. releyshic

    releyshic Нерд

    VisualStudio + VisualMicro ничем не отличается от AtmelStudio + VisualMicro
     
  9. Vetrinus

    Vetrinus Гик

    Ну естественно, потому что Atmel Studio - это Visual Studio с плагинами от Atmel Software Foundation. А вы туда пихаете еще один. Я вот не уверен, что они не конфликтуют. Уверен, скорее, что проблема где-то в этой области.
     
  10. sys

    sys Злобный Буратино Модератор

    Начать бы стоило с того, что ожидая более-менее полезный ответ на вопрос, надо подробней описывать исходные данные: на какой версии ОС как и какие версии ПО/плагинов устанавливались, создавали ли вы ардуино проект в студии и т.д. и т.п.? И вообще неплохо бы предварительно пробежаться по форуму и сайту самих visualmicro и atmel - они должны быть главными вашими источниками, коль вы ввязались в эту авантюру.
     
    Последнее редактирование: 21 авг 2016
  11. releyshic

    releyshic Нерд

    да всё там супер совместимо
    http://www.visualmicro.com/page/sysuserdevguide.aspx?doc=ru/Getting-started-which-IDE.html
    http://www.visualmicro.com/page/sysuserdevguide.aspx?doc=ru/How-The-Tools-Play-Together.html
    W7X64 AtmelStudio7 Visual Micro прям из среды устанавливал

    Blink же компилируется спокойно
    А здесь вот чтото не так, может всё же синтаксис както по другому проверяется?
     
  12. Alex19

    Alex19 Гуру

    Первое что бросается в глаза.
    Код (C++):
    const struct MyTime
    {
      uint8_t hour;
      uint8_t min;
      uint8_t sec;
      uint8_t date;
      uint8_t mon;
      uint16_t year;
      uint8_t dow;  
    };
    Нельзя объявлять тип и указывать ему квалификатор, о чем Вам и пишут
    Кроме этого есть и другие ошибки не объявлены функции. Ваш код у меня не компилируются, нет всех файлов, просто посмотрите пример (сделанный в Arduino IDE, но суть от этого не меняется).
    Код (C++):
    #include <stdio.h>

    typedef struct
    {
      uint8_t hour;
      uint8_t min;
      uint8_t sec;
      uint8_t date;
      uint8_t mon;
      uint16_t year;
      uint8_t dow;
    } MyTime;

    void Temp(MyTime* timeTemp);

    void Temp(MyTime* timeTemp)
    {
      Serial.println(timeTemp->year);
    }

    MyTime Temp2(MyTime timeTemp);

    MyTime Temp2(MyTime timeTemp)
    {
      timeTemp.year = 2017;
      Serial.println(timeTemp.year);
      return timeTemp;
    }

    void setup() {
      // put your setup code here, to run once:
      Serial.begin(115200);
    }

    void loop() {
      // put your main code here, to run repeatedly:
      MyTime myTime;
      myTime.year = 2016;

      Temp(&myTime);
      Temp2(myTime);

      delay(1000);
    }

     
     
  13. releyshic

    releyshic Нерд

    const я просто добавил от безнадёги мол вдруг прокатит, но и без него тоже самое почти

    Ты имеешь ввиду прототипов функций нет? я знаю Arduino IDE на это глаза закрывает
    А какой смысл писать Прототип если следом определяешь функцию ,или это так , для наглядности?
    Файлы могу дать

    Повторюсь: ЭТОТ код РАБОТАЕТ в Arduno IDE, только без этого const
     

    Вложения:

    • Libri.zip
      Размер файла:
      883 КБ
      Просмотров:
      64
  14. Alex19

    Alex19 Гуру

    Когда речь идет о void или встроенных типах, то да, можно не писать. Просто возьмите мой кодом и убери определение функции.

    Сейчас пробегусь, по коду, он не маленький, быстро ответа не будет;).
     
  15. sys

    sys Злобный Буратино Модератор

    Так бы сразу и писали :)

    И кстати как у вас обстоят дела с Generate prototypes в настройках проекта? ;)
     
    Последнее редактирование: 21 авг 2016
  16. Alex19

    Alex19 Гуру

    Код (C++):

    MyTime Convert_TimeToMyTime(const Time &TIME)
    {  
      MyTime T;
      T.hour = TIME.hour;
      T.min = TIME.min;
      T.sec = TIME.sec;
      T.date = TIME.date;
      T.mon = TIME.mon;
      T.year = TIME.year;
      T.dow = TIME.dow;
      return T;
    }
     
    :), можете пояснить эту функцию?
     
  17. releyshic

    releyshic Нерд

    Экономия памяти, объек Time великоват чтобы везде его пользовать, поэтому свой сделал MyTime
    В цикле работает считывание RTC через стандартный метод класса Time и надо с него уже брать данные оператино для MyTime. На внешнее табло (см делал на светодиодной ленте и сдвиговых регистрах) выдается через объект MyTime для экономии памяти опять же, ну в обще закручено всё )) Интрига есть ))))
    Так вроде как удобней )
     
  18. releyshic

    releyshic Нерд

    да както страшновато их трогать не зная что к чему
    Пока только Показывание памяти Включил
     
  19. Alex19

    Alex19 Гуру

    Вы хотите сказать, что передаете объект по ссылке?

    Еще раз внимательно посмотрите.

    Запутался.

    И что за процессор, используется а то у меня?
    Мега, разобрался, смутило упоминание в коде о ESP8266, __SAM3X8E__.
     
  20. releyshic

    releyshic Нерд

    Да, а почему бы и нет?
    Mega2560
    у меня не были постав "F(" в куче сериалов, и этот текст занимал кучу Динамической памяти
    Сейчас как видно хорошо всё (было 86% вместо 25%), но остаётся вопрос хватает ли её для Локальных переменных