Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>hammer-to-cppNew to Visual Studio Code? Get it now.
hammer-to-cpp

hammer-to-cpp

hammerhang

|
104 installs
| (0) | Free
vscode extersion demo
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

hammer-to-cpp README

该插件可以将hammer程序转换为cpp程序,生成代码的文件架构如下:

  • code
    • CMakeLists.txt
    • node.cpp
    • latcontroller
      • CMakeLists.txt
      • ...
    • loncontroller
      • CMakeLists.txt
      • ...
    • protocol
      • CMakeLists.txt
      • can
        • ...
      • tcp
        • ...

目前支持生成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
      • 其中:
      • <path> DBC文件的绝对路径
    • set(DBC <R/T> <sig1> ...) 设置DBC中信号的读写模式
      • 其中:
      • <R/T> = RX/TX 读写模式
      • <sig1> ... 一个或多个信号名
    • add_protocol(<P1>, ...) 生成协议代码
      • 其中:
      • <P1>, ... 协议类型,可以是CAN/TCP,用取值符号${}取值
    • add_controlnode(<project_name>) 生成控制节点代码
      • 其中:
      • <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})
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2025 Microsoft