java 实现 CAN口通讯

news2025/2/23 6:44:13

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

3.4 查看CAN口网络

ifconfig -a

在这里插入图片描述

3.5 模拟发送CAN消息

发送CAN消息

cansend can0 300#1880E0A80100

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

candump can0 -L

在这里插入图片描述

3.6 使用java程序监听CAN口

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1207122.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

istio学习笔记-安装

Istioldie 1.18 / 安装指南 基于Kubernetes的Istio的微服务架构需要安装以下组件&#xff1a; Istio控制平面组件&#xff1a;包括Istio-Pilot、Istio-Policy、Istio-Telemetry等。这些组件负责微服务的管理和配置&#xff0c;如流量管理、策略执行、遥测数据收集等。数据平面…

嵌入式软件开发要注意这七种错误!

软件行业的工作经验和你从事这个行业的工作年限直接相关。 这句话在某种程度上是对的&#xff0c;但是你从事这项工作的年限&#xff0c;并不一定代表你获得了相同年限的工作经验&#xff0c;正如一句话所说&#xff1a;“我们以为我们是工作了十年&#xff0c;其实却只有一年…

微服务的注册发现和微服务架构下的负载均衡

文章目录 微服务注册模型服务注册与发现怎么保证高可用【1. 服务端崩溃检测】【2. 客户端容错】【3. 注册中心选型】 微服务架构下的负载均衡【1.轮询与加权轮询】【2.随机与加权随机】【3.哈希与一致性哈希】【4.最少连接数】【5.最少活跃数】【6.最快响应时间】【总结】 负载…

周报5_YMK

周报5 论文&#xff1a;FLASHDECODING: FASTER LARGE LANGUAGE MODEL INFERENCE ON GPUS https://arxiv.org/pdf/2311.01282.pdf 在斯坦福大学团队的 Tri Dao 等人提出了 FlashAttention 和 FlashDecoding 后&#xff0c;相关的工作又被很快提出&#xff0c;上周来自无问芯穹…

房地产信息展示服务预约小程序的作用是什么

市场中房产品牌很多&#xff0c;中介也比较多&#xff0c;各个品牌在城市中竞争激烈&#xff0c;然而随着线下流量匮乏及多种难题&#xff0c;传统商家线下经营方式变的很低效&#xff0c;急需通过线上实现增长。 房产不同于其它产品&#xff0c;转化时间较长&#xff0c;但又…

RedCap推动5G规模应用,紫光展锐赋能产业高质量发展

5G R17 RedCap作为面向中高速物联网场景的关键技术和解决方案&#xff0c;可以大幅降低终端的复杂度、成本和功耗。在当前国内5G应用规模化发展关键时期&#xff0c;5G R17 RedCap拥有广大的市场潜力与广泛的应用场景&#xff0c;将有助于推动5G规模应用、构建融通发展的5G生态…

快手自动引流软件的运行分享,以及涉及到技术与核心代码分享

先来看实操成果&#xff0c;↑↑需要的同学可看我名字↖↖↖↖↖&#xff0c;或评论888无偿分享 一、引言 引流是任何网络创业者或营销人员必备的技能之一。手动引流不仅耗时&#xff0c;而且效果难以保证。因此&#xff0c;自动引流软件应运而生&#xff0c;成为许多人的得力助…

多区域LCC-HVDC一次调频二次调频

多区域LCC-HVDC高压直流互联一次二次调频&#xff0c;后续可加入双馈永磁风机调频&#xff0c;储能调频等。多个四机两区域模型互联。 目前实现的主要是区域之间的调频。

掌握这11点外贸知识,能够给你外贸工作带来很大提升!

01.产品展示 关于产品展示&#xff0c;非常重要也一再提及&#xff0c;一个好的产品必须包括以下几部分&#xff1a; ● 产品标题准确概括产品&#xff1b; ● 产品图片清晰且包括细节图&#xff1b; ● 提供详尽的产品描述&#xff0c;比如型号、尺寸、材质、配件等等。最好…

【Android】统一系统动画

需求&#xff1a;除panel动画效果为弹出之外&#xff0c;其余的应用效果为渐入渐出 从系统层面统一把控动画效果&#xff0c;而不是单个应用自己处理 Android系统版本&#xff1a;9.0 代码地址 \frameworks\base\core\res\res\values\styles.xml 当时看注释&#xff0c;以为…

目标检测算法 - YOLOv2

文章目录 1. Batch Normalization2. High Resolution Classifier3. Anchor、Dimension Cluster、Direct location prediction4. Loss Function5. Fine-Grained Features6. Multi-Scale Training7. Faster8. Stronger Better&#xff0c;Faster&#xff0c;Stronger。 2017年&am…

使用 request 和 cheerio 库来发送 HTTP 请求

首先&#xff0c;我们需要导入所需的库。在这个例子中&#xff0c;我们将使用 request 和 cheerio 库来发送 HTTP 请求和解析 HTML。 import request from request; import cheerio from cheerio;然后&#xff0c;我们需要定义一个函数来发送请求并解析响应。 function getHt…

『MySQL快速上手』-⑧-内置函数

文章目录 1.日期函数1.1 获得年月日1.2 获得时分秒1.3 获得时间戳1.4 在日期的基础上加日期1.5 在日期的基础上减去时间1.6 计算两个日期之间相差多少天案例1案例22.字符串函数案例3.数学函数4.其他函数1.日期函数 1.1 获得年月日

【极客时间-系列教程】Vim 实用技巧必知必会-基本概念和基础命令:应对简单的编辑任务

vim很强大&#xff0c;但它的入门确实是比较高&#xff0c;对于初学者来说&#xff0c;怎么退出都是一件很难的事情&#xff0c; 不管你有没有遇到过&#xff0c;反正我是遇到过退出比较难的问题 首先介绍几个常用的命令和按键 :q! 退出不保存:w 写入不退出:r 读文件:wq 写入…

The 8th China Open Source Conference Successfully Concludes

由开源社主办的第八届中国开源年会&#xff08;COSCon23&#xff09;于 2023年10月29日在成都圆满收官。本次大会&#xff0c;为期两天&#xff0c;线下参会报名逾千人次&#xff0c;在线直播观看人数总计 168610 人&#xff0c;直播观看次数达 248725 次&#xff0c;官网累计浏…

屏幕录制为什么没有声音?让我来告诉你答案

在日常生活和工作中&#xff0c;屏幕录制是一项非常有用的技能&#xff0c;无论是为了记录教程、演示软件&#xff0c;还是分享游戏经验。然而&#xff0c;有时您可能会遇到一个常见的问题&#xff0c;录制的视频没有声音。本文将深入解析屏幕录制为什么没有声音&#xff0c;并…

合众汽车选用风河Wind River Linux系统

导读合众新能源汽车股份有限公司近日选择了Wind River Linux 用于开发合众智能安全汽车平台。 合众智能安全汽车平台(Hozon Automo-tive Intelligent Security Vehicle Plat-form)是一个面向高性能服务网关及车辆控制调度的硬件与软件框架&#xff0c;将于2024年中开始投入量产…

JCJC错别字检测系统安装部署手册

本手册是针对 Ubuntu 服务器环境的安装使用说明。CentOS安装手册&#xff0c;请参考连接&#xff1a; JCJC错别字系统部署-腾讯云开发者社区-腾讯云 。 安装步骤&#xff1a; 第一步&#xff1a;安装 docker 离线方式在Ubuntu 18.04 上安装Docker &#xff0c;参考连接&am…

TypeError: Can‘t parse ‘center‘. Sequence item with index 0 has a wrong type

报错代码 import sys sys.path.append(rD:\文档\Temp\WX-FIles\data) # sys.path.append(rD:\文档\Temp\WX-FIles\data)p11 [125, 195] p12 [200, 275] # and the corresponding two points on the second image are:p21 [120, 190] p22 [200, 280] # TODO: write your ow…

Shiro快速入门之三

一、前言 接Shiro快速入门之二&#xff0c;上篇侧重于介绍认证&#xff0c;这篇介绍一下Shiro的授权&#xff0c;先初始化5张表的数据。 注&#xff1a;创建三条权限记录&#xff0c;一个admin角色分配查询和添加用户权限&#xff0c;一个账户qingcai18036授予管理员角色。 二…