jSerialComm 使用

@Async("asyncServiceExecutor")

public void executeAsync(SerialPort globalSerialPort,byte[] msg) {

   //logger.info("开始异步发送数据");

   if(globalSerialPort == null || !globalSerialPort.isOpen()) {

       logger.info("串口异步发送数据失败");

        return;

    }

    try{

       globalSerialPort.writeBytes(msg,msg.length);//发送数据

    }catch(Exception e){

       logger.debug(e.toString());

    }

   logger.info("串口异步发送数据结束");

}



public static SerialPort LiqSerialPort = null;

//串口初始化

public void openAndListenerLiqCOM(StringLiquidCoolCOM) {

   if(LiqSerialPort != null && LiqSerialPort.isOpen()) {

       logger.info("串口{}[isOpen:{}]已开启",LiquidCoolCOM,LiqSerialPort.isOpen());

        return;

    }


   if(LiqSerialPort == null) {

       LiqSerialPort = SerialPort.getCommPort(LiquidCoolCOM);

       LiqSerialPort.setComPortTimeouts(SerialPort.TIMEOUT_READ_SEMI_BLOCKING,0, 0);

       LiqSerialPort.setBaudRate(9600);

       LiqSerialPort.setNumDataBits(8);

       LiqSerialPort.setNumStopBits(1);

       LiqSerialPort.openPort();

       logger.info("串口{}[isOpen:{}]",LiquidCoolCOM,LiqSerialPort.isOpen());

    }

   if(!LiqSerialPort.isOpen()) {

        return;

    }

   logger.info("串口{}监听开始",LiquidCoolCOM);

   LiqSerialPort.addDataListener(new SerialPortDataListener() {

       @Override

        publicint getListeningEvents() {

           return SerialPort.LISTENING_EVENT_DATA_AVAILABLE;

        }


       @Override

        publicvoid serialEvent(SerialPortEvent serialPortEvent) {

            if(serialPortEvent.getEventType() != SerialPort.LISTENING_EVENT_DATA_AVAILABLE){

               //System.out.println(" event_type="+serialPortEvent.getEventType());

               logger.info("事件类型:"+serialPortEvent.getEventType());

                return;

            }

            try{

               int len = serialPortEvent.getSerialPort().bytesAvailable();

               byte bytes[] = new byte[len];

               serialPortEvent.getSerialPort().readBytes(bytes, len);

                logger.info("串口接收数据回报[{}]={}",len,bytes);

            } catch (Exception exp) {

               logger.debug("串口异常:"+exp.toString());

            }

        }

    });

}


//串口关闭

public void closeLiqSerialPort() {

   if(LiqSerialPort != null && LiqSerialPort.isOpen()) {

       LiqSerialPort.removeDataListener();

       LiqSerialPort.closePort();

       LiqSerialPort = null;

       logger.info("串口关闭");

    }

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 所选依赖: 工具类:一、 package com.xxx.core.util.push.enums; /** 配置...
    Y_LY阅读 1,926评论 0 2
  • hbase的更新和删除,查询数据:1,首先编写一个hbase的工具类:/** HBase 工具类*/public ...
    会飞的蜗牛66666阅读 980评论 0 0
  • 英文文档,一开始我也是抗拒的,边翻译边看,也就花费了1个小时基本就阅读过了,我的英文基础其实很差。附上链接:链接:...
    lonecolonel阅读 10,037评论 3 1
  • 当地时间21日,美国明尼阿波利斯市亨内平县检察官办公室公布刘强东事件的调查结果,决定不予起诉,这也意味着该案正式结...
    三蛋虾扯蛋阅读 2,016评论 2 18