[an error occurred while processing this directive]
обычно в качестве одного из параметров thread start routine используется void * . Я обычно в нем и передаю адрес объекта и делаю reinterpret_cast (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено ˉ¯o_o¯ˉ 28 июля 2006 г. 19:31
В ответ на: В общем смысл такой(+) отправлено F8 28 июля 2006 г. 19:23


class CSerialPort
{
///////////////
protected:
static void __cdecl SerialReceiveRoutine (LPVOID pData);
};
///////////////
void __cdecl CSerialPort::SerialReceiveRoutine (LPVOID pData)
{
CSerialPort *p = reinterpret_cast (pData);
DWORD event = 0;
unsigned char buf[1];
for (;;)
{
WaitCommEvent(p->m_hFile, &event, NULL);
EnterCriticalSection(&p->cs_com);
DWORD rb = 0;
DWORD read = 0;
DWORD bytes = 0;
do {
//
ReadFile (p->m_hFile, buf, 1, &rb, NULL);
int i = 0;
read = rb;
while (read--)
{
p->OnReceiveByte(buf[i++]);
}

} while(rb);
LeaveCriticalSection(&p->cs_com);
event = 0;
}
}


Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание