![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с Async Professional [D5, WinXP]
Antonyan © (2006-04-16 00:19:00)Уважаемые Господа !
Я использую библиотеку Async Professional 4.06 & Delphi 5.
Работаю с Com портом. Есть проблема. Как я могу обратиться (желательно используя функции Async Professional) к регистру состояния линии, чтобы знать гарантировано, что данные ушли в линию. Вариант с таймаутами использовать не хочется, но в то же время прямой функции не обнаружил. Также буду благодарен за ссылку на документацию на русском языке.
Заранее благодарен
Antonyan (2006-04-16 19:38:00) [1]Блин, все равно что то не выходит ничего путного
tesseract (2006-04-16 11:15:00) [2]
> Спасибо за ответы, но вопрос открыт. Дело в том, что после
> отправки необходимо установить DTR=1.
Обычно до отправки ставится RTS ждётся сигнал CTS, от устройства.
После отправки возможно действительно следует выставить DTR дабы ус-во поняло что операция не идёт.
Как правило эта проблема решается замывканием 4-6(RTS-CTS), 7-8 (DTR-DTS)
EscapeCommFunction c параметрами:
CLRDTR Clears the DTR (data-terminal-ready) signal.
CLRRTS Clears the RTS (request-to-send) signal.
SETDTR Sends the DTR (data-terminal-ready) signal.
SETRTS Sends the RTS (request-to-send) signal.
Antonyan (2006-04-16 10:02:00) [3]Спасибо за ответы, но вопрос открыт. Дело в том, что после отправки необходимо установить DTR=1. Если использовать функцию проверки выходного буфера из Async, то получается так : буфер пуст, ставим DTR=1, а на самом деле регистр, отвечающий непосредственно за передачу, как раз в это время отправляет последний байт. И получается что ты сам рубишь сук на котором сидишь. Проверял осцилографом. Так вот поэтому необходимо обращаться в регистр состояния линии и проверять 6 бит на 1. Как только там 1 - значит все отправлено. Но как туда залезть ?
tesseract (2006-04-16 08:07:00) [4]
> знать гарантировано, что данные ушли в линию.
из Winapi :
WriteFile сообщает сколько данных ушло.
Если не хочешь тормозить на этом процессе используй overlapped-стурктуру.
Германн (2006-04-16 01:55:00) [5]Забыл сказать. Тут уж либо APro, либо WinAPI.
Недурно было бы ещё сказать - зачем тебе
> знать гарантировано, что данные ушли в линию
? Может ты не там ищешь?
Германн (2006-04-16 00:56:00) [6]WaitCommEvent из WinAPI