Страница 23 из 23

Тестирование версии 7.х

Добавлено: 23 ноя 2020, 20:15
SSSergeich
av писал(а): 23 ноя 2020, 19:28
SSSergeich писал(а): 23 ноя 2020, 18:20 У себя я эту проблему решаю так - открываю любой блок для редактирования и закрываю, после этого скроллинг работает нормально. Win10-64, FlProg - портабл.
А вы пробовали не открывать блок ? Провел несколько экспериментов .Нужно просто щелкнуть мышью на окне программы в любом месте и вот скроллинг работает нормально. Такое ощущение что при открытии проекта окно программы становится не активно под курсором в Windows 10. И стоить левой кнопкой мыши его активировать как скроллинг начинает работать корректно.
Пробовал - не помогало. Сейчас, тьфу-тьфу-тьфу, пару месяцев про эту проблему не вспоминал.
Мышь и клава беспроводные defender.

Тестирование версии 7.х

Добавлено: 23 ноя 2020, 20:16
Phazz
av писал(а): 23 ноя 2020, 19:28 Нужно просто щелкнуть мышью на окне программы в любом месте
Не помогает
vovka1973 писал(а): 23 ноя 2020, 19:38 стоит еще один проект открыть то пока не сохранишь настройки хоть защёлкайся мышью
Работает

Тестирование версии 7.х

Добавлено: 23 ноя 2020, 21:05
Ingwar
av писал(а): 23 ноя 2020, 20:31 Неужели в релизах винды дело.
походу да...
Причем открыл проект, крутанул колесиком несколько раз, спустя секунды 3 начинается неспешный путь вниз/вверх с задержками на перемещение те же 3 сек. И так до тех пор, пока все сделанные скролы не обработает. Если во время "путешествия" пытаться сделать какое либо действие, оно произойдет только после обработки скролов. Как будто для колесика отдельный стек с delay :smile171:

Тестирование версии 7.х

Добавлено: 23 ноя 2020, 23:56
aidar_i
Раньше у меня были такие проблемы, сейчас пропало, пока не замечал.

Тестирование версии 7.х

Добавлено: 25 ноя 2020, 09:53
starmos
В версии 6.3.1, в блоке опроса датчиков DS18B20 нет контроля правильности полученной информации. Не проверяется контрольная сумма. Пришлось "костыль" делать. Если можно, то в новой версии исправить бы?

Тестирование версии 7.х

Добавлено: 25 ноя 2020, 12:42
support
starmos писал(а): 25 ноя 2020, 09:53 В версии 6.3.1, в блоке опроса датчиков DS18B20 нет контроля правильности полученной информации. Не проверяется контрольная сумма. Пришлось "костыль" делать. Если можно, то в новой версии исправить бы?
Покажите пожалуйста реализацию костыля. А то я пока разобраться не могу. Я понимаю что надо вычитать из датчика СRС из 9-го байта, но вот как рассчитать для сравнения СRС из предыдущих 8 - пока не могу разобраться. Так в у далласа какой то свой алгоритм.

Тестирование версии 7.х

Добавлено: 25 ноя 2020, 13:02
starmos
Для вычисления контрольной суммы я использую функцию crc8 из той же библиотеки OneWire, которая используется для опроса датчиков, ап потом просто сравниваю её с последним байтом. Это как раз просто. Неудобно то, как библиотечный блок опроса работает с адресами датчиков. Я под этот механизм настроил проект, сделал возможность смены адресов и сканирования и тут выяснилось про контрольную сумму, когда полезли странные значения температур периодически. "Костыль" заключается в том, что я сделал пользовательский блок, в котором содержится та же функция опроса, но с проверкой контрольной суммы. Поскольку имя этой функции совпадает со стандартным, то с ней работают библиотечные блоки опроса, но ругается компилятор Arduino IDE, так как функций стало две. Я ненужную закрываю комментариями и все. Такое решение "для бедных". Будет время придумаю что-нибудь покрасивее может. Ну или автор поправит блок в новой версии.

Отправлено спустя 5 минут 22 секунды:
Это исходная, стандартная, функция:
float _readDS18_ow32(byte addr[8], byte type_s)
{ byte data[12];
byte i;
_ow32.reset();
_ow32.select(addr);
_ow32.write(0xBE);
for ( i = 0; i < 9; i++) {
data = _ow32.read();}
_ow32.reset();
_ow32.select(addr);
_ow32.write(0x44, 1);
return _convertDS18x2xData(type_s, data);}

А эту я добавил:
float _readDS18_ow32(byte addr[8], byte type_s)
{
byte data[12];
byte i;
_ow32.reset();
_ow32.select(addr);
_ow32.write(0xBE);
for ( i = 0; i < 9; i++) data = _ow32.read();
if (_ow32.crc8(data, 8) != data[8])
{
data[0] = 0x90;
data[1] = 0xFC;
}

_ow32.reset();
_ow32.select(addr);
_ow32.write(0x44, 1);
return _convertDS18x2xData(type_s, data);
}

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

Тестирование версии 7.х

Добавлено: 25 ноя 2020, 15:44
support
Большое спасибо. к следующей версии интегрирую.

Отправлено спустя 2 часа 26 минут 36 секунд:
starmos писал(а): 25 ноя 2020, 13:02 Для вычисления контрольной суммы я использую функцию crc8 из той же библиотеки OneWire, которая используется для опроса датчиков, ап потом просто сравниваю её с последним байтом. Это как раз просто. Неудобно то, как библиотечный блок опроса работает с адресами датчиков. Я под этот механизм настроил проект, сделал возможность смены адресов и сканирования и тут выяснилось про контрольную сумму, когда полезли странные значения температур периодически. "Костыль" заключается в том, что я сделал пользовательский блок, в котором содержится та же функция опроса, но с проверкой контрольной суммы. Поскольку имя этой функции совпадает со стандартным, то с ней работают библиотечные блоки опроса, но ругается компилятор Arduino IDE, так как функций стало две. Я ненужную закрываю комментариями и все. Такое решение "для бедных". Будет время придумаю что-нибудь покрасивее может. Ну или автор поправит блок в новой версии.

Отправлено спустя 5 минут 22 секунды:
Это исходная, стандартная, функция:
float _readDS18_ow32(byte addr[8], byte type_s)
{ byte data[12];
byte i;
_ow32.reset();
_ow32.select(addr);
_ow32.write(0xBE);
for ( i = 0; i < 9; i++) {
data = _ow32.read();}
_ow32.reset();
_ow32.select(addr);
_ow32.write(0x44, 1);
return _convertDS18x2xData(type_s, data);}

А эту я добавил:
float _readDS18_ow32(byte addr[8], byte type_s)
{
byte data[12];
byte i;
_ow32.reset();
_ow32.select(addr);
_ow32.write(0xBE);
for ( i = 0; i < 9; i++) data = _ow32.read();
if (_ow32.crc8(data, 8) != data[8])
{
data[0] = 0x90;
data[1] = 0xFC;
}

_ow32.reset();
_ow32.select(addr);
_ow32.write(0x44, 1);
return _convertDS18x2xData(type_s, data);
}

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


Сделал

Тестирование версии 7.х

Добавлено: 25 ноя 2020, 18:10
alikshk
Здравствуйте,добавил в проект MCP23017,и с ним не работает.

Тестирование версии 7.х

Добавлено: 25 ноя 2020, 18:15
Dryundel
support писал(а): 25 ноя 2020, 15:44 Большое спасибо. к следующей версии интегрирую.
Есть еще несколько пожеланий по поводу штатных блоков.
.
Каких функций, на мой взгляд, не хватает в штатных блоках

Основной блок меню:
- нет выхода , boolean открытого группового пункта меню, такого же как AMM для главного меню.
Т.е. когда вошел в групповой пункт меню, определить что в нем находишься невозможно.
Можно конечно ориентироваться на имя родительского меню для пункта из этого группового,
но это не совсем правильно, я считаю

Значение пункта меню:
- Нет выхода "Название пункта меню". При наличии такого выхода не приходилось бы дублировать
это название на входе блоков дисплея.

Счетчик:
- В действиях не хватает пунктов:
При достижении верхней границы - начать счет вниз
При достижении нижней границы - начать счет вверх
Такие пункты обеспечили бы генерацию "Пилы" и были бы очень полезны например для организации световых эффектов.

Добавить "Char" к строке:
- Логично было бы добавить параметр "В начале","В конце".

Тестирование версии 7.х

Добавлено: 25 ноя 2020, 18:26
Di123
в блоке лимит тоже нельзя ввести число не выделив ноль перед этим

Тестирование версии 7.х

Добавлено: 25 ноя 2020, 18:32
pasha71
Не плохо бы новый раздел для 7.2, а то тут уже наваяли многовато)))

Тестирование версии 7.х

Добавлено: 25 ноя 2020, 18:37
Di123
в генераторе тоже 0 мешает

Тестирование версии 7.х

Добавлено: 25 ноя 2020, 19:14
support
Тема переехала сюда.