Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Вниз9 bit / бит четности Найти похожие ветки
← →
plr (2012-11-17 21:02) [0]Надо взаимодействия с устройством по ком-порту. Скорость 9600. А вот протокол 9 битный. По физическим данным 9 бит "ложится" на бит чётности.
Как его устанавливать при передаче устройству - я знаю. А вот как проверять с каким битом четности пришел байт от устройства - не пойму. Как посмотреть значение бита четности?
← →
Германн © (2012-11-17 21:07) [1]
> А вот как проверять с каким битом четности пришел байт от
> устройства
А зачем это нужно проверять?
← →
Pavia © (2012-11-17 21:15) [2]
> Как его устанавливать при передаче устройству - я знаю.
> А вот как проверять с каким битом четности пришел байт от
> устройства - не пойму. Как посмотреть значение бита четности?
>
Вы ничего не знаете.
← →
Jeer © (2012-11-17 22:25) [3]
> Надо взаимодействия с устройством по ком-порту
Иди учись.
← →
plr (2012-11-18 16:58) [4]Сходил выучился. Что в моем вопросе некорректно?
Если у кого сомнения про 9 бит, что я говорю ерунду, то почитайте, например, вот это про 485 интерфейс: http://mayak-bit.narod.ru/rs485.html
Вот цитата оттуда:
> 2). Можно организовать протокол с непосредственной передачей
> двоичных данных. При этом управляющие символы и байты данных
> различаются с помощью настройки дополнительного девятого
> бита в UART. Для управляющих символов этот бит устанавливается
> в "1". Первым в посылке передается управляющий символ с
> единичным девятым битом - остальные его "нормальные" биты
> могут содержать адрес устройства-получателя, признак начала/конца
> посылки и что-нибудь еще. Затем передаются байты данных
> с нулевым девятым битом. Все принимающие устройства узнают
> по девятому биту управляющий символ и по содержанию его
> остальных битов определяют, кому адресованы последующие
> данные. Адресуемое устройство принимает данные, а все остальные
> игнорируют их до следующего управляющего символа.
>
← →
Германн © (2012-11-18 17:52) [5]
> Если у кого сомнения про 9 бит, что я говорю ерунду
Тебе нужно разработать "принимающее устройство"? Или все таки программу управления "принимающими устройствами"?
Если первое, то я так и быть подскажу как узнать чему равен 9-й бит в принятом байте. А если второе, то 9-й бит всегда равен нулю!
← →
Plr (2012-11-18 18:26) [6]Принимающее устройство. Т е я должен определить во входящем потоке байтов те, у которых поднят бит четности, причем отправляющее устройство устанавливает бит четности исходя из своего протокола, а не как принято в UART RS-232: чет, нечет и т.п. Я знаю, что некотоые UART не передают установленный отправителем бит четности, а сами его считают, проверяют и передают. Но это уже другая тема. Я это учел.
Будьте любезны, скажите как определять какой бит четности установил отправитель?
← →
Германн © (2012-11-18 18:45) [7]
> Plr (18.11.12 18:26) [6]
>
> Принимающее устройство.
Тогда говори на какой элементной базе хочешь его сделать?
← →
Anatoly Podgoretsky © (2012-11-18 19:06) [8]Смотри в WinAPI там много функций по работе с DCB
← →
Германн © (2012-11-18 19:11) [9]
> Anatoly Podgoretsky © (18.11.12 19:06) [8]
Обломится без собственного драйвера определять 9-й бит для каждого принятого байта. :)
← →
Anatoly Podgoretsky © (2012-11-18 19:32) [10]> Германн (18.11.2012 19:11:09) [9]
Это его проблемы, никто не обещал что это будет просто при работе с
коммуникационным устройством. На работу с компонентами по данной проблеме
люди тратили более двух лет. И мне кажется что вряд ли он умеет читать по
английски и тем более задавать вопросы гуглю, а на русском вряд ли есть
примеры.
В MS SDK есть только краткие описания, без прмеров. В общем не завидую.
← →
Plr (2012-11-18 20:05) [11]Я на эстонском нашел инструкцию переведенную с иврита, адаптированную для пенсионеров. Спасибо!
← →
kilkennycat © (2012-11-18 22:38) [12]странно. сначала используют свой протокол, а потом не хотят писать свой драйвер, а работать со стандартным, который знает не этот протокол, а тот, который почему-то помешало использовать изначально.
Я уж промолчу, что согласно спецификации, COM-порт - это COM-порт, а не разъем, в который можно пихать че захочется без соответствующих адаптеров.
← →
plr (2012-11-18 23:21) [13]Протокол стандартизирован и используется по всему миру в миллионах устройств, это multi-drop bus. Он не адаптирован к подключению к ПК RS-232. Требуются конвертеры уровней. Передаваемые данные состоят из 9 бит. Используется бит четности в RS-232. Вопрос, как его считать у полученных данных.
DCB - это структура описываемая данные, я не понимаю как ее можно использовать для определения бита чётности у каждого полученного байта.
С передачей значения в бите чётности я решил. Если надо передать с битом чётности, то временно устанавливаю флаг Mark, в других случаях - Space. Осциллографом проверял - есть нужное значение бита.
← →
Германн © (2012-11-19 00:07) [14]
> DCB - это структура описываемая данные, я не понимаю как
> ее можно использовать для определения бита чётности у каждого
> полученного байта.
Никак. Для определения значения 9-го бита нужен прямой доступ к портам ввода/вывода. А в ОС Windows такой доступ есть только у драйверов.
Так что облом :(
← →
Германн © (2012-11-19 00:15) [15]Точнее теоретически есть один способ узнать значение 9-го бита. Это проверять есть или нет события CE_RXPARITY. Но работать этот способ будет только при передаче по одному байту с достаточно большими интервалами между байтами.
← →
plr (2012-11-19 00:20) [16]Ну ок. Хотя бы можно. Вообще я прототипирую (мне так быстрее и удобнее) на Delphi, а проект консольный на C под embedded linux.
← →
RWolf © (2012-11-19 01:02) [17]проще тогда уж и прототипировать под этим самым эмбеддед, по крайней мере, будет возможность использовать периферию платы; может, и с 9-м битом что получится.
← →
Германн © (2012-11-19 01:38) [18]
> plr (19.11.12 00:20) [16]
>
> Ну ок. Хотя бы можно. Вообще я прототипирую (мне так быстрее
> и удобнее) на Delphi, а проект консольный на C под embedded
> linux.
В данном конкретном случае "прототипирование" на Дельфи ни чем не поможет.
Лучше сразу обращайся на форумы по Си (не путать С и С++). А ещё лучше на форумы по embedded linux, если таковые существуют.
P.S.
Если бы нашёлся хоть кто-то, кто объяснил бы мне необходимость разработки slave-устройства (в терминах протокола multi-drop bus) на персональном компьютере, я был бы рад своими ушами услышать его доводы.
← →
brother © (2012-11-19 04:45) [19]> А вот как проверять с каким битом четности пришел байт
> от устройства
тут понятие не байта а байта и + 1 бит! надеюсь они вместе идут всегда! это важно...
такое не помогает?: принимаем первый байт и второй... из второго выбираем первый бит, остальное ждет до накопления еще одного байта + бит?
если не поможет, то имхо без спец драйвера не обойтись...
← →
brother © (2012-11-19 04:47) [20]> такое не помогает?: ...
хотя, это былоб просто...
← →
БарЛог © (2012-11-19 09:25) [21]Удалено модератором
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.065 c