реклама на сайте
подробности

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> RS232 9-ти битный формат, RS232 9-ти битный формат
Microdevice
сообщение Apr 4 2007, 21:23
Сообщение #1


Участник
*

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



В микроконтроллерах в модуле UART есть 9-ти битный адресный режим. Кто-нибудь пробовал организовать связь, используя этот режим между ПК и контроллером? Непонятно как настроить такой режим последовательного порта компьютера. Между двумя контроллерами все ок, но нужно связать с ПК. Заранее благодарен за дельные советы.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 4 2007, 21:33
Сообщение #2


Гуру
******

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



Цитата(Microdevice @ Apr 4 2007, 20:23) *
Непонятно как настроить такой режим последовательного порта компьютера.

Никак, если только речь не идет о вспомогательной функции 9бита при передаче к PC, тогда к нему
можно некоторый доступ через parity получить. Описание 550 чипа не секрет - ознакомьтесь.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Microdevice
сообщение Apr 4 2007, 22:09
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 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;

И ничего не получается. sad.gif
Go to the top of the page
 
+Quote Post
rezident
сообщение Apr 4 2007, 22:09
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(zltigo @ Apr 5 2007, 00:33) *
Никак, если только речь не идет о вспомогательной функции 9бита при передаче к PC, тогда к нему
можно некоторый доступ через parity получить. Описание 550 чипа не секрет - ознакомьтесь.

Анализ бита Parity или управление им в Windows по-моему геморрой еще тот. Когда-то у нас применяли этот способ адресации при реализации протокола PiNet, но потом отказались. Windows по большому счету чихать хотела на наличие/отсутствие/нарушение parity. Поток данных от COM-порта принимается в любом случае.
Go to the top of the page
 
+Quote Post
Microdevice
сообщение Apr 4 2007, 22:19
Сообщение #5


Участник
*

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



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

Речь не о приеме данных в ПК, а о передаче из него на устройство. Нужно первый байт сделать адресным, последующие обычные 8-ми битовые.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 4 2007, 22:22
Сообщение #6


Гуру
******

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



Цитата(Microdevice @ Apr 4 2007, 21:09) *
Перед передачей из ПК адресного байта в Delphi:

Про какой-нибудь, как обычно левый "компонет" Delphi + Штатный драйвер от MS придется почти наверняка забыть.
Драйверок свой писать, ну а вррбще пожалуй Вам SLIP полагаю стоит посмотреть.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Microdevice
сообщение Apr 4 2007, 22:26
Сообщение #7


Участник
*

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



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

Все на API без компонентов. А что такое SLIP?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 4 2007, 22:40
Сообщение #8


Гуру
******

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



Цитата(Microdevice @ Apr 4 2007, 21:26) *
А что такое SLIP?

Поиск вообще-то помогает. http://rfc.net/rfc1055.html


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Microdevice
сообщение Apr 4 2007, 22:53
Сообщение #9


Участник
*

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



И чем мне это поможет? Мне нужно как-то портом оперировать.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 4 2007, 23:13
Сообщение #10


Гуру
******

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



Цитата(Microdevice @ Apr 4 2007, 21:53) *
И чем мне это поможет? Мне нужно как-то портом оперировать.

Насколько я понимаю цель не "портом оперировать". Это стедство достижения цели. Какой?
Полагаю цель выделить начало передачи некого фрейма/пакета? Эта цель достигается в SLIP протоколе не вводя 9 бит.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Microdevice
сообщение Apr 4 2007, 23:27
Сообщение #11


Участник
*

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



Нужно передать 2 байта. В первом 9-й бит (понятно что это уже не байт) должен быть установлен в "1", второй с "0" в 9-м бите. И так же 2 байта прием от контроллера.

Пардон. Речь конечно о 8-м бите. Голова уже кругом идет.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 4 2007, 23:33
Сообщение #12


Гуру
******

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



Цитата(Microdevice @ Apr 4 2007, 22:24) *
В первом 9-й бит (понятно что это уже не байт) должен быть установлен в "1", второй с "0" в 9-м бите.

Опять средство smile.gif
Перевожу на понятный язык - нужно передать пакет из двух байт (16 бит). Начало пакета надо знать.
Его отметка 9м битом лишь один из вариантов реализации задачи. Задача отметки битом нормально не реализуема на стороне PC+Windows. Значит придется добавлять байтстаффинг (SLIP), или UUE кодирование, или подобное.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Microdevice
сообщение Apr 4 2007, 23:52
Сообщение #13


Участник
*

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



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

Нужно именно 2 посылки по 9 бит.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 4 2007, 23:59
Сообщение #14


Гуру
******

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



Цитата(Microdevice @ Apr 4 2007, 22:46) *
Прошивку в железе менять нельзя

Пишите нормальный драйвер ориентированный на выделение двухбайтовых посылок для Win.
Либо пытайтесь выделять прием в PC без 9бита (по крайней мере только иногда по нему подсинхронизироваться удастся) и постоянное перепрограммирование порта перемежающееся flush(). Да, и FIFO отключите.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
rezident
сообщение Apr 5 2007, 00:24
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



zltigo, да не запутывайте вы окончательно товарища! Не понимает он с ходу термина "битстаффинг" и принципов транспортного протокола. Отсутствие опыта не порок и дело наживное ИМХО. Если на SLIP ссылку не даете, так хоть на Wake дайте. Зря что ли Леонид Иванович старался, статью писал, примеры и dll-ки выкладывал? wink.gif
Спецификация протокола WAKE
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 16:02
Рейтинг@Mail.ru


Страница сгенерированна за 0.01478 секунд с 7
ELECTRONIX ©2004-2016