Пример. Установить связь. - shtrih-m/fr_drv_ng GitHub Wiki
- Установка связи по TCP через IPAddress
- Установка связи по TCP через имя компьютера
- Установка связи по COM-порту
- Установка связи через свойство ConnectionURI
- Как проверить, удалось ли установить связь
Установка связи по 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 << "Не удалось установить связь"