项目简介
本项目是ntcore网络表系统的实现,采用C++语言开发,主要用于机器人编程里的网络通信与数据共享。ntcore实现了v3版本的NetworkTables协议,支持Java和C++跨语言通信,借助JNI接口完成交互。项目提供了键值对存储、网络通信、事件监听、远程过程调用等功能,能够满足机器人编程中实时数据共享和通信的需求。
项目的主要特性和功能
- 键值对存储:可存储和检索布尔值、双精度浮点数、字符串等不同类型数据。
- 网络通信:基于TCP/IP协议,实现客户端和服务器通信,支持多客户端与服务器的数据交换。
- 事件监听:具备事件监听机制,可添加监听器响应网络表变化,如键值对的增、改、删。
- 远程过程调用(RPC):支持不同进程通过网络通信并请求服务。
- 持久化存储:能对数据进行持久化存储和加载,保证程序重启后数据不丢失。
- 多线程和并发处理:运用多线程和消息队列处理并发连接与数据传输,保障网络通信顺畅。
安装使用步骤
环境准备
- 安装平台原生工具链:Windows需安装Visual Studio,Mac需安装Clang,Linux需安装GCC,且工具链要支持
-std=c++11
语言标志。 - 安装平台原生JDK,以便编译时包含正确的JNI头文件。
- 若要为roboRIO交叉编译ntcore,需安装FRC ARM工具链,可从此处获取。
- 若使用CMake构建,需安装CMake,也可用Gradle构建。
编译
Gradle是主要构建系统,所有任务通过gradlew
包装器运行。
- 构建所有版本:
bash
./gradlew build
- 仅构建Native版本:
bash
./gradlew :native:build
- 仅构建ARM版本:
bash
./gradlew :arm:build
若未安装ARM工具链,可加-PskipArm
标志跳过ARM平台构建:
bash
./gradlew build -PskipArm
自定义交叉编译器
若要使用不同ARM工具链交叉编译,可指定-PcompilerPrefix=prefix-string
标志,如使用arm-linux-gnueabi-gcc
编译:
bash
./gradlew :arm:build -PcompilerPrefix=arm-linux-gnueabi-
测试
默认会为x86和x64版本构建并运行测试,可加-PwithoutTests
标志跳过:
bash
./gradlew build -PwithoutTests
发布
使用publish
命令将ntcore作为Maven风格依赖用于下游项目,会发布四个工件到~/releases/maven/development
:
bash
./gradlew publish
若要发布到其他仓库,可指定-Prepo=repo_name
标志,有效仓库有development
(默认)、beta
、stable
、release
。
若要构建带有desktop
分类器的版本,可加-PmakeDesktop
标志:
bash
./gradlew publish -PmakeDesktop
若要撤销本地发布的覆盖,需删除~/releases/maven/<repo>/edu/wpi/first/wpilib/networktables
。
运行与调试
运行生成的可执行文件或库文件,依据需求进行网络表操作和通信,可根据提供的测试用例和调试工具开展功能测试与性能优化。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】