Страница 133 из 360 ПерваяПервая ... 3383123131132133134135143183233 ... ПоследняяПоследняя
Показано с 1,321 по 1,330 из 3599

Тема: Фичи и баги OWEN Logic

  1. #1321

    По умолчанию

    Цитата Сообщение от anthrwpos Посмотреть сообщение
    upd: Ура, сами макросы работают адекватно. Но появился новый бажок - не отслеживается состояние флоат переменных.Вложение 32860
    Проект тот-же, на картинке внутренности макроса VLV
    А разве раньше было по другому?

    Ладно, не буду дожидаться ответа. Видимо не все знакомы с watch list-ом переменнных. На скрине я вижу, что Вы добавили в список несуществующие переменные для прибора (я их называю виртаульными). В просмотрщике мы видим реальные переменные. Допустимые на запись можно редактировать, в противном случае только на чтение.
    Последний раз редактировалось wal79; 28.08.2017 в 14:37.
    программер

  2. #1322

    По умолчанию

    Цитата Сообщение от wal79 Посмотреть сообщение
    А разве раньше было по другому?

    Ладно, не буду дожидаться ответа. Видимо не все знакомы с watch list-ом переменнных. На скрине я вижу, что Вы добавили в список несуществующие переменные для прибора (я их называю виртаульными). В просмотрщике мы видим реальные переменные. Допустимые на запись можно редактировать, в противном случае только на чтение.
    Но для того, чтобы было более понятно, подсказки вставлю поясняющие.
    программер

  3. #1323
    Пользователь Аватар для anthrwpos
    Регистрация
    13.02.2017
    Адрес
    Ленобл
    Сообщений
    188

    По умолчанию

    Цитата Сообщение от wal79 Посмотреть сообщение
    Видимо не все знакомы с watch list-ом переменнных. На скрине я вижу, что Вы добавили в список несуществующие переменные для прибора (я их называю виртаульными). В просмотрщике мы видим реальные переменные.
    Хм, совсем непонятно, о чем идет речь.
    Вроде бы по всем свойствам переменная OUT+, состояние которой показывается в просмотрщике эквивалентна переменной current, которая всегда отображается как 0. Не могу придумать между ними разницы, по которой вторая могла бы быть виртуальной.
    - ά ν θ ρ ω π ο ς -
    Мои универсальные макросы https://github.com/anthrwpos1/macros

  4. #1324

    По умолчанию

    Цитата Сообщение от anthrwpos Посмотреть сообщение
    Хм, совсем непонятно, о чем идет речь.
    Вроде бы по всем свойствам переменная OUT+, состояние которой показывается в просмотрщике эквивалентна переменной current, которая всегда отображается как 0. Не могу придумать между ними разницы, по которой вторая могла бы быть виртуальной.
    Почему Вы ищете между ними разницу. Они обе виртуальные, они играют роль связи и не более того. Потому что, они не энергонезависимые, на них нет ссылки из визуализации или откуда то еще. Они нужны только лишь для связи внутри макроса и все. Поэтому компилятор в реальности эти переменные не создает для прибора. Поэтом то Вы и видите всегда 0 в просмотрщике. Но по Вашему недоумению понимаю, что нужно еще предпринять какие-то разъяснительные шаги в лоджике.
    программер

  5. #1325

    По умолчанию

    Цитата Сообщение от wal79 Посмотреть сообщение
    Если внимательно прочитаете, то я сказал inline функция.
    Можете ещё какими-нибудь словами мысль выразить?

    Термин "inline функция", полагаю, подразумевается из C/C++. Но совершенно непонятно почему вы напираете на слово inline.
    Дело в том, что в этих языках наличие или отсутствие модификатора inline не влияет на результат программы.

    Иными словами, inline функция и точно такая же не-inline будут работать совершенно одинаково, а сам признак inline это лишь подсказка компилятору, влияющая на скорость работы программы, но не на результат.

    Цитата Сообщение от wal79 Посмотреть сообщение
    Компилятор встречая ее каждый раз встраивает тело функции в код.
    Вообще говоря, подставляет ли компилятор код макроса каждый раз или компилирует макрос единожды -- не так важно для пользователей ОЛ.
    Вот вы говорите, что компилятор встраивает тело в код, но это совершенно ничего не даёт, т.к. сам факт встраивания никак не влияет на результат работы результирующей схемы.
    Можно сделать встраивание одним образом, а можно и другим.

    В классическом (C, LISP) понимании, "макрос" существенно отличается от "функции" тем, что его аргументы вычисляются после подстановки самого макроса.
    Например, макрос в C после подстановки внезапно может сослаться на объявленную вне макроса переменную (просто по имени), а функция (в том числе inline) так не может.
    Или так:
    Код:
    #define MUL(x, y) x*y
    
    int inline mul(int x, int y) {
      return x * y;
    }
    
    ...
    MUL(2+2, 2); // вернёт 6, т.к. 2+2*2 (сначала подстановка макроса, а потом вычисление)
    mul(2+2, 2); // вернёт 8, т.к. mul(4, 2) == 4*2 == 8 (аргументы функции вычисляются до начала её работы)
    Поэтому интересна семантика макросов, а не детали реализации компилятора.
    Например, сейчас нигде толком не описано как происходят вычисления ОЛ схем. От входов к выходам? От выходов ко входам? Макрос вычисляется "весь целиком" или только те выходы, которые реально понадобились? Выходы вычисляются "одновременно" или только в те моменты как понадобились?
    Последний раз редактировалось Владимир Ситников; 29.08.2017 в 11:13.

  6. #1326

    По умолчанию

    Цитата Сообщение от anthrwpos Посмотреть сообщение
    Вообще по общепринятой терминологии, макрос - это идентификатор, который транслируется в некий неизменный участок кода.
    Сколько раз его транслятор встретит - столько раз вместо него вставит этот участок.
    Функция - это идентификатор, который компилируется в адрес вызова, по которому начинается сама функция.
    Расскажите, пожалуйста, в какой литературе используется такая терминология.
    В C, C++, LISP, Scala понятие макроса и функции кардинально отличаются от того, что вы тут пишете.

    Прежде чем жонглировать понятиями макроса-функции разберитесь с самими понятиями: https://ru.wikibooks.org/wiki/%D0%9B...BE%D1%81%D1%8B, http://alenacpp.blogspot.ru/2005/01/blog-post_28.html и т.д.

  7. #1327

    По умолчанию

    Цитата Сообщение от wal79 Посмотреть сообщение
    Вы не правы. Изменив количество входов Вы меняете сигнатуру функции. Здесь должны быть вмешательство со стороны пользователя.
    2 бага (1.9.141.11543):
    Баг №1

    1. Создаём макрос (2 входа, 1 выход)
    2. Сохраняем проект. Исходное состояние: проект пустой, но наверху есть вкладка редактора макроса.
    3. Переключаемся на редактирование макроса.
    4. Нажимаем "добавить выход"
    5. Переключаемся на основную схему. Важно: до переключения ничего не делать. Только переключиться
    6. Сохраняем проект.
    7. Добавляем макрос на полотно.

    Результат: макрос добавился с одним выходом
    Ожидается: должно быть 2 выхода, т.к. на шаге 4 был добавлен.

    Вообще говоря, странно, что при изменении количества входов-выходов макроса требуется сохранять проект.


    Баг №2
    0. Берём схему, использующую макрос.
    1. Добавляем выход к макросу
    2. Удаляем выход у макроса
    3. Сохраняем проект.

    Результат: ошибка "выделенные элементы были модифицированы, требуется их заменить".
    По факту же, ничего не изменилось, значит и ошибка лишняя.


    Цитата Сообщение от wal79 Посмотреть сообщение
    Вы не правы. Изменив количество входов Вы меняете сигнатуру функции. Здесь должны быть вмешательство со стороны пользователя.
    Если под вмешательством подразумевается "посмотреть и одобрить", то в этом какая-то логика есть.
    А вот переподключать вручную -- немного странно.

    Если вы говорите про "сигнатуры функций", то напомню как в C / ST работают подобные действия. Там функцию можно вообще полностью удалить и написать заново. Если сигнатура подойдёт, то всё заработает само собой. Если же сигнатура не совпадёт (например, добавился 1 аргумент), то достаточно будет в вызывающем месте добавить этот самый аргумент и всего делов. Иными словами, изменение сигнатур не требует ходить, удалять и переписывать с нуля все места, где был вызов функции.

  8. #1328

    По умолчанию

    Цитата Сообщение от wal79 Посмотреть сообщение
    Мда... Чудеса. Видимо есть какой-то сценарий, когда макрос не отметился как критически измененный. Не могли бы Вы воспроизвести и описать последовательность действий прямо по-шагово.
    Проект одномоментно был сильно перекроен возникающие ошибки игнорировались, проект на симуляцию не запускался и, по-видимому, несколько ошибок наложившись друг на друга дали такой эффект.

    Сейчас проявилась новая проблема, хотя ранее я ее не замечал ошибки со стеком. Сегодня загружаю V3.2 - "Внутренняя ошибка код 2 обращение к стеку". Пробую V3.1 - "Стек пуст" В версии V3 ошибок нет.
    Стал удалять макросы по одному, затем нажимая отмена. Удалил макросы ErrCatch ошибка исчезла. Начал отмену ошибка не вернулась.

    Заметил, что если подсвеченный красным макрос, который был изменен скопировать, а затем вставить, вставляется копия макроса неподсвеченная красным. Может быть сдесь прошел глючок?
    ЗЫ: последнее обновление установил.
    Изображения Изображения
    • Тип файла: png Er1.png (349.4 Кб, Просмотров: 4)
    • Тип файла: png Er2.png (379.6 Кб, Просмотров: 5)
    Вложения Вложения
    Последний раз редактировалось RomX; 29.08.2017 в 12:11.

  9. #1329

    По умолчанию

    Вы все конечно красиво расписали. На деле не совсем так. Нет того "умного" принятия решения о модификации макроса, о котором Вы говорите. Если Вы говорите, что пользователям нет нужды знать как компилятор обрабатывает тот или иной фрагмент схемы, то тем более зачем им тогда знать как работает анализ схемы.

    С багом 1 соглашусь. При сохранении проекта изменения в макросе должны были примениться.
    Про баг 2 уже сказал, что нет "умного" принятия решения. Вы описываете то, что хотели бы видеть. Таких хотелок Вы не представляете сколько у меня есть по лоджику. У меня сжатые сроки и абсолютное отсутствие человекоресурсов. Поэтому что есть, то есть.
    программер

  10. #1330

    По умолчанию

    Цитата Сообщение от RomX Посмотреть сообщение
    Проект одномоментно был сильно перекроен возникающие ошибки игнорировались, проект на симуляцию не запускался и, по-видимому, несколько ошибок наложившись друг на друга дали такой эффект.

    Сейчас проявилась новая проблема, хотя ранее я ее не замечал ошибки со стеком. Сегодня загружаю V3.2 - "Внутренняя ошибка код 2 обращение к стеку". Пробую V3.1 - "Стек пуст" В версии V3 ошибок нет.
    Стал удалять макросы по одному, затем нажимая отмена. Удалил макросы ErrCatch ошибка исчезла. Начал отмену ошибка не вернулась.

    Заметил, что если подсвеченный красным макрос, который был изменен скопировать, а затем вставить, вставляется копия макроса неподсвеченная красным. Может быть сдесь прошел глючок?
    ЗЫ: последнее обновление установил.
    Вполне может быть источником ошибок (я про выделенное). Учту при следующем разборе багов.
    программер

Страница 133 из 360 ПерваяПервая ... 3383123131132133134135143183233 ... ПоследняяПоследняя

Похожие темы

  1. OWEN Logic v1.7
    от Евгений Сергеевич в разделе Среда программирования OWEN Logic
    Ответов: 404
    Последнее сообщение: 25.08.2020, 15:17
  2. OWEN Logic v1.7
    от Евгений Сергеевич в разделе Программируемые реле
    Ответов: 401
    Последнее сообщение: 28.07.2016, 19:46
  3. OWEN Logic 1.2.0.14b
    от Ельцов Андрей в разделе Программируемые реле
    Ответов: 40
    Последнее сообщение: 21.02.2011, 14:16
  4. OWEN Logic 1.1.0.11b
    от Ельцов Андрей в разделе Программируемые реле
    Ответов: 58
    Последнее сообщение: 12.10.2010, 21:55

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •