#1363: Подождите, я записываю

« картинки и свежие анекдоты | чат

#1363: Подождите, я записываю

Программил я несколько лет назад в фирме, занимавшейся выпуском приборов с хитрыми датчиками. В одно прекрасное утро главный инженер поставил задачу реализовать в ПО поддержку нескольких датчиков на одном COM-порту. На первый взгляд всё было просто:

1) устанавливаем бит чётности в настройках порта в 1;
2) пишем в порт адрес нужного датчика;
3) устанавливаем бит чётности в настройках порта в 0;
4) пишем в порт команду;
5) читаем ответ.

Пишу (очистки буферов и очереди после операции записи в порт, все как положено), компилирую, несу в соседнее здание на флешке инженеру, запускаю на его древнем ноуте с COM-портом — всё работает! Несу датчик к себе, запускаю на своей мощной машине — облом!

Вставляю в код проверки результата каждой функции, запускаю, все функции отрабатывают правильно, но датчик молчит. Меняю порты, датчики, провода, машины — везде облом, кроме одного убитого ноутбука.

Иду к инженеру в соседнее здание, прошу осциллограф. Получаю отказ: «Это единственный осциллограф с памятью, он мне тут нужен». Не беда! Приношу версию программы с максимально подробным ведением логов, цепляюсь осциллографом на вход микрухи датчика, запускаю, медитирую... Порт открывается, бит чётности становится в 1, идёт адрес, идёт команда, порт закрывается. В логах все солнечно: судя по ним, бит чётности перед отправкой команды таки 0, а вот судя по осциллографу — 1. Естественно, датчик команду не воспринимает. Я больше верю осциллографу. Спрашиваю у гугла, форумов и знакомых спецов — ответа нет.

Нервы, психологическое давление со стороны инженера, ожидание Нового года на работе... На третий воскуривания даташита Super-IO-чипа, установленного на «волшебном» ноутбуке, всё становится ясно. Микруха на моей и других новых мамках по каким-то причинам не успевает переключить чётность, а на древнем ноуте успевает благодаря врожденной тормознутости последнего. Загадочным образом при этом API на обеих машинах сообщает, что все переключилось. Вставляю в код задержку в 1 мс — датчик радостно мигает индикаторами на любых компах!

Читайте мануалы. В них сила.

Комментарий:

Ваше имя:

Ещё интересное на этом сайте:

#1362: Игрушки с толкача
Анекдоты и картинки #52590
Казалось бы, обычный парень! (3 фото)
Подборка баянов
Сексуальная продажа кирпича (11 фото)
Игры
Под капотом кто-то поселился (3 фото)
BlackBoard Fight
Free Ice Cream
Что вы видите на дереве? (3 фото)
Эволюция брендов (2 фото)
No Future
Анекдоты и картинки #52579
Анекдоты и картинки #52578
Живопись в переходах Ростова (22 фото)
Спасение кота из Nissan Murano (3 фото)
Съемка - пришло время отдыхать!
Прикольные картинки (146 фото)
Очень смешно! Заказы на улучшение фотографий (10 фото)
Адреналин! Жесть!
« все анекдоты и картинки
Рейтинг@Mail.ru