Тестирование
это фишка новая ,мне нравится ,чтоб переменные не создавать ,
Ребята, ну не успеваю я всё Да и хочу пока всё таки стабильную версию сделать, прежде чем выкатывать сильно бэту с номером 5 (там изменения планируются просто грандиозные, включая обновление версии языка программирования на котором написана программа).
Sancho писал(а): ↑06.01.2019{, 11:49}Нашёл существенную ошибку в блоке приёма с панели Nextion числовых данных:
При отключении связи с панелью переменная сбрасывается в 0, при соединении - восстанавливается.
Ошибка здесь:
if(_nextionTempLissen.code = 'q') {_nextionGetValue1_outputValue = _nextionTempLissen.number;};
Необходимо:
if(_nextionTempLissen.code == 'q') {_nextionGetValue1_outputValue = _nextionTempLissen.number;};
Ошибки на местеsupport писал(а): ↑05.01.2019{, 15:48}Sancho писал(а): ↑
05.01.2019{, 12:04}
support писал(а): ↑
05.01.2019{, 10:55}
Немного попозже, сейчас со временем туго. На днях выложу новую версию, а потом буду занят с головой (по основной работе припахали((( )
Временное решение:
Найти строку в IDE, внизу программы,
temp.number = (cmd[4] << 24) | (cmd[3] << 16) | (cmd[2] << 8) | (cmd[1]);
Заменить на
temp.number = uint32_t(cmd[4]) << 24 | uint32_t(cmd[3]) << 16 | uint32_t(cmd[2]) << 8 | uint32_t(cmd[1]);
Отправлено спустя 1 минуту 11 секунд:
Сергей, может успеете в новую версию вставить?
Уже нет, я уже собрал релиз, сегодня вечером буду заливать на сервер. Через пару недель сделаю. Единственно чем смогу помочь, после 9-го сделаю патчик (именно по решению этой проблеммы) и пришлю Вам. Мне просто до 9-го по основной работе необходимо много сделать (а то уволят к черту)))) )
То же не успел)))) я поправил только очень критичные ошибки (и то пришлось по ночам делать, днём на работе не получалось). Всё менее критичное позже..... Сейчас вон даже новость написать некогда, пашем в поте лица на плановом обслуживании турбины.SSSergeich писал(а): ↑14.01.2019{, 09:31}Sancho писал(а): ↑06.01.2019{, 11:49}Нашёл существенную ошибку в блоке приёма с панели Nextion числовых данных:
При отключении связи с панелью переменная сбрасывается в 0, при соединении - восстанавливается.
Ошибка здесь:
if(_nextionTempLissen.code = 'q') {_nextionGetValue1_outputValue = _nextionTempLissen.number;};
Необходимо:
if(_nextionTempLissen.code == 'q') {_nextionGetValue1_outputValue = _nextionTempLissen.number;};Ошибки на местеsupport писал(а): ↑05.01.2019{, 15:48}Sancho писал(а): ↑
05.01.2019{, 12:04}
support писал(а): ↑
05.01.2019{, 10:55}
Немного попозже, сейчас со временем туго. На днях выложу новую версию, а потом буду занят с головой (по основной работе припахали((( )
Временное решение:
Найти строку в IDE, внизу программы,
temp.number = (cmd[4] << 24) | (cmd[3] << 16) | (cmd[2] << 8) | (cmd[1]);
Заменить на
temp.number = uint32_t(cmd[4]) << 24 | uint32_t(cmd[3]) << 16 | uint32_t(cmd[2]) << 8 | uint32_t(cmd[1]);
Отправлено спустя 1 минуту 11 секунд:
Сергей, может успеете в новую версию вставить?
Уже нет, я уже собрал релиз, сегодня вечером буду заливать на сервер. Через пару недель сделаю. Единственно чем смогу помочь, после 9-го сделаю патчик (именно по решению этой проблеммы) и пришлю Вам. Мне просто до 9-го по основной работе необходимо много сделать (а то уволят к черту)))) )
Код: Выделить всё
_gtv2=0; // сбрасываем переменную "Новые данные"
if(_nextionGetValue2_isNU){_tempVariable_String = "get page0.va0.val";
_nextionTempLissen = nextionSendCommand(_tempVariable_String.c_str(), 0);
if(_nextionTempLissen.code == 'q') {_nextionGetValue2_outputValue = _nextionTempLissen.number;
_gtv2=1;}; // взводим переменную
_nextionGetValue2_isNU = 0;}
В перечне базовых элементов есть "клемма". Очень прикольный блок: создаете в одной плате переменную и теперь можете подключать к ней блоки в других платах.
Провел эксперимент: Удалил из существующего проекта переменную и заменил ее на клемму. Разница в размере скетча = 0, а разница в используемой переменными памяти исчисляется единицами байт. Не такой уж большой выигрыш в памяти. Может надо проект переписывать полностью или я не так что-то делаю, но факт остается фактом. Пошел дальше. При замене в проекте 3-х переменных типа int и 2 типа boolean на клеммы разница в памяти под переменные = 8 байт., а размер скетча остался неизменным.ussrtk писал(а): ↑14.01.2019{, 12:00}В перечне базовых элементов есть "клемма". Очень прикольный блок: создаете в одной плате переменную и теперь можете подключать к ней блоки в других платах.
Ранее вы подключали саму переменную из другой платы - но тогда компилятор создавал каждый раз новую глобальную переменную и тратил память. А при использовании клемм память расходуется экономнее.
Когда у вас связей между платами немного или вы все делаете в одной плате - это вам не нужно. А в сложных проектах очень и очень кстати.
Можно на примере? Во вложении был пример. Как там это делается? Буду рад учится. Спасибо.
Я тоже экспериментировал над оптимизацией, загоняя повторяющиеся куски в пользовательские блоки, после того, как сам Автор отметил, что пользовательские блоки вызываются, как функция, что позволяет экономить память. Видимо, неверно понял.
support писал(а): ↑16.12.2018{, 19:18}Если использовать пользовательские блоки на FBD или LAD то это именно так и работает. То есть код самого блока вынесен в функцию (при многократном его использовании код не дублируется), а в месте его применения просто вызывается эта функция. Блоки на С немного по другому устроены, но там то же можно подобный функционал написать. Те кто их пишет - поймут какRedSky писал(а): ↑16.12.2018{, 19:12}Внесу предложение в плане развития возможностей программы. Как насчёт создать блок пользователя-функцию. Смысл в том чтобы использовать один и тот же код в разных частях проекта. К примеру расчёт температуры от нескольких терморезисторов с разных аналоговых входов. Сейчас придётся использовать одинаковые блоки на каждый датчик (значительный расход ресурсов для одинаковых действий) или создавать свой блок с функцией на нужное количество датчиков.
Alias, Речь о коде на С++support писал(а):Блоки на С немного по другому устроены, но там то же можно подобный функционал написать.
Так клеммы и предназначены для замены переменных (где это возможно), и облегчения коммутации между платами.
Это касается блоков FBD и LAD
Этот выигрыш будет существенным, если переменных ну очень много, у меня был проект, где памяти для переменных не хватало около 10 байт(тогда еще не умел оптимизировать код), не полезло в Уно, пришлось купить Леонардо, там памяти для переменных больше.
Счастливого пути!!!