hammer-to-cpp README
该插件可以将hammer程序转换为cpp程序,生成代码的文件架构如下:
- code
- CMakeLists.txt
- node.cpp
- latcontroller
- loncontroller
- protocol
目前支持生成protocol/can相关代码,以及node.cpp和相关CMakeLists.txt
使用方法
- 新建一个后缀名为.hammer的文件
- 语法说明:
// 行注释
set(<CAN/can> <R/T> <id> <name> <start> <length> <order> <type> <factor> <offset>) 设置CAN信号信息到变量 CAN
- 其中:
<R/T> = RX/TX 读写模式
<id> CAN报文ID
<name> 信号名
<start> 起始位
<length> 数据长度
<order> = Intel/Motorola/Motorola_MSB 编码格式
<type> = Signed/Unsigned 数据类型
<factor> 数据精度
<offset> 数据偏移
set(CAN <DBC/dbc> "<path>") 解析DBC并将CAN信号信息存入变量CAN
set(DBC <R/T> <sig1> ...) 设置DBC中信号的读写模式
- 其中:
<R/T> = RX/TX 读写模式
<sig1> ... 一个或多个信号名
add_protocol(<P1>, ...) 生成协议代码
- 其中:
<P1>, ... 协议类型,可以是CAN/TCP,用取值符号${}取值
add_controlnode(<project_name>) 生成控制节点代码
message(<value>) 打印变量值
- 其中:
<value> 变量,用取值符号${}取值,目前支持内置变量 CAN/DBC
- 在xxx.hammer文件内点击右上角的
</> 符号即可生成代码
示例
//设置CAN报文信息
set(can RX 110 VCU_ChassisDriverEnSta 4 2 Intel Unsigned 1 0)
set(can RX 110 speed_ms2 4 2 Intel Unsigned 1 0)
//set(can RX 310 speed_ms3 4 2 Intel Unsigned 1 0)
//set(can RX 410 speed_ms4 4 2 Intel Unsigned 1 0)
set(CAN TX 112 steer1 0 2 Intel Unsigned 1 0)
set(CAN TX 112 steer2 2 4 Intel Unsigned 1 0)
set(CAN TX 112 steer3 6 2 Intel Unsigned 1 0)
//设置CAN报文信息为DBC
set(CAN DBC "/home/hammerhang/Desktop/test/flex_bison/pix_plk_self_driving_1.0_20230220.dbc")
//args
set(DBC RX
VCU_ChassisDriverEnSta
VCU_ChassisDiverSlopover
VCU_ChassisDriverModeSta
VCU_ChassisGearFb
)
set(DBC TX
VCU_ChassisBrakeEnSta
VCU_VehicleBrakeLampFb
VCU_ChassisEpbFb
)
//生成protocol
add_protocol(${CAN})
//生成control_node
add_controlnode(control_402)
//message(${DBC})
| |