YanXiaoLan / spring-boot-starter-rxtx

spring-boot-starter-rxtx

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

spring-boot-starter-rxtx

spring boot 对串口的读取的快速方法 demo

与 1.0 版本的不同之处

  • 支持了多串口操作
  • maven 坐标名称有调整

使用方法

  1. 引入依赖

         <dependency>
            <groupId>cn.qqhxj.rxtx</groupId>
            <artifactId>spring-boot-starter-rxtx</artifactId>
            <version>2.1.0-RELEASE</version>
        </dependency>
  2. 启动串口自动配置 @EnableSerialPortAutoConfig

  3. 配置串口

  • 注解和配置文件重复配置可能会配置出错
  • 注解配置
@EnableSerialPorts(value = {
        @EnableSerialPort(value = "COM2", portName = "COM2")})
  • 配置文件配置
serialport:
  config:
    - portName: COM1
    - portName: COM2
  1. 串口数据读取器配置(可选)
  • 一个串口只能配置一个,不支持绑定多个串口上

  • 使用 @SerialPortBinder(value = "COM2") 绑定到指定串口

  • AnyDataReader 读取一切的数据 (默认配置)

  • ConstLengthSerialReader 读取定长的数据

  • VariableLengthSerialReader 读取有前后标识字符的数据

  • LiveControlSerialReader 读取有开始位、数据长度的数据

    大家还可以按照自己的协议实现新的数据解析器

    • 需要实现SerialReader接口
    • 不要忘记要加入到spring的IOC容器中,才能对数据进行处理哦
  1. 数据解析器配置(可选)

    大家可以自己配置需要的解析器 示例如下

    • 需要实现 SerialDataParser<T> 接口 的 public T parse(byte[] bytes) 方法。解析为相应的对象

    • 不要忘记要加入到spring的IOC容器中,才能对数据进行处理哦

    • 一个数据解析器可同时配置在多个串口上。

    • 使用 @SerialPortBinder(value = "COM2") 绑定到指定串口

      public class StringSerialDataParser implements SerialDataParser<String> {
          @Override
          public String parse(byte[] bytes) {
              return new String(bytes);
          }
      }
  2. 配置数据处理器

    没有进行任何的默认配置 需要的请自行配置

    • 要实现SerialDataProcessor<T> 接口在 public void processor(T t)方法中对数据进行处理
    • 要将该处理器加入到spring的IOC容器中。 配置方法如下所示
    • 一个数据处理器可同时配置在多个串口上。
    • 使用 @SerialPortBinder(value = "COM2") 绑定到指定串口
    @Component
    public class XXXProcessor implements SerialDataProcessor<String> {
      @Override
      public void processor(String s) {
          System.out.println(s);
      }
    }
  3. 启动

@SpringBootApplication
public class RxtxDemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(RxtxDemoApplication.class, args);
        while (true) {
            ;
        }
    }
}
  1. 获取 串口上下文 SerialContext
@Qualifier(value = "COM2.SerialContext")
@Autowired
private SerialContext serialContext;
//或者
@Lazy
@Resource
@Qualifier("COM31.SerialContext");
private SerialContext serialContext;

About

spring-boot-starter-rxtx


Languages

Language:Java 100.0%