Регистрация
Войти
Стать экспертом Правила
Другие предметы

Как программисты называют свои программные затыки?

ОТВЕТЫ

Именно с таким решением задачи я не сталкивался. Была другая проблема. Программа в реальном режиме времени должна была работать по прерываниям с реальным 'железом'. Реальное же 'железо' стояло в единичном экземпляре в кунге и управлялось с единого компьютера, опять таки стоящего в этом кунге.

Это 'железо' как получало команды на управление, так и выдавало в реальном времени поток информации, который нужно было принять, обработать в реальном времени, а также показывать его в различных графических видах - как и реальный поток, так и различные его статистически обработанные виды.

Программисты этой программы (по сути - программного комплекса) сидели у себя в офисе за своими компьютерами, которые, само-собой, никуда подключены не были. Следовательно, им нужны были затычки-имитаторы для любого вида управления этим реальным 'железом' и обработки его откликов.

Нужно отметить, что все эти имитаторы по объёму своей разработки 'весили' около четверти, а то трети от всего кода при реальной работе.

Я как-то решил чуть упростить себе задачу, зная, что несуществующий порт (а для офисного компьютера все эти порты для работы с 'железом' были несуществующими) отвечает всеми единицами, и не стал вводить признаки имитации при этих обращениях. Ага, мол, порт ответил единицами, значит - само-собою имитация, потому реальный отклик подменялся имитационным (реальное 'железо' такого формата не выдавало). В таком режиме имитации и отлаживалась вся графическая обработка данных. По экрану бегали красивые синусоиды в нужном месте и нужной амплитуды. Но изредка эта имитационная 'красота' нарушалась какими-то непонятными разовыми всплесками. Кто работал с системами реального времени, тот поймёт, что найти причину этих разовых всплесков, возникающих раз в пять-десять минут очень сложно. Однако, я нашёл причину. Оказывается, несуществующий порт почему-то иногда отвечал не всеми единицами, а каким-то мусором, который мой модуль, не имеющий строго признака работа/имитация принимал за реальный отклик и укладывал эти данные в имитационный график. Пришлось всё же переделывать. Но не сразу. Лень-матушка взяла верх. Я заметил, что если два раза подряд запросить несуществующий порт, то на второй раз он гарантированно ответит всеми единицами. Я обрадовался и вставил два запроса (система в этом плане не была критична к быстродействию). Всю прошло гладко. Пять минут - полёт нормальный, десять минут, пятнадцать... А вот потом выяснилось, что это не помогает. Где-то через минут сорок опять случился выброс. Да, второй запрос существенно улучшил ситуацию, но не полностью. Я ради эксперимента поставил третий запрос подряд. Наработка на отказ выросла почти до 2-х часов непрерывного запроса несуществующего порта. Вот ведь не лень было два часа пялится в экран. Но я опять поймал этот всплеск. Этого факта никто из наших программистов объяснить не смог. Я переделал потом этот и другие свои модули на чёткое разграничение по режиму работа/имитация, хотя это было непринципиально, ибо в рабочем-то основном режиме всё было хорошо. Но оставлять такую недоделку даже в имитационной затычке было как-то не к лицу...

автор вопроса выбрал этот ответ лучшим
47
Контакты
Реклама на сайте
Спрошу
О проекте
Новым пользователям
Новым экспертам