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

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

И охота вам спорить с религиозным человеком?

 

Да уж... Просто есть люди, которые берут и решают поставленную задачу на основе решений, которые стандартны и работают годами, а есть и такие, которые получают удовлетворение в самом решении, и началось, вот так лучше, а вот так еще, я же хочу что-то гениальное придумать, а не как те, укуренные... Потом перфекционизм включается на полную и уже кто во что горазд... Иногда встречаешься с подельями таких любителей, со стандартным подходом все просто, а тут... хрен разберешься :rolleyes:

Изменено пользователем mantech

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


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

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

 

Ага я тоже делал и даже с многими узлами. Один центральный и много периферийных.

первый байт пакета длина, последний контрольная сумма. Если в середине приема пакета дольше таймаута перерыв, что сброс машины состояний приемника на прием. Каждый пакет получает ответ. Ответ зависит от типа пакета. Центральное устройство опрашивает периферийные, а периферийные отвечают. Периферийные никогда не начинают передачу пока не спросят.

Как-то так. Работает прекрасно во многих проектах, которые много лет успешно на рынке.

 

Ну сброс состояния по таймауту это хорошый вариант. А у пакета есть особая сигнатура начала? Она эскейпится и не встречается в потоке данных?

Эта сигнатура отслеживается не смотря на байт длины пакета? Т.е. вариант испорченного байта длины и приёма лишних байтов таки решен? Или достоверность длины обеспечивается уровнем ниже?

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


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

Не обращайте внимания на камлания некоторых товарищей. Они ведь не рассказывают как надо. Они рассказывают, что все предлагают неправильно.

+100.

Надо сразу определиться "Вам шашечки? Или ехать?"©

Если "шашечки", то это к Огурцову энд компани.

А если нужно реально дело делать - то слушайте остальных

 

Да уж... Просто есть люди, которые берут и решают поставленную задачу на основе решений, которые стандартны и работают годами, а есть и такие, которые получают удовлетворение в самом решенииe:

+100.

Топикстартер относиться ко 2-й категории. Которому главное "шашечки", а не "ехать".

Так что я пас что-то ему объяснять. А просто для попи... "поговорить" на форуме есть куда более интересные темы, чем "как два байта передать по уарту"

Это последнее, что я написал в этой теме.

Изменено пользователем Николай Семёнович

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


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

Это последнее, что я написал в этой теме.

слава аллаху и иисусу, свершилось

 

сброс состояния по таймауту это хорошый вариант

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

 

которые стандартны и работают годами

а hdlc не стандартный, не работает, не годами ?

 

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

правильно, совершенно согласен

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

 

Задача решается элементарно — путём предложения заказчику либо начать неопределённого размера затраты с ТЭО на снятие картины помех, причём, сперва выждать, когда соизволит начать работать "плазма", либо однократно и окончательно оплатить три метра металлорукава и работу по его монтажу.

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

 

А поставить 485, дифференциальный, экранированный?

нет

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

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


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

а hdlc не стандартный, не работает, не годами ?

 

Не знаю, я его нигде не использовал. :laughing:

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


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

правильно, совершенно согласен

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

Настроить DMA на приём?

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


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

Не знаю, я его нигде не использовал

подозреваю, вы его постоянно используете, только не догадываетесь - в компьютере, телефоне, холодильнике, утюге и других электрических устройствах

 

 

 

Настроить DMA на приём?

рискнёте по битому полю настраивать dma ? ребята, что с вами ? я вас умоляю

 

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


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

Просмотрел ветку. Вы об этом?

 

 

 

Ну сброс состояния по таймауту это хорошый вариант. А у пакета есть особая сигнатура начала? Она эскейпится и не встречается в потоке данных?

Эта сигнатура отслеживается не смотря на байт длины пакета? Т.е. вариант испорченного байта длины и приёма лишних байтов таки решен? Или достоверность длины обеспечивается уровнем ниже?

 

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

 

На принятый запрос от центрального устройства следует немедленный ответ от адресуемого устройства. Если его нет, то центральное устройство делает перерыв дольше таймаута (приемники между байтами ждут таймаута) и все кто не был синхронизирован на начало сбрасываются. Центральное устройство перепосылает пакет еще несколько раз и если не один не дошел, то периферийное устройство отмечается как отсутствующее и больше к нему не обращаются. Политику как повторять обращения можете придумать сами. То ли оператот должен вмешаться, а может через несколько часов снова попробовать.

 

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

Для скорости 9600 -- 3 миллисекунды таймаут работает прекрасно. Центральное устройство при сбое замирает на 5 миллисекунд. Передачи идут без перерывов и все синхронизированы.

 

Настроить DMA на приём?

 

В таком случае надо непременно первый байт или несколько иметь в виде длины :) Или принимать фиксированную длину. Или обрабатывать поток, который не имеет права остановиться и отвечать асинхронно, что сильно усложняет протокол.

 

Я на 8051 и PIC16C71 писал. Там нет ПДП.

 

рискнёте по битому полю настраивать dma ? ребята, что с вами ? я вас умоляю

 

Таймаут спасет отца русской демократии. Не настраивать ПДП, а ставить длину пакета. Вас послушать и окажется что никто никогда не использует ПДП для последовательного интерфейса. Ну разве если кто втихаря вас ослушается по недомыслию.

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


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

Не настраивать ПДП, а ставить длину пакета.

чтобы использовать байт длины пакета вы обязаны защитить его/заголовок при помощи контрольного или восстанавливающего кода

вы это сделали ?

 

Вас послушать и окажется что никто никогда не использует ПДП для последовательного интерфейса

вас послушать, так окажется, что никто никогда и пальцы в розетку не суёт

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

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


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

чтобы использовать байт длины пакета вы обязаны защитить его/заголовок при помощи контрольного или восстанавливающего кода

вы это сделали ?

 

 

вас послушать, так окажется, что никто никогда и пальцы в розетку не суёт

 

Ну, профилактический перетрях от розетки иногда прочищает мозги от дурных мыслей :biggrin:

 

А что с длиной и пдп непонятного, всегда есть какой-либо буфер, у него есть макс. длина. Ну приняли в длине пакета размер, больше, чем буфер - сразу в отвал,а меньше, дак и настраивайте пдп на прием... Ну примет он пакет с ошибкой, сбросится и делов-то :laughing: Или что, боитесь за него, что устанет? :biggrin: Ясно дело, пихать первую попавшуюся длину, без этой проверки будет только конкретный буратино..

Изменено пользователем mantech

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


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

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

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

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

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

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

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

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

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

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