mail_robot писал(а):
чтото я тут почитал на счет приема и передачи ИК сигналов и у меня возникло некоторое подозрение, что для увеличения дальности необходимо вводить в процедуру приема корректор ошибок
ну может быть не корректор, а какой то механизм детектирования мелких ошибок, которые неизбежно будут возникать на существенных дистанциях
как это проверить в натуре я пока не очень представляю, но мыслю, что если этого не делать, то дальность будет весьма ущербной даже на хорошей оптике
полагаю что контрольную сумму LW ввели неспроста именно поэтому. Наверное при приеме пакета производится некий его анализ, и даже если он принят не совсем верно с млкими битовыми ошибками, производится его софтовая коррекция.
Как это должно работать
Приняли мы пакет значит. Но контрольная сумма не совпала ни с одним из ожидаемых вариантов. Это значит что принято с ошибкой в каком то из байтов. Если ошибок много, то корректировать конечно бесполезно. Но если проанализировать сумму и выяснить к примеру что ошибка только в одном из битов, то можно эвристикой чуть скорректировать пакет в соответствии с правилами его формирования. А мы их знаем. Это будет первый проход - прическа пакета там, где мы точно знаем что должны быть к примеру нолики.
Потом проверяем сумму, если она отличается на 1 бит - вычисляем его вес. То есть позицию - где бы он мог быть.
Потом проверяем первый байт - если этот бит там уже есть, смотрим второй байт. Там его скорее всего не будет. Делаем OR и добавляем его.
Только вот если сумма неправильно пришла... пока не понял как это определить
А мож я вообще зря заморачиваюсь и надо просто устойчивый алгоритм приема сделать и всех дел
Ну чтото в этом духе. Это пока черновичок мыслей.
Кто что думает по этому поводу?
У меня все проще - в хедере прописываем допустимое отклонение длительности принимаемого импулса в процентах.
Если укладываемся в погрешность - то все ОК.
Если нет - "пуля мимо просвистела"!