Перейти к содержанию
    

а не изобретаю ли я tcp ?

нужен какой-то протокол, для uart, быстрый, т.е. с малыми накладными расходами и видимо поэтому с асинхронным подтверждением доставки пакетов

что предложите ?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

нужен какой-то протокол, для uart, быстрый, т.е. с малыми накладными расходами и видимо поэтому с асинхронным подтверждением доставки пакетов

Протокол выбирается не из того на чём он будет ходить, а из задачи, которую он должен решать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Протокол выбирается не из того на чём он будет ходить, а из задачи, которую он должен решать.

о да, задача, которую должен решать протокол - передача данных от источника к приёмнику

 

xmodem

смотрю

Изменено пользователем Огурцов

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

о да, задача, которую должен решать протокол - передача данных от источника к приёмнику

Тогда берите любой - не ошибётесь :laughing:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

смотрю

у него нет асинхронности - будет ждать подтверждение каждого пакета

 

 

Тогда берите любой - не ошибётесь :laughing:

в xmodem написано что-то про sliding window protocol

Изменено пользователем Огурцов

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

нужен какой-то протокол, для uart, быстрый, т.е. с малыми накладными расходами и видимо поэтому с асинхронным подтверждением доставки пакетов

что предложите ?

А многопоточность доступна?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А многопоточность доступна?

скорее нет, да и какой смысл ? пусть даже будет несколько потоков, канал-то один, как они будут его вместе использовать ?

 

 

было бы неплохо в исходниках вот https://www.youtube.com/watch?v=8eLhbOlF44U

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

скорее нет, да и какой смысл ? пусть даже будет несколько потоков, канал-то один, как они будут его вместе использовать ?

Как это какой смысл? Вы же хотите асинхронности, чтобы не ждать подтверждения каждого пакета. Поэтому логично запустить 2 асинхронных потока - один передает пакеты из очереди, другой принимает подтверждения.

Пришло подтверждение - удаляем пакет из очереди на передачу. Таким образом и получится окно, равное размеру TxD-очереди.

Обходим очередь по кругу - неподтвержденные пакеты сами будут периодически перепосылаться. Они же все пронумерованы, приемная сторона сама разберется, что к чему.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

один передает пакеты из очереди, другой принимает подтверждения

это на прерываниях прекрасно делается

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Много лет назад реализовал протокол двусторонней пакетной передачи (по uart) сообщений с гарантированием на основе контрольных сумм, таймаутов и повторных передач. Без адресации -- только два узла. Была самодельная многопоточность. Сперва реализовал на C под DOS на PC, потом просто строчка за строчкой перенес на avr asm

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

SLIP/CSLIP

это вроде бы просто форматирование, подтверждение там не прописано

 

в общем, почитал, подумал и понял, что tcp для кражи не подходит - много чего лишнего для меня, типа поднятия подключения

а вот окно или буферизацию пакетов для подтверждения доставки нужно взять

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в общем, почитал, подумал и понял, что tcp для кражи не подходит - много чего лишнего для меня, ..

Тогда воруйте RUDP.. :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

с малыми накладными расходами и видимо поэтому с асинхронным подтверждением доставки пакетов

Чет не понял, неужели так сложно принять N байт и на лету посчитать какую-нить CRC16 из таблицы, и выдать подтверждение правильности приема? Или так далеко нужно передавать, что время передачи сигнала в линии уже секундами измеряется или кол-во ретрансляторов дофига, тогда только нужна асинхронность. В остальных случаях это просто дикость ИМХО.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...