[an error occurred while processing this directive] [an error occurred while processing this directive]
Программирование: Runtime управление настройкой FIFO буферов (UART) при настройке COM порта
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено antony 05 декабря 2001 г. 19:48

аналогично этой теме:
http://www.telesys.ru/wwwboards/mcontrol/59/messages/160.shtml

Имеется ввиду следующее:
в настройках системы это (Win9x):
Control Panel -> System -> Ports -> COM# (Properties) -> Port Setting -> Advanced -> Use FIFO Buffers (UART), Recieve Buffer size, Transmit Buffer Size (вот про последнее и идёт речь).
оно же, если я не ошибаюсь указано как ForceFifoEnable, TxFIFO, RxFIFO и определено как записи в реестре.
здесь: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/serial/sseovr_4unb.asp

Вопрос в том как управлять этими величинами runtime (из программы), когда я открываю и настраиваю порт, т.е. менять величину в реестре или возможно вызовом некой функции (API)?
И зменение этих величин должно происходить до открытия порта или после (как DCB)?

Ноги у проблемы растут из следующего - если буферы UART используются ("галочка" в Control Panel стоит), то функция WriteFile(hPortHandle, ...); возвращяется после того как она "положила" последнюю порцию байт в UART буфер, но реально они ещё до устройства не дошли. Не определить конец передачи. Поскольку используется RTS/CTS в ручном режиме, то получается что я снимаю RTS раньше чем надо (на размер FIFO буфера). Конечно можно было бы поставить задержку BaudRate*FIFOsize*2 но Использование некой задержки основанной на "таймере" (в каком либо его проявлении) невозможно (скажем так - запрещено)

Спасибо.


Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru