| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Com порт |
| Автор: AlexNor 23.9.2004, 10:23 | ||
А что это за 9-й бит такой??? Как его читать\устанавливать в программе??? Везде излазил - но все пишут что можно но никто не говорит как?! ПОМОГИТЕ! |
| Автор: Darked 23.9.2004, 21:17 |
| Классический пример протокола для RS232. 9-ый бит - бит паритета. Смотря на чем ты пишешь и с использованием каких средств, зависит как его савить/снимать. |
| Автор: AlexNor 24.9.2004, 13:26 | ||
| Darked в смысле бит чётности? если да то тогда не понятно как с ним работать. Пишу на С++. Проблема в чём: для передачи байта
т.е. я хочу передать один байт с установленым битом чётности а другой нет. Но возникает проблема а при приёме как мне узнать у какого из принятых байт установлен бит чётности, а у какого нет??? Ведь ReadFile возвращает токо сам байт! |
| Автор: Russ 24.9.2004, 14:18 | ||
9-й бит и бит паритета - это две обсолютно разные вещи. 9-й бит поддерживают некоторые микроконтроллеры, например MCS 51, и он прибавляется аппаратно. Его назначение может быть различное, в зависимости от применяемого программного решения. Обычно 9 бит исрользуют при обмене информации с другими микроконтроллерами. В PC RS-232 9 бит не поддерживает. |
| Автор: AlexNor 24.9.2004, 14:39 | ||
| Из описания: "Давтчик является автономным устройством на интерфейсе RS485". Точно - что он работает с PC. (есть прога с которой он общается - она под винду-но исходников её нету По документации сказано только что при передаче байта с адресом неободимо установить КОНТРОЛЬНЫЙ РАЗРЯД в 1. При передаче информационных байт КОНТРОЛЬНЫЙ РАЗРЯД долженн равнятся 0. Я вот и не пойму: Что это за контрольный разряд такой - в одном форуме выцепил вот-что
это то что мне нужно. Но токо как с ним работать под виндой ума не приложу - и нигде ни слова об этом! Отослать байты - пол беды. Вроде через SetCommState я могу установить с каким битом чётности (установленным или нет) передавать байт, НО КАК МНЕ ПРИНЯТЬ этот байт так что бы посмотреть - установлен ли там бит чётности или нет - незнаю |
| Автор: Darked 24.9.2004, 21:58 |
| Russ Может я чего - то не понимаю, а в чем разница??? При передачи по RS232 бит паритете и используется обычно для отделения данных от адреса. ИМХО так. |
| Автор: AlexNor 24.9.2004, 22:33 |
| Darked да-да-да!!! НО КАК ПОД ВИНДУ ЭТО СДЕЛАТЬ??? |
| Автор: Darked 25.9.2004, 00:00 |
| AlexNor Думаю, мануаы просматриваю,исхдоники....ищу |
| Автор: AlexNor 25.9.2004, 09:58 | ||||
| Darked спасибо я уже третий день инет лопачу - и нефига Пробовал и так: 1. передавал два байта предварительно установив
2. передавал два байта предварительно установив
При приемё каждого байта вызывал GetCommState - результат отрицательный - он мне возвращал свои настройки (настройки принимающей стороны). Может через DeviceIoControl как-то можно - я туда залез - дебри.... |
| Автор: Gorlum 25.9.2004, 14:18 |
| 9-й бит это бит четности, ты должен ставить его перед передачей. Если хош, я могу тебе дать пару доков по УАРТу (конспекты електронные с политеха остались) |
| Автор: AlexNor 25.9.2004, 14:35 | ||||
| Gorlum я и ставлю перед передачей:
проблема в том что я его принять не могу (бит чётности этот). В смысле ReadFile возвращает токо байт! и всё! А с каким он битом чётности пришёл - это знает токо драйвер наверное. Т. е. я хочу узнать: как в Win32 API у каждого принятого байта анализировать с каким битом чётности он пришёл???
давай, буду благодарен - авось там есть что нить по этому поводу for_delit10@mail.ru |
| Автор: Gorlum 25.9.2004, 14:45 |
| Тебе не надо его принимать он устанавливается непосредственно при передаче информации, и если ты принимаешь какой либо байт то бит четности еденица, бо без него низзя передать ниче. То шо ты мне код переслал я дупля не отбиваю, я пока что пишу свой первый калькулятор на цпп, я больше по микроконтроллерам. Ща перешлю на мыло доки но они правда тоже больше по железу но про бич четности там гденить быть обязано. |
| Автор: Gorlum 25.9.2004, 14:59 |
| Отправил, если шо, стукни в асю 124944684 |
| Автор: AlexNor 25.9.2004, 15:27 |
| Gorlum принимать-то как раз мне его и надо инфу принял - но там (в основном) электронная часть... |
| Автор: Gorlum 25.9.2004, 18:23 | ||
| Ты можешь что нибудь получить без этого бита, или тебе именно надо организовать ожидание начала передачи? Если при помощи ReadFile ты можешь осуществлять прием, тебе не надо ловить этот бит - если передача началася то он стоит, нет значит нет передачи. Если те надо именно ожидать его появления я бы посоветовал написать это на асме
на кой черт тебе надо принимать этот бит? |
| Автор: Darked 25.9.2004, 18:43 |
| Gorlum Прочитай еще раз его вопорс ; ))))) А если серьезно, то по протоколу данные от адреса отличаются установкой 9-го бита. ВотAlexNor 'у и нужно определять установку или отсутствие этого бита, чтобы понять что же ему пришло. |
| Автор: AlexNor 25.9.2004, 22:10 | ||
| Darked я тут что то нарыл с DeviceIoControl. Из MSDN (ms-help://MS.MSDNQTR.2003APR.1033/devio/base/ioctl_serial_lsrmst_insert.htm)
Но блин я эту функцию понять не могу! |