Форум: "Система";
Текущий архив: 2003.06.02;
Скачать: [xml.tar.bz2];
ВнизКак правильно работать с COM портом через API? Найти похожие ветки
← →
JohnKorsh (2003-03-31 12:10) [0]Компилятор "не пропускает" API функцию
WaitCommEvent (hPort, EV_TXEMPTY, nil);
Указывает на EV_TXEMPTY и пишет, что Types of actual and formal var parametrs must be identical.
Все остальные функции API работают нормально.
Может кто подскажет ?
И ещё как грамотно очистить приёмный буфер COM?
← →
крот (2003-03-31 13:04) [1]Вторым параметром в WaitCommEvent обязательно должна быть переменная типа cardinal, содержащая код ожидаемого события
(в твоем случае - EV_TXEMPTY). Для очитки приемного буффера, используй PurgeComm
← →
pasha676 (2003-03-31 14:27) [2]Я делаю примерно так
WaitCommEvent(port,Mask,@Ovr);
if (Mask and EV_TXEMTY)=EV_TXEMPTY then
begin
че надо
end;
Mask - DWord. Если внимательно почитать хелп по WaitCommEvent
то там имеем
LPDWORD lpEvtMask, // address of variable for event that occurred
Т.е. этот параметр не константа, а переменная.
← →
pasha676 (2003-03-31 14:29) [3]Кстати Ovr - тоже переменная. Надо объявить и ее:
Ovr : TOverlapped;
Без нее не работает.
← →
крот (2003-03-31 15:02) [4]
> pasha676 (31.03.03 14:29)
> Кстати Ovr - тоже переменная. Надо объявить и ее:
>
> Ovr : TOverlapped;
>
> Без нее не работает.
Работает и без нее. WaitCommEvent(hPort, Mask, nil);
← →
JohnKorsh (2003-04-01 13:29) [5]К сожалению, под W95, W98 функция WaitCommEvent(hPort, Mask, nil); с маской EV_TXEMTY работает правильно, а под W_2K и W_XP у меня почему-то не ждёт и, при частом обращении теряет символы, но нашёл как работает, поэтому отвечаю сам себе, может кому и пригодится:
procedure TMy_Com.putb_ex(b : byte;
var res :boolean);
{ Send one byte. }
var
stat : dword;
i : integer;
begin
res := True;
stat := 0;
i := 0;
While ((stat <> 1) and
(i < 1000)) do
begin
WriteFile(com,
b,
1,
stat,
nil);
i := i + 1;
end;
{ Когда передача не удалась из-за, например полного аппаратного буфера, stat не равен 1, пытаемся ещё 1000 раз, с защитой от зависания.}
end;
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2003.06.02;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c