0 参考链接

https://blog.csdn.net/qq_43725844/article/details/97682424

https://blog.csdn.net/fhqlongteng/article/details/80417028

https://pi4j.com/1.2/example/serial.html

https://www.jianshu.com/p/767fd1fbcaae

https://blog.csdn.net/qq_38839677/article/details/80618411

https://www.cnblogs.com/uestcman/p/9074737.html

1 环境装备

1.1 硬件准备

1,树莓派 2,一跟串口转485的数据线

树莓派usb串口连接 数据线, 485头连传感器设备。

2 命令调试

//可出现所有的串口

lsusb

Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

Bus 001 Device 004: ID 0403:6001 Future Technology Devices International, Ltd FT232 Serial (UART) IC

Bus 001 Device 003: ID 1a2c:2c27 China Resource Semico Co., Ltd

Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

//看到了识别成了ttyUSB0

ls -l /dev/tty*

crw--w---- 1 root tty 4, 9 Jan 3 09:17 /dev/tty9

crw-rw---- 1 root dialout 204, 64 Jan 6 01:40 /dev/ttyAMA0

crw------- 1 root root 5, 3 Jan 3 09:17 /dev/ttyprintk

crw--w---- 1 root tty 4, 64 Jan 6 01:40 /dev/ttyS0

crw-rw---- 1 root dialout 188, 0 Jan 6 02:59 /dev/ttyUSB0

//查看串口的波特率

stty -F /dev/ttyUSB0

speed 9600 baud; line = 0;

min = 0; time = 100;

-brkint -icrnl -imaxbel

-opost

-isig -icanon -iexten -echo -echoe

//查看串口的连接信息

dmesg | grep ttyUSB0

[ 6.621718] usb 1-1.4: FTDI USB Serial Device converter now attached to ttyUSB0

#保证 python 和pyserial 安装了。 树莓派4B

// 安装 pyserial

cd /tmp

wget https://project-downloads.drogon.net/wiringpi-latest.deb

sudo dpkg -i wiringpi-latest.deb

// 校验

gpio -v

pip list

//命令python查看安装到系统上的串口

python -m serial.tools.list_ports

// pyhon 调试

python

import serial

ser=serial.Serial('/dev/ttyUSB0',9600) #/dev/ttyUSB0 根据实际修改 波特率 根据传感器修改

ser.write('12345'.encode())

1.2 java代码

//确定 串口号/dev/ttyUSB0

package com.weepal.utils;// START SNIPPET: serial-snippet

import com.pi4j.io.serial.*;

import com.pi4j.util.CommandArgumentParser;

import com.pi4j.util.Console;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import java.io.IOException;

import java.util.Date;

public class SerialExample {

static final Logger log = LoggerFactory.getLogger(SerialExample.class); //日志

final static Serial serial = SerialFactory.createInstance();

/**

* This example program supports the following optional command arguments/options:

* "--device (device-path)" [DEFAULT: /dev/ttyAMA0]

* "--baud (baud-rate)" [DEFAULT: 38400]

* "--data-bits (5|6|7|8)" [DEFAULT: 8]

* "--parity (none|odd|even)" [DEFAULT: none]

* "--stop-bits (1|2)" [DEFAULT: 1]

* "--flow-control (none|hardware|software)" [DEFAULT: none]

*

* @param args

* @throws InterruptedException

* @throws IOException

*/

public static void main(String args[]) throws InterruptedException, IOException {

try {

SerialConfig config = new SerialConfig();

config.device("/dev/ttyUSB0")

.baud(Baud._9600)

.dataBits(DataBits._8)

.parity(Parity.NONE)

.stopBits(StopBits._1)

.flowControl(FlowControl.NONE);

if(args.length > 0){

config = CommandArgumentParser.getSerialConfig(config, args);

}

serial.open(config);

serial.addListener(new SerialDataEventListener() {

@Override

public void dataReceived(SerialDataEvent event) {

try {

System.out.println("[HEX DATA] " + event.getHexByteString());

System.out.println("[ASCII DATA] " + event.getAsciiString());

} catch (IOException e) {

e.printStackTrace();

}

}

});

// continuous loop to keep the program running until the user terminates the program

while(true) {

try {

String order = "010300000001";

byte[] sbuf = CRC16MUtils.getSendBuf(order);

String requestStr = CRC16MUtils.getBufHexStr(sbuf);

serial.write(HexUtils.hexStringTobyte(requestStr));

System.out.println("write 010300000001" );

}

catch(IllegalStateException ex){

ex.printStackTrace();

}

Thread.sleep(1000 * 60 *5);

}

}

catch(IOException ex) {

System.out.println(" ==>> SERIAL SETUP FAILED : " + ex.getMessage());

return;

}

}

}

// 代码结果

write 010300000001

[HEX DATA] 01,03,02,00,27,F8,5E

1.3 常见问题解决

/dev/ttyS0: Permission denied

1方法一 永久有效

//树莓派4B

vim /boot/cmdline.txt

// 注释 console-serial,115200

sudo vi /boot/cmdline.txt

// 添加 enable_uart=1

sudo vi /boot/config.tx

// 开启 uart接口 关闭shell访问,打开硬件串口

sudo raspi-config

//选择Interfacing Options -> Serial -> Yes

// 重启

sudo reboot

//权限问题

groups ${USER}

sudo gpasswd --add ${USER} dialout

2方法二 临时有效

chmod 660 /dev/ttyS0

java 连接 usb串口_树莓派 3 java usb串口通讯485相关推荐

  1. java 连接池实例_功能完善的Java连接池调用实例

    /** * Title: ConnectPool.java * Description: 连接池管理器 * Copyright: Copyright © 2002/12/25 * Company: * ...

  2. 树莓派Java程序运行_树莓派上Java程序作为linux服务并开机自动启动

    http://www.iigrowing.cn/shu_mei_pai_shang_java_cheng_xu_zuo_wei_linux_fu_wu_bing_kai_ji_zi_dong_qi_d ...

  3. java设置pdf加密_如何使用Java对PDF进行加密,密码保护和设置受限权限

    java设置pdf加密 Today we will be looking at the document workhorse that is PDF, and how to programmatica ...

  4. java io 网络编程_[笔面] Java IO和网络编程相关面试

    1.网络编程时的同步.异步.阻塞.非阻塞? 同步:函数调用在没得到结果之前,没有调用结果,不返回任何结果. 异步:函数调用在没得到结果之前,没有调用结果,返回状态信息. 阻塞:函数调用在没得到结果之前 ...

  5. java获取机器号_(转)JAVA获得机器码的实现

    http://yangshangchuan.iteye.com/blog/2012401 首先,定义了一个统一的接口,以支持不同操作系统不同实现的透明切换: Java代码  收藏代码 /** *生成机 ...

  6. java string的作用_浅谈java String不可变的好处

    一.java内部String类的实现: java 8: public final class String implements java.io.Serializable, Comparable, C ...

  7. 新手学java 学哪方面_初学者学Java应从哪些方面学习?

    原标题:初学者学Java应从哪些方面学习? Java作为应用于网络的最好语言,前景无限看好.然而,就算用Java建造一个不是很烦琐的web应用,也不是件轻松的事情.那么,初学者学Java应从哪些方面学 ...

  8. java mysql 输入数据库_如何用JAVA录入数据到SQL数据库

    Java可以使用e68a8462616964757a686964616f31333361326236JDBC对数据库进行读写.JDBC访问一般分为如下流程: 1.加载JDBC驱动程序: 在连接数据库之 ...

  9. java象棋实验报告_中国象棋java程序设计实验报告

    中国象棋java程序设计实验报告 东北大学秦皇岛分校信息与计算科学系Java 程序设计实验报告专业名称 信 息 与 计 算 科 学班级学号 7080206学生姓名 彭 军指导教师 王 薇完成时间 20 ...

最新文章

  1. .net_ckeditor+ckfinder的图片上传配置
  2. 病毒周报(100719至100725)
  3. Web前端是做什么的?就业前景如何?
  4. CodeForces - 182D Common Divisors(KMP的next数组)
  5. [前端随笔][css] 弹性布局
  6. window.open()详解
  7. android证书别名,android – 了解密钥库,证书和别名
  8. python多线程插入1万条数据
  9. 华为正式发布鸿蒙OS操作系统,分布式架构首次用于终端
  10. 【转】数组指针指针数组
  11. Java(随笔)——利用HTML,CSS,JavaScript,JQuery编写的简易计算器
  12. 新版音乐网站系统源码Sourcecode
  13. 利用Hownet进行语义相似度计算的类(
  14. 实训报告万能模板计算机专业,计算机实训报告模板
  15. c4d-c4d制作全景视频和全景图片
  16. 使用Dockerfile制作ffmpeg镜像
  17. 增量式编码器和绝对式编码器区别
  18. JAVAWEB常用测试浏览器
  19. 【二维前缀和】小白月赛-秘法地震
  20. mysql的zip安装教程

热门文章

  1. drools规则引擎可视化
  2. win10大漠抓取图片颜色有彩色边边解决方案
  3. 第十周训练总结(一)
  4. 商汤科技冲刺上市:累计研发投入达70亿元,营收超过其他三家之和
  5. BUUCTF MISC刷题笔记(六)
  6. [渝粤教育] 西南科技大学 中国税制 在线考试复习资料
  7. 用ea逆向工程代码生成类图
  8. 086-vdbench
  9. java接口汽车品牌_根据品牌获取所有车型示例代码
  10. 汇聚各国杀毒软件...世界五大杀毒