WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  C / C++ / Visual C++
  Работа с COM-портом

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   Работа с COM-портом
JOGURT опубликован 22-01-2002 15:47 MSK   Click Here to See the Profile for JOGURT   Click Here to Email JOGURT  
НАРОД, ПОМОГИТЕ!

Есть ли в MFC какой-нибудь класс для работы (инициализации, настройки, Зп/Чт)с COM-портом?

Kondor опубликован 23-01-2002 01:19 MSK     Click Here to See the Profile for Kondor  Click Here to Email Kondor     
port->hComm = CreateFile( LPCTSTR(port->Name),
GENERIC_READ | GENERIC_WRITE,
0,
0,
OPEN_EXISTING,
FILE_FLAG_WRITE_THROUGH,
0);

if (port->hComm == INVALID_HANDLE_VALUE)
{
TRACE("Error open port\n");
MessageBox("Can not open port",NULL,MB_ICONERROR | MB_OK);
return FALSE;
}
port->bActived = TRUE;

//
// Save original comm timeouts and set new ones
//
//
port->timeoutsnew.ReadIntervalTimeout = 1;
port->timeoutsnew.ReadTotalTimeoutMultiplier = 1;
port->timeoutsnew.ReadTotalTimeoutConstant = 0;
port->timeoutsnew.WriteTotalTimeoutMultiplier = 0;
port->timeoutsnew.WriteTotalTimeoutConstant = 0;


if (!GetCommTimeouts( port->hComm, &port->timeoutsorig))
TRACE("GetCommTimeOuts\n");


DCB dcb = {0};
dcb.DCBlength = sizeof(dcb);

//
// get current DCB settings
//
if (!GetCommState( port->hComm , &dcb))
TRACE("GetCommState\n");
//
// update DCB rate, byte size, parity, and stop bits size
//

dcb.BaudRate = port->dwBaudRate;
dcb.ByteSize = port->ByteSize; //8;
dcb.Parity = port->Parity; //ODDPARITY;
dcb.StopBits = port->StopBits; //TWOSTOPBITS;

//
// update event flags
//
dcb.EvtChar = '\0';

//
// update flow control settings
//
// dcb.fDtrControl = DTRCONTROL(TTYInfo);
// dcb.fRtsControl = RTSCONTROL(TTYInfo);

// dcb.fOutxCtsFlow = CTSOUTFLOW(TTYInfo);
// dcb.fOutxDsrFlow = DSROUTFLOW(TTYInfo);
// dcb.fDsrSensitivity = DSRINFLOW(TTYInfo);
// dcb.fOutX = XONXOFFOUTFLOW(TTYInfo);
// dcb.fInX = XONXOFFINFLOW(TTYInfo);
// dcb.fTXContinueOnXoff = TXAFTERXOFFSENT(TTYInfo);
// dcb.XonChar = XONCHAR(TTYInfo);
// dcb.XoffChar = XOFFCHAR(TTYInfo);
// dcb.XonLim = XONLIMIT(TTYInfo);
// dcb.XoffLim = XOFFLIMIT(TTYInfo);

//
// DCB settings not in the user's control
//
dcb.fParity = FALSE;

//
// set new state
//
if (!SetCommState(port->hComm, &dcb))
TRACE("SetCommState");

//
// set new timeouts
//
if (!SetCommTimeouts(port->hComm, &port->timeoutsnew))
TRACE("SetCommTimeOuts\n");

//
// set comm buffer sizes
//
SetupComm(port->hComm, 0x8000, 0x8000);

55 опубликован 23-01-2002 02:17 MSK     Click Here to See the Profile for 55  Click Here to Email 55     
Работа с COM-портом детально описана в документации MSDN. Статья называется "Serial Communications in Win32".
Находится она так:
MSDN Library Visual Studio 6.0/ Technical Articles / Windows Platform / Serial Communications in Win32.
Там же приведен хороший пример с исходниками, которорый можно загрузить и запустить.

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.