mantech 34 2 августа, 2017 Опубликовано 2 августа, 2017 (изменено) · Жалоба И охота вам спорить с религиозным человеком? Да уж... Просто есть люди, которые берут и решают поставленную задачу на основе решений, которые стандартны и работают годами, а есть и такие, которые получают удовлетворение в самом решении, и началось, вот так лучше, а вот так еще, я же хочу что-то гениальное придумать, а не как те, укуренные... Потом перфекционизм включается на полную и уже кто во что горазд... Иногда встречаешься с подельями таких любителей, со стандартным подходом все просто, а тут... хрен разберешься :rolleyes: Изменено 2 августа, 2017 пользователем mantech Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sigmaN 0 2 августа, 2017 Опубликовано 2 августа, 2017 · Жалоба Сделаете как я посоветовал и никаких проблем у вас не будет. Передатчик с приемником будут легко синхронизироваться на начало пакета, а это главный гемор в подобных системах.Просмотрел ветку. Вы об этом? Ага я тоже делал и даже с многими узлами. Один центральный и много периферийных. первый байт пакета длина, последний контрольная сумма. Если в середине приема пакета дольше таймаута перерыв, что сброс машины состояний приемника на прием. Каждый пакет получает ответ. Ответ зависит от типа пакета. Центральное устройство опрашивает периферийные, а периферийные отвечают. Периферийные никогда не начинают передачу пока не спросят. Как-то так. Работает прекрасно во многих проектах, которые много лет успешно на рынке. Ну сброс состояния по таймауту это хорошый вариант. А у пакета есть особая сигнатура начала? Она эскейпится и не встречается в потоке данных? Эта сигнатура отслеживается не смотря на байт длины пакета? Т.е. вариант испорченного байта длины и приёма лишних байтов таки решен? Или достоверность длины обеспечивается уровнем ниже? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Николай Семёнович 0 2 августа, 2017 Опубликовано 2 августа, 2017 (изменено) · Жалоба Не обращайте внимания на камлания некоторых товарищей. Они ведь не рассказывают как надо. Они рассказывают, что все предлагают неправильно. +100. Надо сразу определиться "Вам шашечки? Или ехать?"© Если "шашечки", то это к Огурцову энд компани. А если нужно реально дело делать - то слушайте остальных Да уж... Просто есть люди, которые берут и решают поставленную задачу на основе решений, которые стандартны и работают годами, а есть и такие, которые получают удовлетворение в самом решенииe: +100. Топикстартер относиться ко 2-й категории. Которому главное "шашечки", а не "ехать". Так что я пас что-то ему объяснять. А просто для попи... "поговорить" на форуме есть куда более интересные темы, чем "как два байта передать по уарту" Это последнее, что я написал в этой теме. Изменено 2 августа, 2017 пользователем Николай Семёнович Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VCucumber 0 2 августа, 2017 Опубликовано 2 августа, 2017 (изменено) · Жалоба Это последнее, что я написал в этой теме. слава аллаху и иисусу, свершилось сброс состояния по таймауту это хорошый вариант отвратительный вариант - нужно на каждый пакет в окне заводить таймер и прыгать по прерыванию если чо которые стандартны и работают годами а hdlc не стандартный, не работает, не годами ? Передатчик с приемником будут легко синхронизироваться на начало пакета, а это главный гемор в подобных системах. правильно, совершенно согласен но вот тема байта длины при этом вами не раскрыта Задача решается элементарно — путём предложения заказчику либо начать неопределённого размера затраты с ТЭО на снятие картины помех, причём, сперва выждать, когда соизволит начать работать "плазма", либо однократно и окончательно оплатить три метра металлорукава и работу по его монтажу. мне больше нравится нулевой вариант - реализация нормального протокола, а не надежда на то, что кабель толстый и ошибок в нём вдруг никогда не произойдёт А поставить 485, дифференциальный, экранированный? нет Изменено 2 августа, 2017 пользователем Огурцов Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 34 2 августа, 2017 Опубликовано 2 августа, 2017 · Жалоба а hdlc не стандартный, не работает, не годами ? Не знаю, я его нигде не использовал. :laughing: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
PheeL 0 3 августа, 2017 Опубликовано 3 августа, 2017 · Жалоба правильно, совершенно согласен но вот тема байта длины при этом вами не раскрыта Настроить DMA на приём? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VCucumber 0 3 августа, 2017 Опубликовано 3 августа, 2017 · Жалоба Не знаю, я его нигде не использовал подозреваю, вы его постоянно используете, только не догадываетесь - в компьютере, телефоне, холодильнике, утюге и других электрических устройствах Настроить DMA на приём? рискнёте по битому полю настраивать dma ? ребята, что с вами ? я вас умоляю Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tarbal 4 4 августа, 2017 Опубликовано 4 августа, 2017 · Жалоба Просмотрел ветку. Вы об этом? Ну сброс состояния по таймауту это хорошый вариант. А у пакета есть особая сигнатура начала? Она эскейпится и не встречается в потоке данных? Эта сигнатура отслеживается не смотря на байт длины пакета? Т.е. вариант испорченного байта длины и приёма лишних байтов таки решен? Или достоверность длины обеспечивается уровнем ниже? Каждый пакет имеет первым байтом длину, а последним контрольную сумму. Если у принятого пакета не совпала контрольная сумма, то машина состояний приемника сбрасываетсяи прием начинается снова. Каждое периферийное устройствоимеет уникальный адрес, который идет следом за длиной пакета. Не на свои пакеты никто не отвечает. На принятый запрос от центрального устройства следует немедленный ответ от адресуемого устройства. Если его нет, то центральное устройство делает перерыв дольше таймаута (приемники между байтами ждут таймаута) и все кто не был синхронизирован на начало сбрасываются. Центральное устройство перепосылает пакет еще несколько раз и если не один не дошел, то периферийное устройство отмечается как отсутствующее и больше к нему не обращаются. Политику как повторять обращения можете придумать сами. То ли оператот должен вмешаться, а может через несколько часов снова попробовать. После приема контрольной суммы таймаут сбрасывается. Для скорости 9600 -- 3 миллисекунды таймаут работает прекрасно. Центральное устройство при сбое замирает на 5 миллисекунд. Передачи идут без перерывов и все синхронизированы. Настроить DMA на приём? В таком случае надо непременно первый байт или несколько иметь в виде длины :) Или принимать фиксированную длину. Или обрабатывать поток, который не имеет права остановиться и отвечать асинхронно, что сильно усложняет протокол. Я на 8051 и PIC16C71 писал. Там нет ПДП. рискнёте по битому полю настраивать dma ? ребята, что с вами ? я вас умоляю Таймаут спасет отца русской демократии. Не настраивать ПДП, а ставить длину пакета. Вас послушать и окажется что никто никогда не использует ПДП для последовательного интерфейса. Ну разве если кто втихаря вас ослушается по недомыслию. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VCucumber 0 4 августа, 2017 Опубликовано 4 августа, 2017 (изменено) · Жалоба Не настраивать ПДП, а ставить длину пакета. чтобы использовать байт длины пакета вы обязаны защитить его/заголовок при помощи контрольного или восстанавливающего кода вы это сделали ? Вас послушать и окажется что никто никогда не использует ПДП для последовательного интерфейса вас послушать, так окажется, что никто никогда и пальцы в розетку не суёт Изменено 4 августа, 2017 пользователем Огурцов Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 34 4 августа, 2017 Опубликовано 4 августа, 2017 (изменено) · Жалоба чтобы использовать байт длины пакета вы обязаны защитить его/заголовок при помощи контрольного или восстанавливающего кода вы это сделали ? вас послушать, так окажется, что никто никогда и пальцы в розетку не суёт Ну, профилактический перетрях от розетки иногда прочищает мозги от дурных мыслей А что с длиной и пдп непонятного, всегда есть какой-либо буфер, у него есть макс. длина. Ну приняли в длине пакета размер, больше, чем буфер - сразу в отвал,а меньше, дак и настраивайте пдп на прием... Ну примет он пакет с ошибкой, сбросится и делов-то :laughing: Или что, боитесь за него, что устанет? Ясно дело, пихать первую попавшуюся длину, без этой проверки будет только конкретный буратино.. Изменено 4 августа, 2017 пользователем mantech Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться