Интернет-магазин

Просмотр корзины
В корзине:

товаров - 0 шт.



§ 57. SerialGate.dll - библиотека для работы с COM портами на С++

Иванов Дмитрий, Май 2007
Статья обновлена 27 Мая 2014

Файлы к статье скачать

SerialGate.dll - динамическая библиотека для работы с COM портами на языке С++. Упрощает программирование последовательных портов за счет использования классов. Имеет возможность определять все установленные в системе COM порты. Корректно работает как с реальными так и виртуальными COM портами. В основе библиотеки лежит класс SerialGate. Используя его методы можно выполнять наиболле часто воспребованные действия на COM портом: прием - передача данных, управление линиями взаимодействия, определение доступных портов в ситеме и т.д.


Описание функций класса SerialGate:


bool Open(int port, int baud);

Функция открывает доступ к к COM порту с номером port на скорости baud байт/c. Если указанный порт существует и не занят другим приложением в данный момент, функция вернет true, иначе false. Если, к примеру, параметр port был указан как 3, то функция попытается открыть доступ к COM порту с именем COM3. Функция корректно работает и с виртуальными портами.


Пример использованиея:

SerialGate sg;

bool b = sg.Open(1, 19200);
if(b == true)
{
	//port is open sucsesfully
}	
else
{
	//port open error
}


int Send(char* buff, int szBuff);

Функция записывает в ранее открытый порт szBuff байт данных из буфера buff. Возвращает число успешно записанных байт данных в порт.


Пример использованиея:

char buff[256];
for(int i=0; i < sizeof(buff); i++)
{
	buff[i] = i;
}

int SendCounter = sg.Send(buff, sizeof(buff));

if(SendCounter != sizeof(buff))
{
	//не все данные были записаны в порт
}


int Recv(char* buff, int szBuff);

Читает из ранее открытого порта szBuff байт данных и помещает их в буфер buff. Возвращает число реально прочитанных байт данных.


Пример использованиея:

char buff[256];
int RcvCounter = sg.Recv(buff, sizeof(buff));

if(RcvCounter != sizeof(buff))
{
	//прочли меньше чем заказывали
}


void SetLine(OUT_LINES_NAME ln, bool state);

Функция устанавливает в логическую еденицу или ноль одну из выходных сигнальных линий, а именно DTR или RTS. Имя линии задается через перечеслитель OUT_LINES_NAME. Вторым параметром передается состояние (true – 1, false - 0) в которое необходимо перевести линию.


Пример использованиея:

sg.SetLine(sg.RTS, true); // установит на линии RTS лог. 1


bool GetLine(IN_LINES_NAME ln);

Функция возвращает состояние одной из входных сигнальных линий (CTS, DSR, RING или RLSD). Имя линии задается через перечислитель IN_LINES_NAME.


Пример использованиея:

boll b = sg.GetLine(sg.DSR); // читаем состояние линии DSR


void GetPortsInfo(PortInfo* pi);

Функция заполняет переданную ей структуру PortInfo информацией о установленных в системе COM портах.



void Clean();

Ощищает входной и выходной буфер данных COM порта.


Пример использованиея:

sg.Clean();


void Close();

Закрывает ранее установленное соединение с COM портом.


Пример использованиея:

sg.Close();


© Иванов Дмитрий
Декабрь 2006
http://www.kernelchip.ru



© KERNELCHIP 2006 - 2023