классы классы, возьми API и не страдай.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено DSN 27 сентября 2004 г. 16:11
В ответ на: Извините, что заморочил Вам голову... отправлено xyz 27 сентября 2004 г. 15:59

DWORD FAR PASCAL ThreadProg(LPSTR lpData) //потоки.
{
sport *dport;
COMSTAT ComStat;
DWORD dwErrorFlags;
DWORD mask;
OVERLAPPED lpOvpd; //структура синхронизации.
int i,n,rs;
DWORD cntrd;
char data[1024];
unsigned int adrp;
HANDLE fhn;
LPOFSTRUCT lpReOpenBuff;
//----------------------------------------------
dport=(sport*)lpData;//получение указателя на структуру.
//----------------------------------------------
dport->hnd = CreateFile(dport->port, GENERIC_READ|GENERIC_WRITE,
0, NULL, OPEN_EXISTING,
FILE_FLAG_OVERLAPPED|FILE_ATTRIBUTE_NORMAL, NULL );//open Port.
if(dport->hnd==INVALID_HANDLE_VALUE)
{
dport->En=FALSE;
MessageBox(0,"Error Open Port","Error Open",MB_OK);
return(1);
}//невозможно открыть порт.
//----------------------------------------------
GetCommState(dport->hnd,&dport->sdcb);
dport->sdcb.DCBlength=sizeof(DCB);
dport->sdcb.BaudRate=CBR_115200;
dport->sdcb.fBinary=TRUE;
dport->sdcb.fParity=FALSE;
dport->sdcb.fOutxCtsFlow=FALSE;
dport->sdcb.fOutxDsrFlow=FALSE;
dport->sdcb.fDtrControl=DTR_CONTROL_DISABLE;
dport->sdcb.fDsrSensitivity=FALSE;
dport->sdcb.fTXContinueOnXoff=TRUE;
dport->sdcb.fOutX=FALSE;
dport->sdcb.fInX=FALSE;
dport->sdcb.fErrorChar=FALSE;
dport->sdcb.fNull=FALSE;
dport->sdcb.fRtsControl=RTS_CONTROL_DISABLE;
dport->sdcb.ByteSize=8;
dport->sdcb.Parity=NOPARITY;
dport->sdcb.StopBits=ONESTOPBIT;
SetCommState(dport->hnd,&dport->sdcb);
//----------------------------------------------
GetCommTimeouts(dport->hnd,&dport->ct);
dport->ct.ReadIntervalTimeout=10;
dport->ct.ReadTotalTimeoutMultiplier=0;
dport->ct.ReadTotalTimeoutConstant=100;
dport->ct.WriteTotalTimeoutMultiplier=10;
dport->ct.WriteTotalTimeoutConstant=0;
SetCommTimeouts(dport->hnd,&dport->ct);
//----------------------------------------------
PurgeComm(dport->hnd,PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);//очистка буферов драйвера.
//----------------------------------------------
GetCommMask(dport->hnd,&mask);
mask &= EV_EVENT1|EV_EVENT2|EV_PERR|EV_RX80FULL;
mask = mask|EV_RXCHAR|EV_TXEMPTY|EV_ERR;
SetCommMask(dport->hnd,mask);//режимы приема/передачи
//----------------------------------------//цикл потока.
ClearCommError(dport->hnd, &dwErrorFlags, &ComStat);//сборос ошибки порта.
dport->buftr = trbuf;
dport->sztbf = sizeof(trbuf);
dport->bufrc = rcbuf;
dport->szrbf = sizeof(rcbuf);
//----------------------------------------------
.................
//----------------------------------------//цикл потока.

CloseHandle(dport->hnd);//закрытие порта.
dport->En = FALSE;
//ExitThread(0);
return(TRUE);
}

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

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru