littlebot
Published on 2025-04-09 / 0 Visits
0

【源码】基于C语言的NMEA 2000通信库

项目简介

本项目是一个基于C语言的简单库,用于处理NMEA 2000通信协议。它能读取、解析和转换NMEA 2000消息,还包含多个示例程序,可展示如何使用该库与NMEA 2000总线进行通信。此项目主要用于船载设备,支持与Raymarine、TrueHeading AIS、LCJ_CV7 - W_M风传感器等设备通信。

项目的主要特性和功能

  1. NMEA 2000消息解析:支持多种NMEA 2000 PGN消息解析,涵盖系统时间、舵角、船首方向、磁偏角、速度、水深、位置、风数据等。
  2. YDWG - 02设备支持:可通过YDWG - 02设备连接到NMEA 2000总线,实现与Raymarine STNG总线的通信。
  3. 示例应用程序
    • nmea2000 - bus - dumper:详细记录NMEA 2000消息日志。
    • nmea2000 - data - viewer:基于curses的简单仪表盘应用程序,实时显示NMEA 2000数据。
    • nmea2000 - simple - msg:接收和显示简单的NMEA 2000消息。
    • ydwg - socketcan - gateway:用于在SocketCAN和YDWG - 02设备之间进行通信的网关。

安装使用步骤

1. 进入项目目录

假设用户已经下载了本项目的源码文件,进入项目目录。

2. 编译项目

使用以下命令编译项目: bash make 编译完成后,生成的可执行文件将位于build目录下。

3. 运行示例程序

  • 运行nmea2000 - bus - dumperbash LD_LIBRARY_PATH=build build/nmea2000 - bus - dumper
  • 运行nmea2000 - data - viewerbash LD_LIBRARY_PATH=build build/nmea2000 - data - viewer
  • 运行nmea2000 - simple - msgbash LD_LIBRARY_PATH=build build/nmea2000 - simple - msg

4. 使用YDWG - SocketCAN网关

如果需要与Victron Energy产品(如Cerbo)集成,可按以下步骤操作: 1. 使用Venus SDK构建项目: bash docker build -t venus - sdk:0.1 . docker run -v $(pwd):/work - it venus - sdk:0.1 bash cd work make 2. 将生成的libnmea2000.soydwg - socketcan - gateway复制到Venus设备。 3. 安装依赖库: bash opkg install libncurses5 4. 配置SocketCAN接口: bash ip link add dev vcan0 type vcan ip link set dev vcan0 down ip link set vcan0 mtu 16 ip link set dev vcan0 up 5. 运行网关程序: bash LD_LIBRARY_PATH=. ./ydwg - socketcan - gateway

注意事项

  • 该项目依赖于YDWG - 02设备进行NMEA 2000通信,需确保设备已正确配置。
  • 示例程序中的IP地址和端口目前是硬编码的,可能需要根据实际情况进行修改。

许可证

本项目采用开源许可证,具体细节请查看LICENSE文件。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】