Вот возникла проблема: есть некий девайс подключаемый к ком порту, вот цитата из спецификации:
Данные передаются при помощи последовательного набора байтов. Каждый байт содержит 11 бит: старт-бит, восемь бит данных, бит четности, стоп-бит. Скорость передачи 9600 бод. Контроль по четности не производится.
(бит четности используется для дополнительных целей, и меняется вручную при передаче)
Как мне DCB структуру заполнить что бы такие байты передавать?
Re: COM порт
От:
Аноним
Дата:
16.03.07 08:35
Оценка:
Здравствуйте, Hamper, Вы писали:
H>Вот возникла проблема: есть некий девайс подключаемый к ком порту, вот цитата из спецификации: H>
H>Данные передаются при помощи последовательного набора байтов. Каждый байт содержит 11 бит: старт-бит, восемь бит данных, бит четности, стоп-бит. Скорость передачи 9600 бод. Контроль по четности не производится.
H>(бит четности используется для дополнительных целей, и меняется вручную при передаче) H>Как мне DCB структуру заполнить что бы такие байты передавать?
Какую структуру?
Берешь слово и битовыми операторами | и & формируешь нужный пакет
Здравствуйте, Аноним, Вы писали:
А>Какую структуру? А>Берешь слово и битовыми операторами | и & формируешь нужный пакет
я спрашивал про структуру DCB используемую например в SetCommState, какие значения в ней установить для таких свойств как StopBits, ByteSize, и как я буду через ReadFile, WriteFile передавать 11-битные пакеты?
(просто с ком портом я практически не работал и никак не могу понять смысла таких вещей как например полтора стоповых бита при установке StopBits в единицу...)
Здравствуйте, Hamper, Вы писали:
H>Вот возникла проблема: есть некий девайс подключаемый к ком порту, вот цитата из спецификации: H>
H>Данные передаются при помощи последовательного набора байтов. Каждый байт содержит 11 бит: старт-бит, восемь бит данных, бит четности, стоп-бит. Скорость передачи 9600 бод. Контроль по четности не производится.
H>(бит четности используется для дополнительных целей, и меняется вручную при передаче) H>Как мне DCB структуру заполнить что бы такие байты передавать?
хм... > Каждый байт содержит 11 бит: старт-бит, восемь бит данных, бит четности, стоп-бит. > Контроль по четности не производится.
? эти монетны мне немного непонятны. они противоречат друг другу...
в первом случае получается 10битная посылка (8бит данных+1четность+1стоп (старт бит не считается)).
во втором — 9битная (8данных+1стоп).
скорее всего нужна 9битная посылка. можно воспользоваться функцией
Здравствуйте, Hamper, Вы писали:
H>Здравствуйте, Аноним, Вы писали:
А>>Какую структуру? А>>Берешь слово и битовыми операторами | и & формируешь нужный пакет
H>я спрашивал про структуру DCB используемую например в SetCommState, какие значения в ней установить для таких свойств как StopBits, ByteSize, и как я буду через ReadFile, WriteFile передавать 11-битные пакеты? H>(просто с ком портом я практически не работал и никак не могу понять смысла таких вещей как например полтора стоповых бита при установке StopBits в единицу...)
11 битные посылки это внутренние компортовские дела. он сам формирует дополнительные (служебные биты).
при вызове ReadFile, WriteFile ты будешь работать с обычными 8битными байтами.
Здравствуйте, ERROR_ALREADY_EXISTS, Вы писали:
ERR>хм... >> Каждый байт содержит 11 бит: старт-бит, восемь бит данных, бит четности, стоп-бит. >> Контроль по четности не производится. ERR>? эти монетны мне немного непонятны. они противоречат друг другу... ERR>в первом случае получается 10битная посылка (8бит данных+1четность+1стоп (старт бит не считается)). ERR>во втором — 9битная (8данных+1стоп).
ERR>скорее всего нужна 9битная посылка. можно воспользоваться функцией ERR>...
А может и 10 — бит чётности передаётся, а проверки нет. Никогда не пробовал этот режим, но imho структура DCB этого не запрещает.
---
The optimist proclaims that we live in the best of all possible worlds; and the pessimist fears this is true
Re: COM порт
От:
Аноним
Дата:
16.03.07 11:05
Оценка:
Здравствуйте, Hamper, Вы писали:
H>Вот возникла проблема: есть некий девайс подключаемый к ком порту, вот цитата из спецификации: H>
H>Данные передаются при помощи последовательного набора байтов. Каждый байт содержит 11 бит: старт-бит, восемь бит данных, бит четности, стоп-бит. Скорость передачи 9600 бод. Контроль по четности не производится.
H>(бит четности используется для дополнительных целей, и меняется вручную при передаче) H>Как мне DCB структуру заполнить что бы такие байты передавать?
fParity
Specifies whether parity checking is enabled. If this member is TRUE, parity checking is performed and errors are reported.
Parity
Specifies the parity scheme to be used. This member can be one of the following values:
Value Meaning
EVENPARITY Even
MARKPARITY Mark
NOPARITY No parity
ODDPARITY Odd
=====
Итого: fParity = 1; // включить бит четности
а перед передачей выставляешь: Parity=MARKPARITY или Parity=NOPARITY; // установка бита четности в 1 или 0
Примерно так.
Re: COM порт
От:
Аноним
Дата:
16.03.07 12:25
Оценка:
Здравствуйте, Hamper, Вы писали:
H>Вот возникла проблема: есть некий девайс подключаемый к ком порту, вот цитата из спецификации: H>
H>Данные передаются при помощи последовательного набора байтов. Каждый байт содержит 11 бит: старт-бит, восемь бит данных, бит четности, стоп-бит. Скорость передачи 9600 бод. Контроль по четности не производится.
На счет старт-бита не скажу, можешь так попробовать:
Всем большое спасибо. Я сегодня подумал так же. Просто меня сбило с току то что там было написано 11 бит
p.s.: а бит четности там используется для того что бы помечать байты обозначающие адрес устройства (бит равен 1), остальные байты передаются с битом четности равным 0, но это уж я сам наверное сделаю