Цитата(otrog @ Jul 21 2006, 14:01)

Тогда Вам

и Спасибо

за протокол.
Я рад, что кому-то протокол пригодился.
Цитата(otrog @ Jul 21 2006, 14:01)

Как из main-а узнать передался ли пакет?
Т.е. примерно такая ситуация:
Код
Pc_Tx_Frame();
while( ??? ){} // ждать окончания передачи
Что подставить вместо "???"?
После завершения передачи последнего байта пакета Pc_Tx_Sta становится равным SEND_IDLE. Но нет смысла подвешивать Main на всё время передачи пакета. Ведь передача ведётся по прерываниям в фоновом режиме, Main может в это время выполнять другие задачи. А проверить, закончилась ли передача пакета, можно в любой момент.
Подобная проблема актуальна на стороне PC при использовании RS-485 в полудуплексном режиме, когда требуется переключение направления. Под Win затруднительно определить момент окончания передачи посылки. Для Win98 эта проблема решается использованием недокументированного сервиса драйвера COM-порта для получения базового адреса микросхемы UART и прямым чтением ее регистра. Для Win 2000/XP это решается использованием режима RTS TOGGLE, который работает, правда, весьма тормознуто. В любом случае управление сигналом RTS для переключения направления должно осуществляться внутри DLL. В ближайшем будущем я планирую добавить поддержку RS-485 в wsp32.dll.