Сань а как на основе твоего блока сдвига байт реализовать перестановку байт переменной Float для отправки по модбасу. А то бывает железяка не понимает порядок следования байт и показывает черти что. Понятное дело что в нормальных железяках есть програмная перестановка, но к сожалению не во всех да и в flprog такой настройки пока нет.
Запаковка/распаковка данных
-
- Капитан
- Сообщения: 861
- Зарегистрирован: 17 ноя 2015, 20:36
- Имя: Сергей
- Благодарил (а): 41 раз
- Поблагодарили: 9 раз
Запаковка/распаковка данных
- Alias
- Лейтенант
- Сообщения: 481
- Зарегистрирован: 27 ноя 2017, 13:15
- Откуда: Rus44
- Имя: Michael
- Контактная информация:
Запаковка/распаковка данных
Это Вы комментируете код выше или содержимое блока? Спасибо.
С кодом я контекстно интуитивно все понимаю, даже догадываюсь, что eprst << 8 смещает на 8 бит. Но вот где это в блоке - не пойму. И как в него добавить четыре input_х тоже ((
Отправлено спустя 14 минут 39 секунд:
Вот, накидал, примерно туда копаю?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Alias 29 июл 2018, 20:49, всего редактировалось 2 раза.
Запаковка/распаковка данных
про код, блок еще не смотрел, попозже гляну
в ютубе есть ролик от автора про пользовательские блоки и как там создать свой блок из кода
- Alias
- Лейтенант
- Сообщения: 481
- Зарегистрирован: 27 ноя 2017, 13:15
- Откуда: Rus44
- Имя: Michael
- Контактная информация:
Запаковка/распаковка данных
Я уже делал свои блоки. В данном случае не очень понятно, куда код прописывать и вживлять.
- Alias
- Лейтенант
- Сообщения: 481
- Зарегистрирован: 27 ноя 2017, 13:15
- Откуда: Rus44
- Имя: Michael
- Контактная информация:
Запаковка/распаковка данных
Наполовину получилось и блок распаковки работает. А с запаковкой не очень. Подозреваю, что не хватает пустячка. Прошу помочь в этом фрагменте:
eprst = input_01; // фаршируем
eprst = (eprst << 8) || input_02;
eprst = (eprst << 8) || input_03;
eprst = (eprst << 8) || input_04;
Отправлено спустя 2 минуты 35 секунд:
На стороне панели код можно заменить математикой типа
х1*1 + х2*256 + х3*65536 + х4*16777216. Впрочем, как и на Ардуино, это и так понятно, но хотелось бы кодом.
eprst = input_01; // фаршируем
eprst = (eprst << 8) || input_02;
eprst = (eprst << 8) || input_03;
eprst = (eprst << 8) || input_04;
Отправлено спустя 2 минуты 35 секунд:
На стороне панели код можно заменить математикой типа
х1*1 + х2*256 + х3*65536 + х4*16777216. Впрочем, как и на Ардуино, это и так понятно, но хотелось бы кодом.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Запаковка/распаковка данных
Вот альтернативный метод. Тоже быстрый.
Отправлено спустя 3 минуты 6 секунд:
Отправлено спустя 3 минуты 6 секунд:
В версии v2 поменять тип переменной с long на флоат в обоих блоках. Подать в один, разобрать на байты, запихнуть во второй с необходимой перестановкой. Отправить, чего получилось.fsergei70 писал(а): 29 июл 2018, 19:07Сань а как на основе твоего блока сдвига байт реализовать перестановку байт переменной Float для отправки по модбасу. А то бывает железяка не понимает порядок следования байт и показывает черти что. Понятное дело что в нормальных железяках есть програмная перестановка, но к сожалению не во всех да и в flprog такой настройки пока нет.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость