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

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

Так, кажется, работало...

Отправлено ++ 19 января 2007 г. 16:01
В ответ на: полу ОФФ. как в Buildere C++ организовать обработку такого события. отправлено UraGun 19 января 2007 г. 15:38


/***********************************************************************
PortInitialize (LPTSTR lpszPortName)
***********************************************************************/
BOOL PortInitialize (LPTSTR lpszPortName, DWORD baud)
{DWORD dwThreadID;
COMMTIMEOUTS CommTimeouts;
DCB PortDCB;
DWORD err_code;
char str[256];
PortClose ();
hPort = CreateFile (lpszPortName, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); // Handle to port with attribute to copy
if ( hPort == INVALID_HANDLE_VALUE )
{err_code= GetLastError(); sprintf(str,"Unable to open the port. Сведения:( %x)", err_code);
ShowMessage(str); PortClose ();return FALSE;}
PortDCB.DCBlength = sizeof (DCB); // sizeof(DCB)
GetCommState (hPort, &PortDCB);
PortDCB.BaudRate = baud; // Current baud rate
PortDCB.fBinary = FALSE; // Binary mode, no EOF check
PortDCB.fParity = FALSE; // Enable parity checking
PortDCB.fOutxCtsFlow = FALSE; // No CTS output flow control
PortDCB.fOutxDsrFlow = FALSE; // No DSR output flow control
PortDCB.fDtrControl = DTR_CONTROL_DISABLE;// DTR flow control type
PortDCB.fDsrSensitivity = FALSE; // DSR sensitivity
PortDCB.fTXContinueOnXoff = FALSE; // XOFF continues Tx
PortDCB.fOutX = FALSE; // No XON/XOFF out flow control
PortDCB.fInX = FALSE; // No XON/XOFF in flow control
PortDCB.fErrorChar = FALSE; // Disable error replacement
PortDCB.fNull = FALSE; // Disable null stripping
PortDCB.fRtsControl = RTS_CONTROL_DISABLE;// RTS flow control
PortDCB.fAbortOnError = FALSE; // Do not abort read/write on error
PortDCB.XonLim=4; // Transmit X-ON threshold
PortDCB.XoffLim=16; // Transmit X-OFF threshold
PortDCB.ByteSize = 8; // Number of bits/byte, 4-8
PortDCB.Parity = NOPARITY; // 0-4=no,odd,even,mark,space
PortDCB.StopBits = ONESTOPBIT; // 0,1,2 = 1, 1.5, 2
PortDCB.XonChar=0x11; // Tx and Rx X-ON character
PortDCB.XoffChar=0x13; // Tx and Rx X-OFF character

if (!SetCommState (hPort, &PortDCB))
{err_code= GetLastError();
sprintf(str,"%s(Не устанавливается DCB) %x", _KERNEL_FAULT, err_code);
ShowMessage(str); PortClose (); return FALSE;
}

GetCommTimeouts (hPort, &CommTimeouts);

CommTimeouts.ReadIntervalTimeout = 500;
CommTimeouts.ReadTotalTimeoutMultiplier = 0;
CommTimeouts.ReadTotalTimeoutConstant = 1;
CommTimeouts.WriteTotalTimeoutMultiplier = 0;
CommTimeouts.WriteTotalTimeoutConstant = 1000;

if (!SetCommTimeouts (hPort, &CommTimeouts))
{err_code= GetLastError();
sprintf(str,"%s(Не устанавливается DCB) Сведения:( %x)", _KERNEL_FAULT, err_code);
ShowMessage(str); PortClose ();return FALSE;
}

EscapeCommFunction (hPort, SETDTR);
EscapeCommFunction (hPort, SETRTS);

if ((hReadThread= CreateThread (NULL, 0, PortReadThread, NULL, 0, &dwThreadID))==NULL)
{err_code= GetLastError();
sprintf(str,"%s(Не не создаетяс Thread Rs232) Сведения:( %x)", _KERNEL_FAULT, err_code);
ShowMessage(str); PortClose (); return FALSE;}
return TRUE;
}



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

Ответы


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

Сообщение:

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

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

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

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