§ 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