|
|
  |
Прием по КОМ порту 9-го бита под Windows |
|
|
|
Nov 19 2015, 20:05
|
Местный
  
Группа: Свой
Сообщений: 352
Регистрация: 29-10-06
Из: Тула
Пользователь №: 21 769

|
Цитата(iosifk @ Nov 19 2015, 22:54)  Читать ошибку паритета... А если в буфере несколько байт накопилось, этот метод сработает?
|
|
|
|
|
Nov 20 2015, 14:16
|

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

|
QUOTE (kovigor @ Nov 20 2015, 15:40)  Можно, например, передавать данные небольшими пакетами (например, с размером, равным размеру FIFO приемника) и забраковывать пакет, если для какого-то из его байтов установилась ошибка четности ... Автор спрашивал совсем не об этом. Для контроля "пакета" его размер не имеет значения - ошибка фиксируется и остается до ее считывания. Так что размер пакета пожет быть совершенно любым.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Nov 20 2015, 16:05
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(zltigo @ Nov 20 2015, 19:24)  Не хранит  . Ну и BREAK это вообще не к байту относится. Навороченных UART, котрые хранят, вообще раз два и все  . Самое навороченным в этом плане был набортный у древного AM186CC. Впромем там и битов было сколько хошь, и поддержка адресации в старших битах. A 16550 это все тот-же 8250 к которому грубо FIFO только на данные прикрутили  . Вот передо мной открыт юзер-мануал на LPC43xx страница UART. В заголовке его написано: "Register locations conform to ‘550 industry standard". Далее, при описании регистра LSR вижу такие фразы: "Note: A parity error is associated with the character at the top of the USART RBR FIFO." Это же самое указано и для FE и для BREAK. Если они, как пишут, реализовали у себя регистры x550, то вполне возможно, что и всю структуру FIFO тоже. А почему в оригинальном 16550 не может быть так же? Считываем LSR, если стоит бит0 - считываем вершину FIFO, после этого пара регистров LSR/RBR обновляется поднимающимся из FIFO следующим принятым символом с его статусными битами (символ - в RBR, статусы - в LSR). Логично.
|
|
|
|
|
Nov 20 2015, 17:32
|

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

|
QUOTE (jcxz @ Nov 20 2015, 18:05)  Вот передо мной открыт юзер-мануал на LPC43xx страница UART. Далее, при описании регистра LSR вижу такие фразы: "Note: A parity error is associated with the character at the top of the USART RBR FIFO." А что такое TOP FIFO  ? Например, последний попавший в него символ. Как только приемный автомат зафиксировал ошибку он взводит этот бит при помещении символа в FIFO, хотя перед ним в FIFO лежит уже куча правильных символов. Бит ошибки остается взведенным до тех пор, пока он не будет считан LSR - полностью совместимый 16450 режим. Но! Действительно оказалось есть 16550 D чип у которого FIFO не 8 а 11 бит и в нем соответственно хранятся ошибки уже привязанные к символу. Но тут уж возникает вопрос о том знает-ли об этом драйвер и API WIN. Мне помнится у драйвера декларировалась совместмость с 16650A. Хотя в принципе может при определенных условиях просто плевать. В общем можно пробовать - либо получится, либо нет.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Nov 21 2015, 09:49
|

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

|
QUOTE (jcxz @ Nov 21 2015, 10:02)  Исходя из контекста, "character at the top of FIFO" - означает самый старый символ в FIFO. Первый для чтения. О терминологих что является началом, концом, верхом, низом, головой, хвостом и прочим  в FIFO столько копий сломано  Head or tail first: The ends of a FIFO queue are often referred to as head and tail. Unfortunately, a controversy exists regarding those terms: To many people, items should enter a queue at the tail, and remain in the queue until they reach the head and leave the queue from there. This point of view is justified by analogy with queues of people waiting for some kind of service and parallels the use of front and back in the above example. Other people believe that items enter a queue at the head and leave at the tail, in the manner of food passing through a snake. Queues written in that way appear in places that could be considered authoritative, such as the operating system Linux.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|