Здравствуйте Максим Алексейкин, Вы писали:
NS>>Я читаю из COM порта по таймеру,
NS>>но при остановке вылетает критическая ошибка.
NS>>Я останавливаю сначала таймер, затем закрываю порт.
NS>>Ошибка вылетает вне моей программы, где-то в системной DLL.
NS>>(Если порт не закрывать, то этой ошибки нет)
!!! Перед закрытием СОМа надобно его clear-ить (очищать ошибки!!!) что то
типа этого:
//*******************************************************
SetCommMask(m_hPort, 0);
while(m_dwReadThreadID != 0) Sleep(10); // поток чтения порта
m_hReadThread = 0;
EscapeCommFunction(m_hPort, CLRDTR);
PurgeComm(m_hPort, PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);
CloseHandle(m_hPort); m_hPort = 0;
//*******************************************************