проблема с COM портом
От: Targutay Беларусь  
Дата: 25.04.06 09:30
Оценка:
при работе с СОМ портом настраеваю
COMMTIMEOUTS t;
t.ReadIntervalTimeout=20;// msec для работы на 2400-19200
под win 98, 2000 , све норм
а вот ХР проблемы
в случае если принимаю кол-во байт НЕ кратное 8 байтам
то хвост теряется
есть подозрение что в ХР регистр FIFO Control Register FCR
в старшие два бита (trig1 trig0 они отвечают за работу прерываний)

trig1, trig0, 0, 0, dma, rtf, rrf, fe — биты регистра FCR

trig1 trig0 16550
0 0 1 — прерывание срабатывает после приемя каждого байта
0 1 4 — 4 байта
1 0 8 — 8 байт
1 1 14 — 14 байт

установленны биты 1 0 т.е по 8 байт
так ли это ????
и как с этим бороться
если нет то в чем причина ? Помогите плз
Re: проблема с COM портом
От: Leo Yuriev Россия https://github.com/erthink
Дата: 25.04.06 10:08
Оценка: 3 (1)
Здравствуйте, Targutay, Вы писали:

T>при работе с СОМ портом настраеваю

T>COMMTIMEOUTS t;
T>t.ReadIntervalTimeout=20;// msec для работы на 2400-19200
T>в случае если принимаю кол-во байт НЕ кратное 8 байтам
T>то хвост теряется
[...]
T>и как с этим бороться
T>если нет то в чем причина ? Помогите плз

Да, дело именно в этом.

В стандартном системном драйвере COM-портов (и его клонах aka hiserial.sys, _serial.sys и т.д.), в коде обработки таймаута по приёму, нет контроля на наличие "хвоста" в FIFO. Т.е. вычитка из FIFO происходит только при поступлении соответствующего прерывания. При включенном FIFO, если в FIFO еще есть место до TRIGGER-LEVEL, UART не выдаст прерывания пока с момента принятия последнего байта не выйдет пауза равная времени приёма двух символов.

Бороться можно тремя способами:
1) Отключить использование FIFO;
2) Установить ReadIntervalTimeout с учетом двух-символьной паузы;
3) Использовать альтернативный драйвер SerialXp;
Re[2]: проблема с COM портом
От: Targutay Беларусь  
Дата: 25.04.06 10:26
Оценка:
Здравствуйте, Leo Yuriev, спасибо за ответ
еще вопрос , а как можно изменить значение старших битов регистра FCR???
Re[2]: проблема с COM портом
От: Targutay Беларусь  
Дата: 25.04.06 11:40
Оценка:
убедительная просьба следить за объемом цитирования — модератор
помогите с инфой «Отключить использование FIFO» где и что почитать, спасибо
Re[3]: проблема с COM портом
От: Valery A. Boronin Россия linkedin.com/in/boronin
Дата: 27.04.06 14:14
Оценка:
Здравствуйте, Targutay, Вы писали:

убедительная просьба следить за объемом цитирования — модератор

T>Здравствуйте, Leo Yuriev, спасибо за ответ

T>еще вопрос , а как можно изменить значение старших битов регистра FCR???
... << RSDN@Home 1.2.0 alpha rev. 648>>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.