Зачем так писать код??? (непрограммистам неинтересно)

Сейчас пишу управляющую программу к одной промышленной железке.

Железка сама очень даже замечательная, работает как часы и измеряет что нужно совершенно прекрасно.

Но вот микропрограмма внутри этого устройства, написана мягко говоря "странновато".

Несколько параметров задаются (начало...конец диапазона измерений, например).

Сегодня тестировал свою программу перебирая с маленьким шагом весь диапазон доступных значений этого параметра.

Наблюдаю следующую картину:

-12.1 - нормально принимает значение

-12.15 - ошибка

-12.2 - норма

...

-999 - норма

9999 - норма

-6.231 - ошибка

-6.23 - норма

6.231 - норма

999.2 - норма

999.21 - ошибка

9998.5 - ошибка


Причем "родной", фирменный, конфигуратор этой штуковины вел себя точно так же!

Сбоил на этих же значениях.


Очень несразу до меня дошло, что где-то внутри микропрограммы, полученное число переводят в строку символов, длиной 5 знаков, и минус - тоже знак!

Вот зачем так делать? Все равно потом переводить обратно, для занесения в регистр!


В документации об этом нюансе, естественно, ни слова.

Лига фрилансеров

1.9K поста16.9K подписчиков

Добавить пост

Правила сообщества

Не забывайте поддерживать авторов плюсами!


Нельзя:

- Добавлять нетематические посты, последнее решение за модератором

- Рекламировать какую-либо продукцию в виде постов


Можно:

- Делится любыми интересными историями, связанными с фрилансом :)

Автор поста оценил этот комментарий

Есть еще внезапный вариант:

менеджер проекта: какая должна быть длина у числа?

заказчик: ну пусть будет пять знаков....

Автор поста оценил этот комментарий

Так может внутри используются bcd числа (что гораздо более вероятно, чем строки)

Автор поста оценил этот комментарий

какой интерфейс передачи?

1
Автор поста оценил этот комментарий

Если железка слабая, то числодробилка у неё отвратительная, поэтому извращаются с длинной арифметикой кто как может, тут по видимом как то тупо переводят =)

раскрыть ветку
1
Автор поста оценил этот комментарий

Скорее всего кто-то увлекался sscanf/sprintf.

раскрыть ветку