Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[13.58.112.1] |
|
Сообщ.
#1
,
|
|
|
Общаюсь с источником питания по COM_порту. Если источник выключен - при успешно открытом порте происходит зависание ф-ции ReadFile. Она так всегда делает, если данные для считывания отсутствуют.
Как обойти этот баг? EOF какой-нибудь? |
Сообщ.
#2
,
|
|
|
Решение.
COMMTIMEOUTS ctoSettings = {0}; //Структура задержек работы команд WriteFile и ReadFile. Без них в случае пустого буфера ReadFile зависает. ctoSettings.ReadIntervalTimeout = 100; ctoSettings.ReadTotalTimeoutMultiplier = 100; ctoSettings.ReadTotalTimeoutConstant = 100; ctoSettings.WriteTotalTimeoutMultiplier = 100; ctoSettings.WriteTotalTimeoutConstant = 100; if (SetCommTimeouts(g_hHandle_Power, &ctoSettings) == 0) { Application->MessageBox("Функция SetCommTimeouts COM-порта не отработала. Возможно, проблемы с COM-портом COM1.", g_cErrorText_Title, g_iErrorText_Icons); return false; } |