Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Реализация протокола 
:(
    Опции темы
Magik
Дата 28.7.2008, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 6.12.2007

Репутация: 2
Всего: 2



Думаю, что, если знать - что и почему в этих цифрах, за средний - с лихвой!
А в общем , это обмен (трасировка) по 101 протоколу, асинхронная, небалансная передача.
Пакеты постоянной (10), и переменной длины (68). Да это всё описано в ссылке, что я давал. Ну, а что внутри, тоже можно там же прочитать. Но эти вопросы для обсуждения не на этом форуме. Да и , думаю за эти посты модератор может дать по кумполу.
28-07 19:01:20.928 <10 5B 7E D9 16
28-07 19:01:21.021 >10 09 7E 87 16
28-07 19:01:41.178 <10 7B 7E F9 16
28-07 19:01:41.225 >68 26 26 68 08 7e  0d 86 01 7e e9 03 00 00 00 00 80 00 00 00 00 80 00 00 00 00 80 00 00 00 00 80 00 00 00 00 80 00 00 48 42 00  8e 16 
28-07 19:03:21.225 <10 09 7E 87 16 
PM MAIL   Вверх
Virtuals
Дата 28.7.2008, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 476
Регистрация: 27.11.2006

Репутация: 4
Всего: 11



RinOSpro
отвечай на вопросы по пунктам;
.1.есть ли описание протокола?
.2.допускает ли канал связи потерю/искажение данных
.3. есть ли девайс работающий по данному протоколу?
.4.есть ли лог обмена девайса с чем либо по данному протоколу?

и подумаем как ковырять данное
PM MAIL ICQ   Вверх
Magik
Дата 29.7.2008, 06:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 6.12.2007

Репутация: 2
Всего: 2



Очень ценная статья есть здесь http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1126 с приложенным файлом. Лично мне очень нравится, и можно применять на прктике для тестирования каналов передачи данных с разными скоростями и паритетами. Протокол простой, но работает чётко. 
PM MAIL   Вверх
RinOSpro
Дата 29.7.2008, 08:02 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Virtuals Хорошо щас отвечу, но есть одно но! В общем такая ситуация протокол есть я даже могу посылать команды и принимать их. Но знаешь какая глобальная проблема?! как сделать качественную обработку.... Не то что тупо получил пакет сравнил с чем то и, отправил, нужно в реализация на высоком уровне... просто устройство сцуко умное... 

Кстати Magik тот лог что ты мне показываешь
Код

68 26 26 68 08 7e  0d 86 01 7e e9 03 00 00 00 00 80 00 00 00 00 80 00 00 00 00 80 00 00 00 00 80 00 00 00 00 80 00 00 48 42 00  8e 16 


Я уже такой реализовывал... это было довольно просто нежели сейчас... У предыдущего устройства протокол был 2 A4 )) и все нормально реализовал работает. а у нового протокол 150 A4 ((( и продвигаюсь как черепаха...


Virtuals 
1. Да 150 стр. англ. текста.
2. Да есть контроль правbльности пакетов достигается через CRC16
3. Да девайс есть и есть уже небольшие продвижения )
4. Лог обмена есть причем от родной программы этого девайа.

Вот не понимаю как в родной программе так все красиво и без глюков работает ) а у меня не получается ((
  Вверх
Virtuals
Дата 29.7.2008, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 476
Регистрация: 27.11.2006

Репутация: 4
Всего: 11



RinOSpro
ну так как мне нереально читать доки ваши то могу дать несколько советов, по крайне мере как я поступаю!

итак:
1. забудте что данные приходят пакетами кусками и т.д. представте что это непрерывный поток
2. нам нужно гдет хранить данные пока мы их полностью непримем, и не обработаем
3. для начала определимся что есть начало БЛОКА а что конец (именно набор условий)
(сдесь и далее буду приводить свой пример)
//набор спецификаций: 
блок начинается на 10 01 
кончается на 10 02
если в блоке встречается 10 то она меняется на 10 10
--
отсюда выводим правила
начало: 10 01 если перед ними нет нечетного количества десяток
конец: если было начало и если есть 10 02 и перед ними нет нечетного количества десяток

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

процедура приема данных:
принимаем байты неважно как, и побайтово выкидываем в процедуру буфера
конец

процедура буфера:
принимаем по одному байту в раз
проверяем размер буфера на предмет возможного переполнения (если переполнение то сбросить флаги начала блока...)
пихаем байт в хвост буфера
отдаем буфер на дешифровку
конец

процедура дешифровки:
анализируем буфер сначала и ищем начало блока (условия известны) если нашли то сдвигаем буферт так чтобы первым было начало буфера /10 01/ дыбы выкинуть мусор и взводим флак начала
если флаг начала анализируем буфер на предмет конца блока если ненашли то свалить
иначе из буфера выдераем весь БЛОК, что осталось смещаем на первую поз, сбрасываем флаги
а блок передаем в процедуру анализа
конец

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

 smile 
ЗЫ удачи в этом нелегком деле

Это сообщение отредактировал(а) Virtuals - 29.7.2008, 12:22
PM MAIL ICQ   Вверх
RinOSpro
Дата 30.7.2008, 10:02 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Virtuals помоему это нереально сложно... 

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

К примеру когда я отправил пакет ставлю статус скажем st_read_response, и в потоке смотрю если этот статус, то ждать ответа получил ли девайс мой пакет, устройство мне может вернуть или ошибку или данные, к примеру если ошибка, то заного ставлю статус который выполнит повторно эту команду, а если получил данные и CRC верно тогда ставлю статус st_write_response.

Примерно так... Как вам такая схема?
  Вверх
Virtuals
Дата 31.7.2008, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 476
Регистрация: 27.11.2006

Репутация: 4
Всего: 11



а никто не обещал что это просто,  smile 
я описал алгоритм выделения блоков из потока принимаемых данных, и поверьте без него никак (глючить будет неподетски), а реализация алгоритма обмена (запрос-ответ) это следующий уровень
потребуется послать комманду, и ждать ответа,учесть что: данные могут вообще неприйти, прийти поврежденными, прийти не те которые ожидаем, короче нужен таймаут на ответ, и перечень ожидаемых ответов...
ваша идея в общем верна, но учтите описанное выше

Это сообщение отредактировал(а) Virtuals - 31.7.2008, 21:07
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0837 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.