新应用 src/pCanBridge(独立 MOOS App,单通道): - CanEndpoint:TCP Client 连接 CANET/USBCAN-8E-U 工作端口 (目标 IP/端口可配置,默认 192.168.0.222:4001=CAN0), 接收线程流式缓冲按 13 字节切帧,过滤无效 DLC(>8), 断线自动重连(非阻塞 connect+超时 / SO_RCVTIMEO 读超时)。 - 帧协议(CANET-8E-U 手册 8.1):byte0=帧信息(bit7 FF/bit6 RTR/ bit3~0 DLC),byte1~4=ID 大端,byte5~12=数据。 - MOOS 映射:变量名 CAN_0x%08X=CAN ID(不缩减),m_sVal=二进制 data(逐帧透传不限流),m_sSrcAux=通道名(can_channel_name), m_dfVal2=原始帧信息字节(用于区分标准/扩展、数据/远程帧)。 - CanDbStore:每帧落库 SQLite(can_frame 表:time/channel/ frame_info/can_id/dlc/hex,含 time、can_id 索引),参考 pCCU DbStore:预处理语句 + WAL + synchronous=NORMAL,路径由 dbpath 配置;复用 pPowerManger 的 sqlite3 amalgamation。 - AppCast 输出连接状态/收帧/发布/落库统计。 配套: - missions/h100.moos 新增 pCanBridge 配置块(板卡 dbpath 指向 data 目录)。 - build-board.sh / deploy.sh 支持 pCanBridge:产物部署 + pCanBridge.service 安装,服务列表加入第 5 个服务。 - .gitignore 忽略 bin/pCanBridge 与本机默认数据库。 已验证(板卡 192.168.0.223 实测):服务 active,连接设备正常, ~60 帧/s 透传,落库 9000+ 行 integrity ok、无丢帧。
44 lines
864 B
CMake
44 lines
864 B
CMake
#--------------------------------------------------------
|
|
# The CMakeLists.txt for: pCanBridge
|
|
# CAN(USBCAN-8E-U/CANET TCP) -> MOOSDB 透传桥 + SQLite 落库
|
|
#--------------------------------------------------------
|
|
|
|
if (${WIN32})
|
|
SET(SYSTEM_LIBS wsock32)
|
|
else (${WIN32})
|
|
SET(SYSTEM_LIBS m pthread)
|
|
endif (${WIN32})
|
|
|
|
# 复用仓库内 pPowerManger 的 sqlite3 amalgamation(相对路径引用,避免重复维护)
|
|
SET(PM_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../pPowerManger)
|
|
|
|
SET(SHARED_SRC
|
|
${PM_DIR}/sqlit3/sqlite3.c
|
|
)
|
|
|
|
SET(SRC
|
|
${SHARED_SRC}
|
|
CanEndpoint.cpp
|
|
CanDbStore.cpp
|
|
CanBridge.cpp
|
|
CanBridge_Info.cpp
|
|
main.cpp
|
|
)
|
|
|
|
ADD_EXECUTABLE(pCanBridge ${SRC})
|
|
|
|
TARGET_INCLUDE_DIRECTORIES(pCanBridge PRIVATE
|
|
${PM_DIR}
|
|
${PM_DIR}/sqlit3
|
|
)
|
|
|
|
TARGET_LINK_LIBRARIES(pCanBridge
|
|
${MOOS_LIBRARIES}
|
|
apputil
|
|
mbutil
|
|
m
|
|
pthread
|
|
dl
|
|
${SYSTEM_LIBS}
|
|
)
|