реклама на сайте
подробности

 
 
> SLP - последовательный протокол, Еще один велосипед
Огурцов
сообщение Oct 4 2008, 17:37
Сообщение #1


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



Цель - разработка, испытания, некая стандартизация.
Как думаете, будет ли интересен сабж ?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
umup
сообщение Oct 5 2008, 14:53
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 226
Регистрация: 2-06-06
Пользователь №: 17 720



как-то все сложно и запутанно, какие-то stuff-коды и т.п...
я сделал проще - полудуплексный протокол с пакетами переменной длины и станд. заголовком :

заколовок пакета:

u16 packet_size - размер (включая CRC),
u8 node_from - адрес узла-отправителя,
u8 node_to - адрес узла-получателя,
u16 cmd - команда/тип пакета,
......... - данные пакета, индивидуальные для каждой команды,
u16 crc - к.с. пакета (так как нет никакого стаффинга, считается на лету при приеме/передаче каждого байта).

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

есть библ. на С на контроллеров (прием/передача встраиваются в преорывания RX,TX, плюс прерывание таймера для контроля тайм-аута приема и паузы перед передачей отв. пакета, вся обработка - в осн.цикле по флагам готовности пакета), библ. на Питоне для приема/передачи/расшифровки пакетов.
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Oct 5 2008, 15:51
Сообщение #3


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



Цитата(umup @ Oct 5 2008, 14:53) *
u16 crc - к.с. пакета (так как нет никакого стаффинга, считается на лету при приеме/передаче каждого байта).


Да, CRC считается только от данных, без учета стаффинга, поэтому тоже "на лету".

packet_size - зло. Я долго бился над его оптимизацией, а теперь, отказавшись, понимаю, что без него все гораздо прямее.

node_from - вот с этим вопрос открыт. Пока нет необходимости, поэтому не могу привести случаи, когда оно могло бы пригодиться. В большей степени кажется необходимым иметь не адрес мастера, а адрес шины, с которой получили пакет, для возможности маршрутизации. Маршрутизация уже сейчас напрашивается, хоть по-идее не является необходимой для сабжевого типа шин.
Go to the top of the page
 
+Quote Post
umup
сообщение Oct 5 2008, 16:45
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 226
Регистрация: 2-06-06
Пользователь №: 17 720



Цитата(Огурцов @ Oct 5 2008, 18:51) *
packet_size - зло. Я долго бился над его оптимизацией, а теперь, отказавшись, понимаю, что без него все гораздо прямее.
а как контролировать завершение приема пакета ? сравнивать к.с. для каждого байта ?
Цитата
node_from - вот с этим вопрос открыт. Пока нет необходимости, поэтому не могу привести случаи, когда оно могло бы пригодиться. В большей степени кажется необходимым иметь не адрес мастера, а адрес шины, с которой получили пакет, для возможности маршрутизации. Маршрутизация уже сейчас напрашивается, хоть по-идее не является необходимой для сабжевого типа шин.
модет пригодится, например для мульти-мастерной сети
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Oct 5 2008, 17:19
Сообщение #5


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



Цитата(umup @ Oct 5 2008, 16:45) *
а как контролировать завершение приема пакета ? сравнивать к.с. для каждого байта ?

Дыкть, специально для этого символ предусмотрен - Slp_packet_end.
А вот Вы как обнаруживаете начало пакета, тот байт, в котором packet_size ?
Что будете делать, если пакет придет наполовину, как начало следующего ловить ?

Цитата(umup @ Oct 5 2008, 16:45) *
модет пригодится, например для мульти-мастерной сети

Так наверно мастрера сами разберутся, кто какие запросы отправлял и будут ловить предназначенные им ответы. Шина общая и запросы по-любому должны идти друг за другом, а не одновременно, и ответы не перепутаются, даже если запросы будут одинаковые но от разных мастеров.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 2nd August 2025 - 15:35
Рейтинг@Mail.ru


Страница сгенерированна за 0.01397 секунд с 7
ELECTRONIX ©2004-2016