Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Выручайте, не бычит! 02.05.14 17:34 Число просмотров: 4845
Автор: Zef <Alloo Zef> Статус: Elderman
|
Делаю примерно так:
DCB dcbSerialParams = {0};
char Code[20], Code2[20];
HANDLE hSerial, hEvent[2];
OVERLAPPED m_OvrLapped;
DWORD dwEvent = EV_RXCHAR;
void CBarcodeDlg::OnAutoBtn()
{
if ((endNum >= startNum)&&!FromFile){return;}
::EnableWindow(hAutoBtn, false);
hEvent[0] = ::CreateEvent(NULL, true, false, NULL);
hEvent[1] = ::CreateEvent(NULL, false, false, NULL);
m_OvrLapped.hEvent = hEvent[1];
m_OvrLapped.Offset = 0;
m_OvrLapped.OffsetHigh = 0;
_beginthread( Thread, 0, NULL );
}
void Thread( void* pParams )
{
while(true)
{
//Готовим содержимое массива Data
BOOL iRet = WriteFile (hSerial, Data,20,&iSize,NULL);//Отправляем
ReadFile(hSerial, (char*)&sReceived, 1, &iSize, &m_OvrLapped); // Ждем подтверждение
dwEvent = WaitForMultipleObjects(2, hEvent, false, INFINITE);
if(dwEvent == WAIT_OBJECT_0){goto err;}
if (iSize == 0|sReceived != 0x06) {goto err;}
}
err:CancelIo(hSerial);
_endthread();
}
void CBarcodeDlg::OnStopBtn()
{
SetEvent(hEvent[0]);
this->GetDlgItem(IDC_BUTTON4)->EnableWindow(false);
}
WaitForMultipleObjects по кнопке не срабатывет. По чтению - не знаю, дома нечем проверить.
|
|
|