Не могу отловить событие, которое придет после опроса версии девайса (ShowSoftwareVersion)
Если отсоединить девайс от компьютера, то сообщение приходит.
// опрос версии, всё работает
void CTestOpt1004Dlg::OnBnClickedButtonStartstop()
{
CString strLog;
CString strCom("COM7");
int iCom = 7;
CStatic* log = (CStatic*) GetDlgItem(IDC_STATIC_LOG);
strLog = strLog + "--Проверка " + strCom + " \r\n";
m_load.put_Comport(iCom);
m_load.put_IrDADevice(0); // NoneIrda device
m_load.ShowSoftwareVersion();
log->SetWindowText(strLog);
}
// поток для прослушки событий
UINT thread1(LPVOID pParam)
{
CTestOpt1004Dlg* pDlg = (CTestOpt1004Dlg*)pParam;
ULONG lpEvtMask=0;
WaitCommEvent(pDlg->m_hCOM, &lpEvtMask, NULL);
MessageBox(NULL,"Произошло событие","Info",MB_OK);
return 0;
}
void CTestOpt1004Dlg::OnBnClickedButtonTest()
{
CString strCom;
strCom.Format("COM%d", 7);
OVERLAPPED o;
BOOL fSuccess;
m_hCOM = CreateFile( strCom, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL );
if (m_hCOM == INVALID_HANDLE_VALUE)
{
return;
}
DWORD mskValue = EV_RXCHAR | EV_RXFLAG |
EV_TXEMPTY | EV_CTS |
EV_DSR | EV_RLSD |
EV_BREAK | EV_ERR |
EV_RING | EV_PERR;
// устанавливаю флаги событий
fSuccess = SetCommMask(m_hCOM, mskValue);
if (!fSuccess)
{
CloseHandle(m_hCOM);
return;//continue без CloseHandle(hCom);
}
// запускаю поток, где будут перехватываться события
AfxBeginThread(thread1,this);
// события опроса версии ТСД Опткон 1004
m_load.put_Comport( 7 );
m_load.put_IrDADevice( 0 ); // NoneIrda device
m_load.ShowSoftwareVersion();
}
05.11.12 15:26: Перенесено модератором из 'Железо' — AndrewVK