В проекте используется библиотека libserialport.
libserialport в виде бинарных файлов скачается автоматически при скачивании субмодулей.
Нужно установить пакет из папки deb64 (архитектура debian x64) или deb_mips (архитектура debian mipsel):
sudo apt-get install <путь до libserialport.deb>liburpc это протоколонезависимая часть библиотеки uRPC
Обычно она собирается либо как часть библиотеки uRPC для работы по какому-то протоколу (например, как часть liburmc, liburlaser, liburio - эти библиотеки генерируются на urpc.ximc.ru из файла с описанием протокола, и liburpc входит в них), либо как XiNet сервер
git clone https://github.com/EPC-MSU/liburpc
cd liburpc
git switch dev-1.0 # возможно, другая ветка или коммит
git submodule update --init --recursive
git submodule update --recursiveДля сборки на ОС linux нужно сделать всего лишь cmake + make, но это принято делать в отдельной папке build, чтобы не замусоривать этот и все зависимые проекты временными файлами:
mkdir build
cd build
cmake ..
make -j$(nproc)Скорее всего, вам не нужно этого делать: liburpc используется только для сборки urpc-xinet-server и автоматически собирается вместе с ним.
Для сборки на ОС Windows нужно использовать CMakeGUI. Запустив его, нужно указать в поле "Where is the source code" путь к корневой директории проекта liburpc. В поле "Where to build the binaries" - указать путь к папке, в которой будут находися файлы после сборки проекта. Рекомендуется выполнять сборку в отдельной папке build, чтобы не замусоривать этот и все зависимые проекты временными файлами. Нажать кнопку "Configure", выбрать "Visual Studio 12 2013 (х32)" и нажать кнопку "Finish". Нажать кнопку "Generate" и "Open Project". В открывшейся среде Visual Studio собрать проект.
XiNet это сервер, который запускается на Cubieboard (https://doc.xisupport.com/en/8smc5-usb/8SMCn-USB/Related_products/Control_via_Ethernet/Ethernet_adapters_Overview.html). Он нужен для работы с контроллерами по сети. Этот сервер не зависит от протокола, по сути он просто перенаправляет TCP трафик от xi-net://{host}/{serial} в /dev/ximc/{serial} и обратно. В этом же сервере есть мультиплексор. Это значит, можно запустить его на хосте, где подключено устройство, и подключать несколько клиентов через этот сервер.
Для сборки xinet сервера на linux нужно перейти в папку devxinet и сделать cmake + make, аналогично сборке liburpc, создав отдельную папку build:
cd devxinet
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)Для релизной сборки важно указать -DCMAKE_BUILD_TYPE=Release: обращения к xinet серверу на БВВУ происходят часто, и этот код должен быть собран с высокой оптимизацией, иначе сервер будет зависать.
Запуск:
./urpc_xinet_server [путь_до_keyfile.sqlite][debug] Параметры необязательны.
Для запуска сервера требуются права на доступ к последовательным портам в директории /dev
(пользователь должен входить в группу dialout или быть root).
На Linux сервер ищет устройства в директории /dev/ximc,
поэтому перед началом работы нужно создать ссылки на устройства в соответствующей директории:
sudo mkdir /dev/ximc
sudo ln /dev/ttyACM0 /dev/ximc/00000001Для работы xinet-сервера нужна libserialport.dll соответствующей разрядности(из libserialport_release-архива). Для сборки xinet сервера на Windows нужно перейти в папку devxinet и собрать сервер аналогично сборке liburpc, создав отдельную папку build:
Запуск: Двойным кликом мыши запустить исполняемый файл "urpc_xinet_server.exe".
На Windows, чтобы подключить клиент к устройству COMn через XiNet сервер, нужно указать адрес xi-net://localhost/n
(например, для открытия устройства с COM3, адрес будет xi-net://localhost/3).
Вместо localhost может быть IP адрес компьютера, к которому подключено устройство.
На Linux, чтобы подключить клиент к устройству /dev/ximc/<device> через XiNet, нужно указать адрес xi-net://localhost/<device>
(например, для открытия устройства с /dev/ximc/00000005, адрес будет xi-net://localhost/00000005).
Вместо localhost может быть IP адрес компьютера, к которому подключено устройство.
В целом всё работает как-то так:
