首页 > 技术文章 > Java 串口通信 Ubuntu

qlong8807 2019-11-01 16:14 原文

说一下我的操作过程吧

  1. 在Windows上先用阿猫串口网络调试助手,进行调试;
  2. 在网上找Java代码,我选择的是RXTXcomm,网上代码很多,基本都一样。
  3. 在Windows电脑上把rxtx压缩包中的rxtxSerial.dll(与当前系统对应)放入jdk1.8.0_221\jre\bin目录中(事实上放在项目启动时能加载到的地方都可以)
  4. 程序中使用COM1串口,9600波特率可以运行。

然后到了Ubuntu,Ubuntu上的串口不叫COM1,而是叫tty*。直接用串口的话叫/dev/ttyS*,用usb的话叫/dev/ttyUSB*,*为0-n。我用的两台电脑上一个是0-127,一个是0-63.

  1. 由于tty属于“dialout”组别,先把当前用户加入到这个组别,sudo gpasswd --add user1 dialout;我在这里重启了一下系统
  2. 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放到项目能加载到的位置

  1. 在程序中把串口名改为/dev/ttyS0或者/dev/ttyS1进行一下尝试。我这里用/dev/ttyS0测试成功了。

PS:在这期间,以为是驱动问题,还安装了minicom想进行调试,结果发现自己按照网上的步骤配置好了,但是不会用,找不到发送命令的地方,最后不了了之。

推荐阅读