Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.049 c
1-1260020917
defen
2009-12-05 16:48
2013.03.22
асинхронное шифрование rsa


15-1340919817
guest
2012-06-29 01:43
2013.03.22
Сбой при подключении к прокси-серверу...


15-1335645002
Юрий
2012-04-29 00:30
2013.03.22
С днем рождения ! 29 апреля 2012 воскресенье


6-1264678262
madacar
2010-01-28 14:31
2013.03.22
Поиск письма на сервере


15-1337665496
Василий3005
2012-05-22 09:44
2013.03.22
Как не потерять клиента?