java 实现 CAN口通讯

1、引入第三方库

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

<dependency>
	<groupId>libsocket-can-javagroupId>
	<artifactId>libsocket-can-javaartifactId>
	<version>0.1.0version>
	<scope>systemscope>
	<systemPath>${project.basedir}/libs/libsocket-can-java.jarsystemPath>
dependency>

java 实现 CAN口通讯_第1张图片

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 !");
        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

java 实现 CAN口通讯_第2张图片
验证安装

dmesg | grep -i can

java 实现 CAN口通讯_第3张图片

3.2 安装CAN口工具

sudo apt install can-utils

3.3 启动CAN口

sudo ip link set can0 up type can bitrate 500000

3.4 查看CAN口网络

ifconfig -a

java 实现 CAN口通讯_第4张图片

3.5 模拟发送CAN消息

发送CAN消息

cansend can0 300#1880E0A80100

java 实现 CAN口通讯_第5张图片
监听CAN口

candump can0 -L

在这里插入图片描述

3.6 使用java程序监听CAN口

java 实现 CAN口通讯_第6张图片

你可能感兴趣的:(java,开发语言,物联网)