Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

вот кусок инициализации, попробуй так

Отправлено ничего не знаю 08 октября 2007 г. 20:52
В ответ на: Так всё-таки, как же открыть и прочитать с ком-порта (с++) отправлено <font color=gray>ауооэы</font> 08 октября 2007 г. 20:25

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);//сборос ошибки порта.


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
увеличьте 6 на 2:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru