|
RS232 9-ти битный формат, RS232 9-ти битный формат |
|
|
|
Apr 4 2007, 21:23
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 9-04-06
Пользователь №: 15 961

|
В микроконтроллерах в модуле UART есть 9-ти битный адресный режим. Кто-нибудь пробовал организовать связь, используя этот режим между ПК и контроллером? Непонятно как настроить такой режим последовательного порта компьютера. Между двумя контроллерами все ок, но нужно связать с ПК. Заранее благодарен за дельные советы.
|
|
|
|
|
Apr 4 2007, 22:09
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 9-04-06
Пользователь №: 15 961

|
Цитата(zltigo @ Apr 4 2007, 22:33)  Никак, если только речь не идет о вспомогательной функции 9бита при передаче к PC, тогда к нему можно некоторый доступ через parity получить. Описание 550 чипа не секрет - ознакомьтесь. Именно по этому пути я и пошел. Перед передачей из ПК адресного байта в Delphi: procedure SetCommandByte; begin if not Windows.GetCommState(f, dcb) then exit; dcb.Parity := 3; Windows.SetCommState(f, dcb); end; Перед обычным 8 битовым procedure SetDataByte; begin if not Windows.GetCommState(f, dcb) then exit; dcb.Parity := 4; Windows.SetCommState(f, dcb); end; И ничего не получается.
|
|
|
|
|
Apr 4 2007, 22:19
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 9-04-06
Пользователь №: 15 961

|
Цитата(rezident @ Apr 4 2007, 23:09)  Анализ бита Parity или управление им в Windows по-моему геморрой еще тот. Когда-то у нас применяли этот способ адресации при реализации протокола PiNet, но потом отказались. Windows по большому счету чихать хотела на наличие/отсутствие/нарушение parity. Поток данных от COM-порта принимается в любом случае. Речь не о приеме данных в ПК, а о передаче из него на устройство. Нужно первый байт сделать адресным, последующие обычные 8-ми битовые.
|
|
|
|
|
Apr 4 2007, 22:26
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 9-04-06
Пользователь №: 15 961

|
Цитата(zltigo @ Apr 4 2007, 23:22)  Про какой-нибудь, как обычно левый "компонет" Delphi + Штатный драйвер от MS придется почти наверняка забыть. Драйверок свой писать, ну а вррбще пожалуй Вам SLIP полагаю стоит посмотреть. Все на API без компонентов. А что такое SLIP?
|
|
|
|
|
Apr 4 2007, 22:53
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 9-04-06
Пользователь №: 15 961

|
И чем мне это поможет? Мне нужно как-то портом оперировать.
|
|
|
|
|
Apr 4 2007, 23:13
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Microdevice @ Apr 4 2007, 21:53)  И чем мне это поможет? Мне нужно как-то портом оперировать. Насколько я понимаю цель не "портом оперировать". Это стедство достижения цели. Какой? Полагаю цель выделить начало передачи некого фрейма/пакета? Эта цель достигается в SLIP протоколе не вводя 9 бит.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Apr 4 2007, 23:27
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 9-04-06
Пользователь №: 15 961

|
Нужно передать 2 байта. В первом 9-й бит (понятно что это уже не байт) должен быть установлен в "1", второй с "0" в 9-м бите. И так же 2 байта прием от контроллера.
Пардон. Речь конечно о 8-м бите. Голова уже кругом идет.
|
|
|
|
|
Apr 4 2007, 23:52
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 9-04-06
Пользователь №: 15 961

|
Можно поподробнее? Начало пакета знаем (2 по 9 бит). Прошивку в железе менять нельзя, знаем только протокол по которому можно с ней общаться.
Нужно именно 2 посылки по 9 бит.
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|