Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
DWORD FAR PASCAL ThreadProg(LPSTR lpData) //поток.
{
sport *dport;
COMSTAT ComStat;
DWORD dwErrorFlags;
DWORD mask;
OVERLAPPED lpOvpd; //структура синхронизации.
HANDLE fhn;
LPOFSTRUCT lpReOpenBuff;
AnsiString res;
//----------------------------------------------
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);//сборос ошибки порта.
Составить ответ | Вернуться на конференцию
Ответы