Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Зависает приложение при чтении с COM порта 
:(
    Опции темы
limarukraine
Дата 13.2.2021, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 12.11.2012

Репутация: нет
Всего: нет



Доброго времени суток.

У меня в потоке все время должен вращаться опрос COM порта - если что-то появилось - она принимается. Ниже приведен код (фрагменты).  У меня упорно зависает приложение на строке ReadFile (я это проверил средствами вывода сообщения в окно). Порт у меня виртуальный (пара виртуальных портов). Если я удаляю виртуальный порт приложение не зависает. Причем раньше у меня приложение работало и вдруг возникла эта проблема.

Код
...

DCB   : TDCB;
  PortHandle1: THandle;

...

...

PortHandle1:= CreateFile('COM2', GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
//  if PortHandle1 = INVALID_HANDLE_VALUE then begin
 // exit;
//  end;
  if GetCommState(PortHandle1, DCB) then ;
  DCB.BaudRate := 9600;
  DCB.ByteSize := 8;
  DCB.Parity := NOPARITY;
  DCB.StopBits := ONESTOPBIT;
  DCB.Flags := 20625;
  if not SetCommState(PortHandle1, DCB) then {ошибка настройки порта};
  if not SetupComm(PortHandle1, 1024, 1024) then {ошибка настройки буферов};
  if PurgeComm(PortHandle1, PURGE_TXABORT or PURGE_RXABORT or PURGE_TXCLEAR or PURGE_RXCLEAR) then ;

...

MyBuff: array[0..1023] of char; //буфер для чтения данных

  ByteReaded: Cardinal; //количество считанных байт

 Status: DWord;
...

begin

 if GetCommModemStatus(PortHandle1, Status) then ;

  if  ReadFile(PortHandle1, MyBuff, SizeOf(MyBuff), ByteReaded, nil) then ;

...



Это сообщение отредактировал(а) limarukraine - 13.2.2021, 12:06
PM MAIL   Вверх
Romikgy
Дата 13.2.2021, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7325
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



таймауты кто настраивать будет ?

PS вы случаем не из автомастерской limar из  Одессы?

Это сообщение отредактировал(а) Romikgy - 13.2.2021, 13:09


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.1009 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.