520просмотров
15.6%от подписчиков
18 марта 2026 г.
📷 ФотоScore: 572
Как я проблему с прогами решал Не так давно я писал, что с программами 1 (запуск системы, получение-отправки буфера, подключению к серверу) и 2 (получение кодовой фразы по портам, оптравку заготовленной программы для получения данных с метеостанции и датчика ветра) проблему решил. Как оказалось, не всё так просто. В тот раз у меня взаимодействие с датчиками происходило как в программе 2, так и в 1, т.е. я одновременно получал запрос на получение данных что с главного столпа архитектуры, так и с сервера. Получалась двойная работа. Но я думал, что так и должно быть – если одно не работает, то второе точно должно получить данные. Тут возникало сразу несколько проблем: 1. Переполненность буфера (вместо получения данных раз в 10 мин получал раз в 5); 2. Получалась одновременно и параллельная, и последовательная работа; Когда появлялись хоть какие-то данные, я считал, что если данные пришли, то не важно, с какой программы они пришли. Архитектуру пришлось изменить. Прога1 – ядро и запуск, прога2 – получение-отправка. В сухом остатке нужно было вырезать часть кода, отвечающая за работу с датчиками и перенести в прогу2. Сложность не велика, перепиши ты прогу2 и дело с концом…как бы не так: 1. Сервер: каждый раз отправлять серверу обновленные проги2 было и не целесообразно, и невозможно, так как у меня нет прямого соединения с сервером. Приходилось напрягать других прогеров, отвечающих за изменение извне. 2. Порядок портов: оказывается(!), порядок запросов на сервер очень сильно влияет на запись данных. Если, условно, у вас есть 2 почтовых адреса, на первый вы отправляете запрос на время, а второй – на одобрение, то при последовательном получении данных, данные с первого адреса смешивается с ещё не дошедшим вторым почтовым адресом – получается каша. 3. Забивание потока: я пробовал различные способы чтения проги2, и построчное чтение, и потоковый парсинг, и фильтрацию данных. Ничего не получалось, выходили ошибки. Пока я не решил, что стоит объединить парсинг с фильтрацией и – да ну вы серьёзно? – корректно пошли данные. По итогу проблема решена, осталось допилить прогу2, чтобы вероятность получения данных пришла к этому виду. Похождения на 2 дня развернулись на 2 недели 🙂 А у вас как на работе дела? Кот в Коде|@kot_research_bot