失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > java 连接 usb串口_树莓派 3 java usb串口通讯485

java 连接 usb串口_树莓派 3 java usb串口通讯485

时间:2021-06-26 00:12:16

相关推荐

java 连接 usb串口_树莓派 3 java usb串口通讯485

0 参考链接

/qq_43725844/article/details/97682424

/fhqlongteng/article/details/80417028

/1.2/example/serial.html

/p/767fd1fbcaae

/qq_38839677/article/details/80618411

/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-/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.mandArgumentParser;

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》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。