Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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.073 c
15-1328526701
2222
2012-02-06 15:11
2013.03.22
Вырезать полигон из полигона


15-1338546220
MacroDenS
2012-06-01 14:23
2013.03.22
Посоветуйте чтиво по сервисам.


15-1345250502
RGV
2012-08-18 04:41
2013.03.22
Товарищи! Нужна помощь!


2-1345735828
Dennis I. Komarov
2012-08-23 19:30
2013.03.22
TService + User SYSTEM + поток + ODBC = Источник данных не на...


3-1280406421
Alekcey
2010-07-29 16:27
2013.03.22
raised exception ... in module IDODBC32.DLL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский