powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Зависает приложение при чтении с COM порта
6 сообщений из 6, страница 1 из 1
Зависает приложение при чтении с COM порта
    #40045046
limarukraine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток.

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

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
...
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 ;
...



Модератор: Как мне оформить свое сообщение?
...
Рейтинг: 0 / 0
Зависает приложение при чтении с COM порта
    #40045051
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
limarukraineУ меня упорно зависает приложение на строке ReadFile

То есть внезапно функция чтения данных с ожиданием ждёт прихода данных. Кто бы мог
представить?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Зависает приложение при чтении с COM порта
    #40045059
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
limarukraine,
Как минимум не хватает SetCommTimeouts().
Устройство через USB подключено и питается от него же?
...
Рейтинг: 0 / 0
Зависает приложение при чтении с COM порта
    #40045065
limarukraine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Соколинский Борис
limarukraine,Устройство через USB подключено и питается от него же?


У меня нет физических устройств. Все виртуальное (Proteus). USB никак не задействован
...
Рейтинг: 0 / 0
Зависает приложение при чтении с COM порта
    #40045066
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
limarukraine,
Возможно все же Shake/Replace нужно задавать.
Обычно такие вопросы выясняются наблюдением через монитор порта за работающей штатной программой.
...
Рейтинг: 0 / 0
Зависает приложение при чтении с COM порта
    #40045068
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский БорисВозможно все же Shake/Replace нужно задавать.

Будьте проще, достаточно вышеприведённый код не оборачивать в Synchronize.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Зависает приложение при чтении с COM порта
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]