Карма: 1
Рейтинг сообщений: 7
Зарегистрирован: Чт май 14, 2015 15:11:39 Сообщений: 424 Откуда: Саратов
Рейтинг сообщения:0
Здравствуйте. Организую прием данных с устройства. Устройство отправляет данные, упакованные в виде: 0xff - заголовок 0x00 - идентификатор устройства 0x06 - длина сообщения 0x00 - дата0 0x00 - дата1 0x00 - дата2 0x00 - дата3 0x00 - дата4 0x?? - контрольная сумма
Принимаю на компьютер под windows. Данные приходят с частотой 100 Гц. Сейчас сделано так: 1. Циклический буфер наполняется данными с UART 2. Раз в 5мс если в буфере есть новые данные, они отправляются на расшифровку. 3. Там находится по очереди ff, 00, и т.д. 4. Проверяется crc 5. Если неуспешно, то машина сбрасывается до пункта 3
результат: 80% времени сумма не совпадает, потому что сообщения накладываются друг на друга. Как это побороть?
А как насчет второго условия? Тогда гребите почаще, или передавайте пореже
Цитата:
Данные приходят с частотой 100 Гц.
10мс
Цитата:
2. Раз в 5мс если в буфере есть новые данные, они отправляются на расшифровку.
Это у вас таймер тикает 5мс, винда ни разу не система реального времени, почитайте какие лаги могут быть. Да и хоть якобы в два раза быстрее при асинхронном опросе - это на грани фола, в итоге имеете что имеете - результат закономерен
_________________ Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.
Карма: 1
Рейтинг сообщений: 7
Зарегистрирован: Чт май 14, 2015 15:11:39 Сообщений: 424 Откуда: Саратов
Рейтинг сообщения:0
Сейчас мне подсказали вот такую схему расшифровки данных. Смысл в том, что есть заголовок 0xFF, который может встретится среди пакета как данные. Отсюда и отказы моей машины состояний. Смысл её в том, что находится пакет не побайтно, а целиком. При этом данные, не прошедшие проверку, не стираются. Может кто что сказать за эту схему? Спойлер
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Буфер заведомо побольше для начала, чтобы убедиться что индексы головы и хвоста нормально с приёмом обработкой синхронизируются. Перед добавлением данных в буффер проверять не догнала-ли голова хвост. Иметь ввиду, что буффер после первого оборота заполнен уже обработанными данными - и не высовываться при разборе ненароком за пределы голова-хвост. Может эти 80% и являются франкенштейнами, собранными из кусков разных фреймов.
_________________ Одновременным нажатием LIGHT и POWER, РП Sangean ATS-909X (ver 1.29) превращается в ATS-909XR!
Сейчас этот форум просматривают: Google [Bot] и гости: 16
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения