![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
RS232 - контроль чётности, что делать? [D5, Win95/98]
Varfolomey © (2002-01-20 20:29:00)Проблема примерно такая:
1. Как изменять в передоваемом байте 9 бит т.е. по желанию забивать туда 1 или 0;
2. Как определить в пришедшем байте 9 бит 1 или 0;
( Да я использую DCB настройки
для передачи WriteFile
для получения ReadFile ).
SoftOne (2002-02-04 04:02:00) [1]> Varfolomey
Укажи, что тебе, конкретно, нужно.
Varfolomey (2002-02-03 22:51:00) [2]>SoftOne проблемма ещё не решина, дело в том что прога на WaitCommEvent просто зависает, может я её неправильно использую?
Если не сложно напиши маленький пример её использования!!!
af (2002-01-30 13:13:00) [3]да не только 51 , мной любимый PIC контроллеры позволяют работать с 9 битом..
насчет как посмел- я передаю предположим с виндоса 9 бит равным 1 , т.е. пусть этот байт яв-ся командой, следующий инф. байт, должен передаваться 9 битом =0 , я устанавливаю и передаю, а в результате бит меняется только через пару передач :(
SjftOne (2002-01-30 02:36:00) [4]> af
Твоя ситуация далеко не оригинальна. В "неких железяках", действительно часто применяются процессоры семейства 51, а у последних, действительно реализованы различные режимы приема даныых и према адреса.
>К сожалению на ходу windows почему то отказался менять бит и >пришлось все реализовать немножко по другому , посложнее >получилось ... :(
А вот это - действительно непонятно. Как Он (Windows) посмел отказаться?
af (2002-01-28 17:22:00) [5]не знаю для чего понадобилось Varfolomey , мне тоже самое нужно было год назад, но я так и не смог осуществить . А мне нужно было для того что бы отличать коды операции от инф. кодов, т.е. управлять некой железякой , просто тот контроллер, который работал в составе железки понимал 9 бит. и в завис. от того что там забито различал бы команды от данных. К сожалению на ходу windows почему то отказался менять бит и пришлось все реализовать немножко по другому , посложнее получилось ... :(
Фэ (2002-01-28 12:40:00) [6]Дело не в одаренности или отсутствии таковой.
Не все программисты хорошо понимают процессы происходящие при взаимодействии их программ с "железом" компьютера или внешними устройствами. Как правило,это связано с отсутствием элементарной грамотности в электронике цифровой или аналоговой.
Затеявший эту дискуссию похоже подпадает под эту категорию.
EsKor (2002-01-28 04:02:00) [7]Фэты прав, не спорю. Хотя старт- и стоп- биты рассматриваются как информационные с точки зрения затрат на прием/передачу, загрузки канала передачи (трафика), времени необходимого на передачу.
Varfolomeyдля меня твоя последняя информация от 25.01.02 20:46 откровение в части: "В начале передаётся СТАРТОВЫЙ БИТ, Затем информационные биты от 4 до 8, Затем бит чётности (если включена)...". Конкретно - это наличие восьмиинформационных бит и плюс к ним бита четности. Если можно поясни сеё утверждение.
Varfolomey (2002-01-25 20:46:00) [8]Большое спасибо ВСЕМ за ясный и краткий ответ, хотя полезную информацию напмсал только SoftOneвсе раскинув пальцы веером полезли доказывать крутость всем и каждому не удосужевшись внимательно почитать вопрос.
Под "9-м битом" и подразумевался БИТ ЧЁТНОСТИ!!!
PS:Для ОСОБО одарённых (XM-AD, Фе,...) при передаче байт:
В начале передаётся СТАРТОВЫЙ БИТ,
Затем информационные биты от 4 до 8,
Затем бит чётности (если включена),
Затем стоп бит.
Всем Спасибо за "Помощь"!
Фэ (2002-01-25 10:56:00) [9]Можно привести расшифровку определения "информация" так
по Фишеру (инф. о результате эксперимента)
по Шеннону (передаваемая инф-я)
по Бриллюэну (структурная инф-я)
По данному вопросу обсуждался второй случай и именно поэтому,
стартовые и стоповые сигналы являются информационными, хотя и служебными.
Поскольку мы говорим о двоичном кодировании, то вполне уместным является использование единицы изм. бит для обозначения логических уровней.
Если говорить о формате передаваемых данных, то уместно употребить термин слово, оговаривая вариации его размера.
На физическом уровне, естественно, надо говорить о ширинах импульсов относительно базового периода.
Именно здесь и возникло неудачное определение 1.5 строба как бита.
EsKor (2002-01-25 03:51:00) [10]Господа программисты! Хотя эта дисскусия превращается уже в некую болтовню, позволю себе некоторые замечания по этому вопросу. Пишущие о 9-ом (10-ом, 11-ом и т.д.) бите не заводите рака за камень. Бит и байт - это носители информации и байт всегда был и будет состоять из 8 битов. Если меньше - то говорят о неполном байте, в частности 4 бит - полубайт, больше - это уже СЛОВО (обычно 2 байта). Можете возразить и сказать, что вот мы же можем установитьв РАЗМЕР БАЙТА 5, 6 или 7 бит! Да, это так, но это просто неудачное название из-за того, что никто не смог придумать другое короткое и понятное. Что касается стартовых и стоповых битов, то правильнее было бы говорить о стартовых и стоповых стробах, но закрепилось название "бит". По крайней мере носителями информации как таковой они не являются. Присутствуют они только как неизбежная необходимость, чтобы аппаратура на разных концах кабеля могла нормально обмениваться информацией.
AlexY (2002-01-24 12:22:00) [11]И Подгорецкий как всегда прав! только приписки про трей почему то нет!))
Anatoly Podgoretsky (2002-01-24 08:10:00) [12]Sergey_n © (23.01.02 01:29)
Ты всю жизь думал неправильно, известное заблуждение, что в байте только 8 бит.
SoftOne (2002-01-24 02:46:00) [13]2 XM-AD © (23.01.02 11:25)
Ну ты дал! Кто-же ПАЛОЧКАМИ ест Чаппи?
Фэ (2002-01-23 15:35:00) [14]Этот бред несет Варфоломей - он уже научился передавать 9-й бит.
Читать документацию похоже надо XM-AD.
Мне ее и читать не надо по этому вопросу - даже разряды UART до сих пор помню.
По протоколу RS-232 передаются от 5 до 8 информационных бит младшим вперед.
Информационные биты обрамляются аппаратно (контроллером) служебными битами
СТАРТ-ИНФ-ЧЕТН-СТОП
Стартовый - 1 бит
Четности(нечетности) - один бит, опционально.
Стоповых могут быть 1; 1,5 и 2.
Стоповый 1,5 применялся при 5 инф. битах для совместимости
со старыми телетайпами (слышали про такое ?)
Таким образом, если считать бит четности информационным - он является 9-м.
XM-AD (2002-01-23 11:25:00) [15]To Varfolomey > А зачем вообще было мудрить с девятым битом??? Все равно один бит ты не передашь!!! В любом случае передается два байта!!! Ты не можешь передать стоп-бит в середине посылки, он все равно прочитается как информация на принимающей стороне! Т.е. у тебя теряется минимум 6 бит!!! И что же тогда ты выигрываешь?
То Фэ > Где это ты слышал что бы в байте было девять бить!?БРЕД!!! Под контроль четности всю жизнь отводили восьмой и, если надо было, еще седьмой биты!!! Читайте документацию, справочники!!!
gepard (2002-01-23 10:31:00) [16]Насколько я понял, то для установления(сброса) 9 бита необходимо закрывать и открывать порт? А это ведь занимает какое-то время, да и код некрасивый получается...
SoftOne (2002-01-23 02:32:00) [17]2 Varfolomey (22.01.02 21:47)
Используй функцию: WaitCommEvent
"The WaitCommEvent function waits for an event to occur for a specified communications device."
Фэ (2002-01-23 01:35:00) [18]Век живи - век учись.
9-й бит - это контроль четности(нечетности).
Байтом назвать можно с натяжкой.
Sergey_n (2002-01-23 01:29:00) [19]Странно, а всю жизнь думал, что байте 8 бит.........
Varfolomey (2002-01-22 21:47:00) [20]Как проверять наличие ошибки? Укажите на функцию (процедуру) дальше я разберусь!