java 连接 usb串口_树莓派 3 java usb串口通讯485
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相关推荐
- java 连接池实例_功能完善的Java连接池调用实例
/** * Title: ConnectPool.java * Description: 连接池管理器 * Copyright: Copyright © 2002/12/25 * Company: * ...
- 树莓派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 ...
- java设置pdf加密_如何使用Java对PDF进行加密,密码保护和设置受限权限
java设置pdf加密 Today we will be looking at the document workhorse that is PDF, and how to programmatica ...
- java io 网络编程_[笔面] Java IO和网络编程相关面试
1.网络编程时的同步.异步.阻塞.非阻塞? 同步:函数调用在没得到结果之前,没有调用结果,不返回任何结果. 异步:函数调用在没得到结果之前,没有调用结果,返回状态信息. 阻塞:函数调用在没得到结果之前 ...
- java获取机器号_(转)JAVA获得机器码的实现
http://yangshangchuan.iteye.com/blog/2012401 首先,定义了一个统一的接口,以支持不同操作系统不同实现的透明切换: Java代码 收藏代码 /** *生成机 ...
- java string的作用_浅谈java String不可变的好处
一.java内部String类的实现: java 8: public final class String implements java.io.Serializable, Comparable, C ...
- 新手学java 学哪方面_初学者学Java应从哪些方面学习?
原标题:初学者学Java应从哪些方面学习? Java作为应用于网络的最好语言,前景无限看好.然而,就算用Java建造一个不是很烦琐的web应用,也不是件轻松的事情.那么,初学者学Java应从哪些方面学 ...
- java mysql 输入数据库_如何用JAVA录入数据到SQL数据库
Java可以使用e68a8462616964757a686964616f31333361326236JDBC对数据库进行读写.JDBC访问一般分为如下流程: 1.加载JDBC驱动程序: 在连接数据库之 ...
- java象棋实验报告_中国象棋java程序设计实验报告
中国象棋java程序设计实验报告 东北大学秦皇岛分校信息与计算科学系Java 程序设计实验报告专业名称 信 息 与 计 算 科 学班级学号 7080206学生姓名 彭 军指导教师 王 薇完成时间 20 ...
最新文章
- .net_ckeditor+ckfinder的图片上传配置
- 病毒周报(100719至100725)
- Web前端是做什么的?就业前景如何?
- CodeForces - 182D Common Divisors(KMP的next数组)
- [前端随笔][css] 弹性布局
- window.open()详解
- android证书别名,android – 了解密钥库,证书和别名
- python多线程插入1万条数据
- 华为正式发布鸿蒙OS操作系统,分布式架构首次用于终端
- 【转】数组指针指针数组
- Java(随笔)——利用HTML,CSS,JavaScript,JQuery编写的简易计算器
- 新版音乐网站系统源码Sourcecode
- 利用Hownet进行语义相似度计算的类(
- 实训报告万能模板计算机专业,计算机实训报告模板
- c4d-c4d制作全景视频和全景图片
- 使用Dockerfile制作ffmpeg镜像
- 增量式编码器和绝对式编码器区别
- JAVAWEB常用测试浏览器
- 【二维前缀和】小白月赛-秘法地震
- mysql的zip安装教程