Ответ: А где вы инициализируете структуру OVR?
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено elektrik 08 декабря 2003 г. 12:49
В ответ на: есть програмка на дельфи для работы с сом портом. соеденяю сом1 и сом2 кабелем и передаю символ (программа естественно стоит на сом1 и сом2), не работает, беру программу терминала на один порт и свою на другой - работают обе. Что может быть, с чужими работает, а со своим клоном не хочет (естественно один клон на сом1 другой на сом2, скорости и остальное одинаковое). В чем причина ? отправлено начинающий 08 декабря 2003 г. 10:12

Может Вы даете обьектам EVENT входящим в эту структуру одинаковые имена? т.е
ovr.hEvent:=CreateEvent(nil,FALSE,FALSE,'RX_COMPL');
где 'RX_COMPL' - имя события.
если так то получится что в разных программах(или потоках) Вы используете одно и тоже событие.

P.S.
И еще вместо функции WaitCommEvent и проверки if (TransMask and EV_RXFLAG)=EV_RXFLAG лучше истользовать связку функций
WaitCommEvent и WaitForSingleObject в которой в качестве ожидаемого
события указать ovr.hEvent. При этом уменьшится загрузка системы.

пример:
WaitCommEvent(port,res,@ovr);

while not Terminated do begin
res:=WaitForSingleObject(ovr.hEvent,500);
case res of //Различн действия в зав. от рез. ожидания.
WAIT_OBJECT_0:// пришел байт данных.
..................
end;
ResetEvent(ovr.hEvent)//если событие создавалось с ручым сбросом

WaitCommEvent(port,res,@ovr);
end;

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

Ответы



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

E-mail: info@telesys.ru