java serialport_java SerialPort串口通讯的使用

java serialport_java SerialPort串口通讯的使用api文档maven依赖com.fazecastjSerialComm[2.0.0,3.0.0)基于事件的阅读用法示例可供读取的数据示例以下示例显示了使用此事件触发器的一种方法:SerialPortcomPort=SerialPort.getCommPorts()[0];comPort.openPort();comPort.addDataListener(newSerialPortData…

api文档

maven依赖

com.fazecast

jSerialComm

[2.0.0,3.0.0)

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

基于事件的阅读用法示例

可供读取的数据示例

以下示例显示了使用此事件触发器的一种方法:

SerialPort comPort = SerialPort.getCommPorts()[0];

comPort.openPort();

comPort.addDataListener(new SerialPortDataListener() {

@Override

public int getListeningEvents() { return SerialPort.LISTENING_EVENT_DATA_AVAILABLE; }

@Override

public void serialEvent(SerialPortEvent event)

{

if (event.getEventType() != SerialPort.LISTENING_EVENT_DATA_AVAILABLE)

return;

byte[] newData = new byte[comPort.bytesAvailable()];

int numRead = comPort.readBytes(newData, newData.length);

System.out.println(“Read ” + numRead + ” bytes.”);

}

});

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

非阻塞阅读用法示例

package com.bhu.utils;

import com.fazecast.jSerialComm.SerialPort;

public class SerialComm {

/*public static void main(String[] args) throws InterruptedException {

SerialComm serialComm = new SerialComm(“COM3”);

serialComm.openPort();

while (true) {

byte[] bs = serialComm.writeAndRead(“010300000002”);

Double[] d = Utils.analysisData(bs, 3, 5, 2);

if (d != null) {

for (Double a : d) {

System.out.println(a);

}

}

Thread.sleep(1000);

}

}*/

public SerialComm(String portDescriptor) {

this.portDescriptor = portDescriptor;

}

public SerialComm(String portDescriptor, Integer baudRate) {

this.portDescriptor = portDescriptor;

this.baudRate = baudRate;

}

private String portDescriptor;

private Integer baudRate;

private SerialPort comPort;

public boolean isOpen() {

return comPort.isOpen();

}

/**

* 打开串口

*

* @return 打开的状态

*/

public boolean openPort() {

return openPort(portDescriptor, baudRate);

}

/**

* 打开串口

*

* @param portDescriptor COM口

* @return 打开的状态

*/

public boolean openPort(String portDescriptor) {

return openPort(portDescriptor, null);

}

/**

* 打开串口

*

* @param portDescriptor COM口

* @param baudRate 波特率

* @return 打开的状态

*/

public boolean openPort(String portDescriptor, Integer baudRate) {

comPort = SerialPort.getCommPort(portDescriptor);

if (baudRate != null) {

comPort.setBaudRate(baudRate);

}

if (!comPort.isOpen()) {

return comPort.openPort();

} else {

return true;

}

}

/**

* 关闭串口

*

* @return

*/

public boolean closePort() {

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

return comPort.closePort();

}

return true;

}

/**

* 向com口发送数据并且读取数据

*/

public byte[] writeAndRead(String instruct) {

byte[] reslutData = null;

try {

if (!comPort.isOpen()) throw new BhudyException(BhudyExceptionCode.CODE_18);

int numWrite = comPort.writeBytes(Utils.getCRC(instruct), Utils.getCRC(instruct).length);

if (numWrite > 0) {

int i = 0;

while (comPort.bytesAvailable() > 0 && i++ < 5) Thread.sleep(20);

byte[] readBuffer = new byte[comPort.bytesAvailable()];

int numRead = comPort.readBytes(readBuffer, readBuffer.length);

if (numRead > 0) {

reslutData = readBuffer;

}

}

} catch (InterruptedException e) {

throw new BhudyException(e.getMessage());

}

return reslutData;

}

}

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

今天的文章java serialport_java SerialPort串口通讯的使用分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/12809.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注