Пример. Установить связь. - shtrih-m/fr_drv_ng GitHub Wiki

Установка связи по TCP через IPAddress

classic_interface ci;
ci.Set_ConnectionType(classic_interface::TConnectionType::Tcp);
ci.Set_UseIPAddress(true);
ci.Set_IPAddress("192.168.0.1");
ci.Set_TCPPort(12345);
ci.Set_Timeout(4848);
ci.Set_ProtocolType(1);
int ret = ci.Connect();

Установка связи по TCP через имя компьютера

classic_interface ci;
ci.Set_ConnectionType(classic_interface::TConnectionType::Tcp);
ci.Set_UseIPAddress(false);
ci.Set_ComputerName("shtrih.fr");
ci.Set_TCPPort(54321);
ci.Set_Timeout(4848);
ci.Set_ProtocolType(1);
int ret = ci.Connect();

Установка связи по COM-порту

classic_interface ci;
ci.Set_ConnectionType(classic_interface::TConnectionType::Local);
ci.Set_ComNumber(2);
ci.Set_Timeout(4848);
ci.Set_ProtocolType(1);
ci.Set_BaudRate(6);
int ret = ci.Connect();

Установка связи через свойство ConnectionURI

ConnectionURI формируется по правилам URI. Параметры соединения передаются после путя в схеме после символа '?' в виде key=value. Разделяются '&'

Общие параметры:

параметр описание возможные значения По умолчанию
protocol тип протокола v1 - стандартный протокол ФР, v2 - альтернативный протокол. v1
timeout таймаут соединения/исполнения команды в миллисекундах число 3000
byte_timeout таймаут приёма байта по протоколу в миллисекундах число 500

Поддерживаемые схемы:

схема описание путь спец. параметры
tcp tcp сокет ip:[port] по умолчанию порт 7778 ---
serial последовательный(COM/tty) порт для Windows COM#. для UNIX - полный путь или имя устройства в /dev/ baudrate=115200 - скорость порта
btserial bluetooth rfcomm соединение адрес bluetooth устройства. пример: 000190C55E78 ---
cdcacm соединение по cdcacm средствами драйвера любой. захватывается первое устройство с известными VID/PID ---

Примеры:

ci.Set_ConnectionURI("serial://ttyUSB0?baudrate=115200&byte_timeout=10000&timeout=20000&protocol=v1");

Соединение в Linux по виртуальному COM порту USB-COM переходнику. Скорость 115200, таймаут приёма байта 10000 мс, команды 20000мс, протокол стандартный.

classic_interface ci;
ci.Set_ConnectionURI(
    "serial://COM2?timeout=5000&byte_timeout=5000&protocol=v2&baudrate=115200");
int ret = ci.Connect();

Аналогичный пример для Windows. Будет установлена связь по COM2 на скорости 115200 с таймаутом 5000 мс.

ci.Set_ConnectionURI("tcp://192.168.1.120:7778?timeout=30000&byte_timeout=30000&protocol=v1");

Соединене по TCP сокету, адрес 192.168.1.120, порт 7778. Таймаут приёма байта и таймаут команды 30000мс. (для TCP сокета не имеет смысла делать таймаут приёма байта меньше чем таймаут команды, т.к. доставка и так гарантирована на слое TCP)

ci.Set_ConnectionURI("btserial://000190C55E78?timeout=10000&byte_timeout=9999&protocol=v2");

Соединение по bluetooth rfcomm с устройством 00:01:90:C5:5E:78 таймаут 10000мс, таймаут приёма байта 9999, протокол альтернативный.

Как проверить, удалось ли установить связь

В случае, если связь установлена успешно, метод Connect вернет ноль, в противном случае DRV_IO_ERROR.

classic_interface ci;
int ret = ci.Connect();
if (ci.Connect() == DRV_IO_ERROR)
     cout << "Не удалось установить связь"

Также можно проверить значение свойства Connected

classic_interface ci;
if (ci.Get_Connected() == false)
     cout << "Не удалось установить связь"