Java 串口通信 Ubuntu
说一下我的操作过程吧
- 在Windows上先用
阿猫串口网络调试助手
,进行调试; - 在网上找Java代码,我选择的是RXTXcomm,网上代码很多,基本都一样。
- 在Windows电脑上把rxtx压缩包中的
rxtxSerial.dll
(与当前系统对应)放入jdk1.8.0_221\jre\bin目录中(事实上放在项目启动时能加载到的地方都可以) - 程序中使用
COM1
串口,9600波特率可以运行。
然后到了Ubuntu,Ubuntu上的串口不叫COM1,而是叫tty*。直接用串口的话叫/dev/ttyS*,用usb的话叫/dev/ttyUSB*,*为0-n。我用的两台电脑上一个是0-127,一个是0-63.
- 由于tty属于“dialout”组别,先把当前用户加入到这个组别,
sudo gpasswd --add user1 dialout
;我在这里重启了一下系统 - 用
dmesg | grep tty
看看系统启动过程中初始化了哪些串口设备
[ 0.000000] console [tty0] enabled
[ 1.080575] 00:01: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
[ 1.101658] 00:02: ttyS1 at I/O 0x2f8 (irq = 3, base_baud = 115200) is a 16550A
[ 2.001305] systemd[1]: Created slice system-getty.slice.
[ 2.883541] dw-apb-uart.0: ttyS4 at MMIO 0xdf14b000 (irq = 20, base_baud = 115200) is a 16550A
可以看到里面有ttyS0和ttyS1
3. 把rxtx压缩包中的librxtxSerial.so
放到项目能加载到的位置
- 在程序中把串口名改为
/dev/ttyS0
或者/dev/ttyS1
进行一下尝试。我这里用/dev/ttyS0测试成功了。
PS:在这期间,以为是驱动问题,还安装了minicom想进行调试,结果发现自己按照网上的步骤配置好了,但是不会用,找不到发送命令的地方,最后不了了之。