Показать сообщение отдельно
Старый 10.02.2011, 18:13   #8
Ivan_Nikit
Неактивный пользователь
 
Пол:Мужской
Регистрация: 10.02.2011
Сообщений: 3
Репутация: 0
По умолчанию Re: Работа с COM-портом в Buildere

В дополнение к ответу Andrew_1978 приведу пример работы с СОМ портом (синхронное обращение с портом):


Объявляем переменные
HANDLE hComPort;
DCB lpDCB;
COMMTIMEOUTS lpCommTimeouts;
int iReadTotalTimeoutConstant;

char cBufferSend[4], cBufferReseive[500];
DWORD CountBytes, ReadCountBytes;

Открываем COM-порт и задаём ему необходимые параметры

bool OpenCOMPort()
{
hComPort=CreateFile("COM1",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXI STING,0,NULL);
if(hComPort==INVALID_HANDLE_VALUE)
{
Application->MessageBox("Не могу открыть СОМ1","",
MB_OK + MB_ICONINFORMATION);
return false;
}

GetCommState(hComPort,&lpDCB);
lpDCB.BaudRate=9600;
lpDCB.ByteSize=8;
lpDCB.Parity=NOPARITY;
lpDCB.StopBits=ONESTOPBIT;
lpDCB.fDtrControl=DTR_CONTROL_DISABLE;
lpDCB.fRtsControl=RTS_CONTROL_DISABLE;
if(!SetCommState(hComPort,&lpDCB))
{
Application->MessageBox("Необходимые параметры порта СОМ1 не установлены",
"",MB_OK + MB_ICONINFORMATION);
return false;
}

GetCommTimeouts(hComPort,&lpCommTimeouts);
lpCommTimeouts.ReadTotalTimeoutConstant = iReadTotalTimeoutConstant;
if(!SetCommTimeouts(hComPort,&lpCommTimeouts))
{
Application->MessageBox(("Необходимые параметры порта \""+
sNameComPort+"\" не установлены").c_str(),
sCaption.c_str(),
MB_OK + MB_ICONINFORMATION);
return false;
}
return true;
}
//---------------------------------------------------------------------------

Читаем и передаём данные например так:
ReadFile(hComPort,cBufferReseive,ReadCountBytes,&CountByte s,NULL);
WriteFile(hComPort,cBufferSend,4,&CountBytes,NULL);
предварительно присвоив необходимые значения переменным

При окончании общения с СОМ-портом не забываем освободить (закрыть)указатель
CloseHandle(hComPort);

Последний раз редактировалось Ivan_Nikit; 10.02.2011 в 18:19..
Ivan_Nikit вне форума
 
Ответить с цитированием Вверх
 
Время генерации страницы 0.02241 секунды с 10 запросами