Вверх ↑
Этот топик читают: Гость
Ответов: 499
Рейтинг: 1
#16: 2010-01-15 21:27:09 ЛС | профиль | цитата
лог putty сойдет?
карма: 0

0
файлы: 1putty.zip [903B] [105]
Разработчик
Ответов: 26304
Рейтинг: 2146
#17: 2010-01-15 21:52:44 ЛС | профиль | цитата
HikeR, в твоем логе, перед первым 55, FC есть 0A, 0D, 00, 00, 41. Это не твое устройство выдает ? Меня смущает 41, откуда он берется ?
------------ Дoбавленo в 21.59:
Схемку дай простенькую, можно из первого поста, вилы писать самому.
Уточним задачу -- значит так: твое устройство тупо выдает каждые 20мс последовательность из 18 байт, которые должны начинаться на 55, FC, правильно я понял. Вопрос -- откуда могут взяться не 55, FC в начале, и всегда ли устройство должно выдавать именно 18 байт ?
карма: 22

0
Ответов: 499
Рейтинг: 1
#18: 2010-01-15 22:09:51 ЛС | профиль | цитата
0A, 0D, 00 - это конец заголовка лога
00, 41 - посылается только в момент включения девайса. я запускал путти, потом включал девайс.
nesco писал(а):
твое устройство тупо выдает каждые 20мс последовательность из 18 байт, которые должны начинаться на 55, FC

именно так. но 20мс - это примерно. точнее подсчитать нечем, может и 19мс, а может 20.4342352мс ;) сама посылка где-то за 2-3мс проходит.
nesco писал(а):
откуда могут взяться не 55, FC в начале

они берутся в схеме, сам девайс никоим образом изменить это не в силах.
nesco писал(а):
всегда ли устройство должно выдавать именно 18 байт ?

да.

схемка из первого поста, как ни странно, в первом посте: http://www.hiasm.com/xf/attach/files/code_16508.txt

p.s.
самое главное, "Baudrate is 115kbd, 8 bit, noparity, nohandshake"
карма: 0

0
Разработчик
Ответов: 26304
Рейтинг: 2146
#19: 2010-01-15 22:17:18 ЛС | профиль | цитата
HikeR писал(а):
00, 41

Значит, все таки, выдается, отлично. А его отлавливать не надо для информативности
HikeR писал(а):
20мс - это примерно. точнее подсчитать нечем, может и 19мс, а может 20.4342352мс

Не сильно существенно
HikeR писал(а):
они берутся в схеме, сам девайс никоим образом изменить это не в силах

Те, девайс не шлет в начале ничего, кроме 55, FC, все остальное косяки схемы обработки, правильно
HikeR писал(а):
"Baudrate is 115kbd, 8 bit, noparity, nohandshake"

Почему такая высокая скорость, как правило, в телеметрии, для большей надежности, не применяют таких скоростей, или это USB через COM-порт
------------ Дoбавленo в 22.19:
Да, еще чего спросил, если не секретно -- а что это за девайс, что за функции он выполняет
карма: 22

0
Ответов: 499
Рейтинг: 1
#20: 2010-01-15 22:39:57 ЛС | профиль | цитата
nesco писал(а):
А его отлавливать не надо для информативности

не требовалось пока. то что при включении идет потеря нескольких пакетов - не смертельно.
nesco писал(а):
девайс не шлет в начале ничего, кроме 55, FC, все остальное косяки схемы обработки, правильно

да, скорее всего в предложенной реализации есть недоработки.

девайс - 6-ти канальный пульт радиоуправления, передает состояние всех 6 каналов с разрешением 1024 отсчета, у него самого на выходе COM-интерфейс, втыкается в COM-USB переходник.
если интересно - расшифровка (предварительно надо сделать XOR на байтиками):

0 : header0 = 85
1 : header1 = 252
2 : high_byte of (ch1+1000)
3 : low_byte of (ch1+1000)
4 : high_byte of (ch2+1000)
5 : low_byte of (ch2+1000)
6 : high_byte of (ch3+1000)
7 : low_byte of (ch3+1000)
8 : high_byte of (ch4+1000)
9 : low_byte of (ch4+1000)
10: high_byte of (ch5+1000)
11: low_byte of (ch5+1000)
12: high_byte of (ch6+1000)
13: low_byte of (ch6+1000)
14: high_byte of 2044-(ch3+1000)
15: low_byte of 2044-(ch3+1000)
16: high_byte of checksum
17: low_byte of checksum

high_byte -> (Channelvalue + 1000) / 256
low_byte -> (Channelvalue + 1000) mod 256
checksum -> sum of bytes 2 to 15
карма: 0

0
Разработчик
Ответов: 26304
Рейтинг: 2146
#21: 2010-01-15 23:27:12 ЛС | профиль | цитата
HikeR, вот такая схема у меня нифига ничего не теряет. Проверь ее на реальном девайсе, я проверял ее на виртуалке

code_16520.txt


------------ Дoбавленo в 23.38:
Забыл добавить, что ни в коем случае на таких маленьких задержках нельзя применять отрисовку контролов, вот почему я и влепил считывание проверочных массивов по останвке портов
карма: 22

1
файлы: 1code_16520.txt [3.4KB] [173]
Голосовали:HikeR
Ответов: 499
Рейтинг: 1
#22: 2010-01-16 00:20:46 ЛС | профиль | цитата
хорошая новость - потерь нет совсем, все строчки принимаются полностью.
плохая новость - примерно на 40-50кб полученных данных винда семерка стабильно падает в синий экран ;)

но смысл понятен, спасибо.
карма: 0

0
Разработчик
Ответов: 26304
Рейтинг: 2146
#23: 2010-01-16 00:25:55 ЛС | профиль | цитата
HikeR писал(а):
примерно на 40-50кб полученных данных винда семерка стабильно падает в синий экран

Где-то идет переполнение буфера, искать надо. Лучше каждый кадр обрабатывать в RealTime, а не копить это хозяйство
Попробуй убрать поток и попробовать с таймером
карма: 22

0
Гость
Ответов: 17029
Рейтинг: 0
#24: 2010-01-16 01:50:08 правка | ЛС | профиль | цитата


Редактировалось 2 раз(а), последний 2025-01-10 08:00:11
карма: 0

0
Ответов: 499
Рейтинг: 1
#25: 2010-01-16 01:51:59 ЛС | профиль | цитата
p.s.
да чтож такое, пока пишу - разлогиниваться успеваю.
------------ Дoбавленo в 01.55:
nesco писал(а):
Специально врублю виртуалку, сделаю эмулятор посылок и проверю

да, а что за эмулятор, не поделитесь? ;)
карма: 0

0
Разработчик
Ответов: 26304
Рейтинг: 2146
#26: 2010-01-16 02:26:32 ЛС | профиль | цитата
HikeR, зря ты так усложняешь схему, нафиг там посимвольный перебор, контроль ошибочных символов начала, достаточно проверить длину считанных байт на валидность, ну да смотри сам, твоя схема.
------------ Дoбавленo в 02.30:
HikeR писал(а):
а что за эмулятор, не поделитесь?

Он только до Висты поддерживает у меня, надо новую версию, называется сие творение -- Virtual Serial Port Driver от Eltima Software, в нэте можно найти.
карма: 22

0
Ответов: 499
Рейтинг: 1
#27: 2010-01-16 02:43:18 ЛС | профиль | цитата
nesco писал(а):
достаточно проверить длину считанных байт на валидность

увы, недостаточно. девайс в определенных режимах меняет первые 2 байта, я описал только режим мониторинга, а оно еще умеет по команде отсылать все свои настройки, тогда эти 2 байта могут принимать 3 разных значения. то есть по этим двум байтам идет переключение на одну из 4-х схем разбора.
да и раскодирование только побайтовое, напрямую полученные цифры использовать нельзя.
nesco писал(а):
Virtual Serial Port Driver от Eltima Software

ну и ценничек у этой штуки...
карма: 0

0
Разработчик
Ответов: 26304
Рейтинг: 2146
#28: 2010-01-16 02:49:00 ЛС | профиль | цитата
HikeR писал(а):
ну и ценничек у этой штуки...

Для экспериментов и халявы хватит
HikeR писал(а):
раскодирование только побайтовое, напрямую полученные цифры использовать нельзя

Ну, смотри сам, тебе виднее, самое главное, что читаться стало без ошибок
карма: 22

0
Ответов: 3851
Рейтинг: 159
#29: 2010-01-21 23:21:01 ЛС | профиль | цитата

HikeR писал(а):
тогда эти 2 байта могут принимать 3 разных значения

главное, чтобы эти заголовочные комбинации не могли повторяться в теле данных кадра..
кстати - 15 мс для таймера весьма критическая величина, если верить справке на элемент..
карма: 0
начавший
0
Ответов: 499
Рейтинг: 1
#30: 2010-01-22 04:33:27 ЛС | профиль | цитата
заголовки не могут встретится повторно, разве что из ком-порта полезет явная чушь. но она просто отсечется дальнейшей проверкой на корректность.

про 15мс тоже прочитал, сво-во Overcall у меня стоит Ignore, при интервале в 10мс TimeCounter насчитал реальных срабатываний раз в 20.3мс, при 1мс - тоже.
видимо спасает то, что с ком-порта пакекеты поступают с интервалом больше критичного.
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)