SetPf
romanetz
Ну чё б и нет)
ВПК ПОТОК
Ну чё б и нет)
Я так понимаю для работы с массивами могу использовать просто их имена без указателей, мне нужно передать в функцию массив, чтобы сравнить его какая пришла команда.
romanetz
Имя массива и есть укзатель на его нулевой элемент
romanetz
В некоторых хитросделанных случаях можно его передвинуть, например, чтобы массив с другого значения индексироватт
ВПК ПОТОК
Вот только вопрос обращаться к массиву на прямую, или передавать его во внутрь функции?
SetPf
romanetz
Передавая массив по указателю, по сути, и обращаешься к нему напрямую
SetPf
ВПК ПОТОК
Очень красиво, и для не опытного просто жутко
SetPf
Очень красиво, и для не опытного просто жутко
У вас объявляется тип (ну не бейте) - союз com_command, который можно использовать как массив из 4х байт и как 32битное слово.
Дальше определяются 2 таких союза, один через заполнение массива, другой просто 32битным числом (там 16 битное вписано)
Потом они просто по значению передаются в функцию.
SetPf
Обычно вся возьня с протоколами делается через союзы. Это попросту удобно и читаемо.
SetPf
Если не слышали про союзы - советую изучить, это простая и короткая тема, в таких случаях очень полезна.
romanetz
romanetz
(union)
SetPf
Есть же приведение типов через указатели, нафиг там союз
Что бы удобнее этой штукой перекидываться было.
Можно и так. Я просто хотел показать что массив из 4х байт можно использовать как 32б переменную.
Это все от задач же зависит.
Кидаться указателем на 32битку может выйти дороже чем целиком по значению.
romanetz
Кстати, ещё есть метод, хеши высчитать и сравнивать
romanetz
Чем побайтно
romanetz
Для длинных блоков будет быстрее
romanetz
+
SetPf
Можно еще древо графов построить, если данные с которыми будут сравнивать не изменяются.
Dr Zlo
более того, можно общаться с отдельными битами
Dr Zlo
typedef struct{
uint8_t shutdown:1;
uint8_t thermal:1;
uint8_t reserved:2;
uint8_t mode:2;
uint8_t amp_right_en:1;
uint8_t amp_left_en:1;
}__attribute__((packed)) TPA6130A2_Control_Reg;
Dr Zlo
TPA6130A2_Control_Reg control_data = {};
control_data.amp_left_en = 1;
control_data.amp_right_en = 1;
control_data.mode = MODE_STEREO;
control_data.shutdown = 0;
HAL_I2C_Mem_Write(i2c, TPA6130A2_ADDR, CONTROL_REG, I2C_MEMADD_SIZE_8BIT, (uint8_t*) &control_data, 1, HAL_MAX_DELAY);
Ivansuper
Ребят, вопрос -- я что-то явно упускаю, но как у idf.py monitor выставить скорость?
Ivansuper
SetPf
Dr Zlo
сама структура TPA6130A2_Control_Reg это один байт
Dr Zlo
SetPf
Господа кто делал вебморды.
Как вы справляетесь со всякой интерфейсной рилтаймовой таймерной фигней.
1) Пересылаете обновления?
2) Считаете на клиенте?
SetPf
3) Что нибудь еще?
Andy
SetPf
SetPf
Пересылать обновления - это смирится с тем, что время будет скакать (либо боротся с этим)
Считать на клиенте, это в сложной ситуация реализовывать часть логики на клиенте, фактически ее дублируя.
SetPf
То что это через аякс или вебсокеты будет и там и там - ясен фиг.
Dr Zlo
Andy
ㅤ
Dr Zlo
https://stackoverflow.com/questions/1638337/the-best-way-to-synchronize-client-side-javascript-clock-with-server-date/15785110 вот тут разобран твой вопрос
romanetz
ты знаешь, когда пинги по три секунды - надо связь менять )))
Dr Zlo
Dr Zlo
romanetz
три секунды - это 2ж херовый
romanetz
Dr Zlo
ведь так важно что контроллер лампочки откликнулся через три секунды
Andy
Задача то на UI какая? Выводить время с точностью до 10 mc?
Dr Zlo
SetPf
Andy
чтобы время не скакало
Опять же непонятно: типа что бы интервалы смены секунд на UI были строго 1 секунда? С какой точностью?
romanetz
а что с ними не так, с таймерами? по стране пинг 200-300 мсек на фиксе
SetPf
romanetz
максимум )
romanetz
ну так секундные интервалы
Dr Zlo
тут никак не сделать логику в одном месте
SetPf
Dr Zlo
я бы просто обошел это мелким индикатором связи с сервером
Ruslan
модуль LAN8720 вроде заработал, но IP адрес не получает
Andy
С точностью что бы не блевотно смотреть было. Нет... серьезно.
"не блевотно смотреть" - нет такого измерителя вермени, есть миллисекунды, микросекунды и пр. Если допустима задержка 200-300 mc. то можно брать время с чипа, если нужно точнее в любых условиях, то только локальные таймер + синхронизация с чипом по типу SNTP
romanetz
http://oscada.org:10002/WebVision/ses_AGLKS/ вон даже тренды обновляют с инетрвалом в секунду
romanetz
SetPf
romanetz
полсекунды обычно считается нормальная реакция на действия
опытным путём
для асутпшных задач
Dr Zlo
Dr Zlo
я бы сделал просто индикатор
Andy
romanetz
что значит "цифа дёргаётся"? цифра чего?
romanetz
я вот хз, сервер mqtt и железка, RTT суммарный 150 мсек до неё, всё отлично показывает -проблема не высосана из пальца?