pCanBridge 扩展多通道支持:每通道独立TCP链路 + 上下行对称通道标注(m_sSrcAux)
pCanBridge: - 配置改为 channel = <通道名>,<IP>,<工作端口> 重复行(兼容旧 can_host/can_port 单通道回退), 每通道一条独立 CanEndpoint(TCP Client) + 接收线程,对应 CANET 的 CAN0=4001..CAN7=4008 - 上行 CAN_0x%08X 不变,m_sSrcAux=通道名区分来源通道 - 下行按 m_sSrcAux 路由到对应通道;回退规则:default_channel > 单通道 > 多通道告警丢弃 - buildReport 逐通道统计(连接/收发帧数/错误/重连) pCCU: - 新增 bcu_can_channel 配置(默认 CAN0),BCU 断路器下行 Post 前 SetSourceAux 指定目标通道, key 保持 CAN_TX_0x%08X(与上行通道标注对称,key 格式不变) 配置/文档:pCanBridge.moos、CanBridge_Info、pCCU.moos、missions/h100.moos、 test/pccu/pccu_it.moos 同步新格式。 验证:伪造 CANET Server 冒烟通过(多通道建链/上行解析发布/SQLite channel 列/ 下行通道路由与回退丢弃/srcAux 经 MOOSDB 往返); pccu 集成测试 PASSED(BCU 断路器下行 3 帧经新路由全部正确); pccuTest 183/183、PowerMangerTests 64/64 通过。
This commit is contained in:
@@ -14,11 +14,12 @@ using namespace std;
|
||||
void showSynopsis() {
|
||||
blk("SYNOPSIS: ");
|
||||
blk("------------------------------------ ");
|
||||
blk(" The pCanBridge application bridges CAN bus frames from a ");
|
||||
blk(" USBCAN-8E-U / CANET Ethernet-CAN converter (TCP Server mode) ");
|
||||
blk(" into the MOOSDB. Each received CAN frame is parsed from the ");
|
||||
blk(" The pCanBridge application bridges CAN bus frames between ");
|
||||
blk(" multi-channel CANET Ethernet-CAN converters (TCP Server mode) ");
|
||||
blk(" and the MOOSDB. Each channel uses its own TCP connection ");
|
||||
blk(" (CANET working port). Every CAN frame is parsed from the ");
|
||||
blk(" 13-byte CANET wire format and transparently published as a ");
|
||||
blk(" binary MOOS message. ");
|
||||
blk(" binary MOOS message (channel tagged via m_sSrcAux). ");
|
||||
blk(" ");
|
||||
}
|
||||
|
||||
@@ -61,12 +62,13 @@ void showExampleConfigAndExit() {
|
||||
blk(" AppTick = 4 ");
|
||||
blk(" CommsTick = 4 ");
|
||||
blk(" ");
|
||||
blk(" // USBCAN-8E-U/CANET 目标地址(TCP Server 模式) ");
|
||||
blk(" can_host = 192.168.0.222 // 转换器 IP ");
|
||||
blk(" can_port = 4001 // 工作端口: CAN0=4001 CAN1=4002.. ");
|
||||
blk(" // CANET 通道(可重复多行):通道名,IP,工作端口 ");
|
||||
blk(" // 工作端口: CAN0=4001 CAN1=4002 ... CAN7=4008 ");
|
||||
blk(" channel = CAN0,192.168.0.222,4001 ");
|
||||
blk(" channel = CAN1,192.168.0.222,4002 ");
|
||||
blk(" ");
|
||||
blk(" // 通道名(写入消息的 m_sSrcAux 辅助字段) ");
|
||||
blk(" can_channel_name = CAN0 ");
|
||||
blk(" // CAN_TX 下行默认通道(m_sSrcAux 为空时使用,可省略) ");
|
||||
blk(" default_channel = CAN0 ");
|
||||
blk(" ");
|
||||
blk(" // CAN 帧 SQLite 落库路径(can_frame 表) ");
|
||||
blk(" dbpath = pCanBridge_data.db ");
|
||||
@@ -85,14 +87,17 @@ void showInterfaceAndExit() {
|
||||
blk(" ");
|
||||
blk("SUBSCRIPTIONS: ");
|
||||
blk("------------------------------------ ");
|
||||
blk(" (none: publish-only application) ");
|
||||
blk(" CAN_TX_0x%08X = 下行 CAN 帧(每帧一条二进制消息) ");
|
||||
blk(" m_sVal: 二进制 data(dlc<=8 字节, MOOS_BINARY_STRING) ");
|
||||
blk(" m_sSrcAux: 目标通道名(如 CAN0;空时按回退规则: ");
|
||||
blk(" default_channel > 单通道 > 多通道告警丢弃) ");
|
||||
blk(" ");
|
||||
blk("PUBLICATIONS: ");
|
||||
blk("------------------------------------ ");
|
||||
blk(" CAN_0x%08X = CAN 帧(每帧一条二进制消息) ");
|
||||
blk(" 变量名: CAN ID 完整 4 字节十六进制, 如 CAN_0x10010001 ");
|
||||
blk(" m_sVal: 二进制 data(dlc 字节, MOOS_BINARY_STRING) ");
|
||||
blk(" m_sSrcAux: 通道名(默认 CAN0) ");
|
||||
blk(" m_sSrcAux: 通道名(如 CAN0) ");
|
||||
blk(" m_dfVal2: 原始帧信息字节 byte0 ");
|
||||
blk(" bit7=FF(1扩展/0标准) bit6=RTR(1远程/0数据) ");
|
||||
blk(" bit3~0=DLC ");
|
||||
|
||||
Reference in New Issue
Block a user