Подкиньте, пожалуйста, мыслю: при работе с ИК приемником получаю команды от пульта вида
code_25092.txt
вида "импульс/пауза|длительность импульса". Разделитель вписываю сам какой душа пожелала. Дальше, получая этакий массивчик этих импульсов, запоминаю его. Затем нажимаю ту-же кнопку на пульте и получаю такой же набор импульсов/пауз, но длительность импульса должна иметь допуск в 0,14. Именно с таким разбросом большинство бытовых пультов выплевывают импульсы.
Так вот, записывая первый образец в память, я потом с ним сравниваю последующие сигналы, при этом каждая строка в массиве должна иметь допуск в эти 0,14 по длительности импульса/паузы. В единичном варианте это делаю через перебор значений каждого из массивов (сравниваю новый сигнал с эталонным) с вычитанием длительности от эталонного, и пропусканием этого числа через if_elce "X<=0.14". Если все значения вложились в этот коридор с допуском в 0.14 - сигналы совпадают, а если есть хоть 1 разность больше 0.14 - нажимались разные кнопки пульта.
Теперь хочу упаковать это в модуль скоростного поиска, поскольку часть пультов выплевывают всякую бяку вперемешку с чистым сигналом очень часто. Приходится проверять каждый сигнал на соответствие эталону примерно раз в 25 миллисекунд. Первое что подумал - загнать в SQLite эталоны и дальше просто делать поиск по ней с поступлением нового сигнала от пульта, но ведь нужно же учитывать этот самый допуск в 0.14 при поиске и массив нужно перебрать в строку для записи в базу...
Думается мне что я не самый рациональный способ придумал. Может кто подкинет свежую мыслю для сравнения сигналов?
Ответов: 704
Рейтинг: 7
|
|||
карма: 0 |
| ||
файлы: 1 | code_25092.txt [418B] [120] |