如何用Raspberry Pi、SignalK发送NMEA 2000指令重置风向仪航向?
重置Autonnic风向仪航向的实现方法
根据设备说明,发送PGN 127257(6字节数据,首字节为7,其余字节为0)即可将航向重置为0,以下是在Open Plotter + Signal K环境下的三种实现方式:
方法1:通过Signal K Web控制台发送
- 登录Signal K Web界面(默认地址:
http://raspberrypi:3000) - 进入Data Inputs & Outputs菜单,找到NMEA 2000输出设置项
- 选择「发送自定义PGN」功能,输入PGN编号
127257 - 构造6字节数据:第一个字节设为
0x07(十进制7),剩余5个字节设为0x00 - 点击发送按钮,完成航向重置
方法2:使用命令行工具发送
Open Plotter默认预装can-utils工具集,可直接通过命令行发送CAN帧:
- 先确认NMEA 2000对应的CAN接口(通常为
can0或can1),执行命令:ip link show - 发送目标CAN帧(以
can0为例):
说明:cansend can0 18F001FF#07000000000018F001FF是PGN 127257对应的广播CAN ID,#后为6字节数据(首字节07,其余为00)
方法3:通过Signal K脚本发送
利用Signal K的Node.js客户端编写简单脚本:
- 创建脚本文件
reset-heading.js,内容如下:const { Client } = require('signalk-client'); const client = new Client({ url: 'ws://localhost:3000/signalk/v1/stream' }); client.on('connect', () => { const n2kMsg = { pgn: 127257, priority: 3, destination: 255, // 广播地址 data: Buffer.from([0x07, 0x00, 0x00, 0x00, 0x00, 0x00]) }; client.sendN2KMessage(n2kMsg); console.log('航向重置命令已发送'); client.close(); }); client.connect(); - 在终端执行脚本:
node reset-heading.js
验证提示
发送命令后,可通过candump can0命令监听CAN总线,确认目标帧是否成功发送;若设备无响应,可尝试重启Autonnic风向仪后再次发送。
内容的提问来源于stack exchange,提问作者Matthew Barraud
相关产品推荐
相关产品推荐

