java 实现 CAN口通讯

本文介绍了如何在Java项目中引入第三方库libsocket-can-java,实现CAN口的读写操作,并详细说明了在树莓派上配置mcp2515模块驱动、安装CAN工具、设置CAN口速率及使用Java程序监听CAN消息的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、引入第三方库

链接:https://pan.baidu.com/s/1JC-Bi_Qgts5a-tGo28JcTQ?pwd=6533
提取码:6533
将第三方库 放在libs包里,并在pom文件中增加依赖

<dependency>
	<groupId>libsocket-can-java</groupId>
	<artifactId>libsocket-can-java</artifactId>
	<version>0.1.0</version>
	<scope>system</scope>
	<systemPath>${project.basedir}/libs/libsocket-can-java.jar</systemPath>
</dependency>

在这里插入图片描述

2、编写CAN口读写数据

@SpringBootApplication
public class LibsocketApplication {

    public static void main(String[] args) throws Exception {
        SpringApplication.run(LibsocketApplication.class, args);

        System.out.println("Running tests!");
        final CanSocket socket = new CanSocket(CanSocket.Mode.RAW);
        final CanSocket.CanInterface canif = new CanSocket.CanInterface(socket, "can0");
        socket.bind(canif);
        System.out.println("bind success !");
        //new CanSocket.CanId(0x5) 表示帧id,默认是标准帧,如果是扩展帧,使用这个 new CanSocket.CanId(0x5).setEFFSFF()
        socket.send(new CanSocket.CanFrame(canif,
                new CanSocket.CanId(0x5), new byte[] {1,2,3,4,5,6,7,8}));
        //循环不断接收新的消息
        while (true) {
            CanSocket.CanFrame canFrame = socket.recv(canif.getInterfaceIndex());
            System.out.println("receive data length" + canFrame.getData().length);
            System.out.println("canId:" + canFrame.getCanId());
            System.out.println("data:" + bytesToHexString(canFrame.getData()));
        }



    public static String bytesToHexString(byte[] src){
        StringBuilder stringBuilder = new StringBuilder();
        if (src == null || src.length <= 0) {
            return null;
        }
        for (int i = 0; i < src.length; i++) {
            int v = src[i] & 0xFF;
            String hv = Integer.toHexString(v);
            if (hv.length() < 2) {
                stringBuilder.append(0);
            }
            stringBuilder.append(hv);
        }
        return stringBuilder.toString();
    }

}

在这里插入图片描述

3、在树莓派配置运行

3.1 配置 mcp2515模块的驱动

sudo nano /boot/config.txt
dtparam=i2c_arm=on
dtparam=i2c0,pins_44_45
dtoverlay=i2c-rtc,pcf8563,i2c_csi_dsi
dtparam=spi=on
dtoverlay=spi1-2cs
dtoverlay=mcp2515-can1,oscillator=12000000,interrupt=25
dtoverlay=mcp2515-can0,oscillator=12000000,interrupt=24
dtoverlay=mcp2515-can2,oscillator=12000000,interrupt=23
dtparam=audio=on

在这里插入图片描述
验证安装

dmesg | grep -i can

在这里插入图片描述

3.2 安装CAN口工具

sudo apt install can-utils

3.3 启动CAN口

sudo ip link set can0 up type can bitrate 500000

或者

##回环发送  可用于测试当前程序消息的收发
sudo ip link set can0 up type can bitrate 500000 loopback on 

3.4 查看CAN口网络

ifconfig -a

在这里插入图片描述

3.5 模拟发送CAN消息

发送CAN消息

cansend can0 300#1880E0A80100

在这里插入图片描述
监听CAN口

candump can0 -L

在这里插入图片描述

3.6 使用java程序监听CAN口

在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值