gnu.io.NoSuchPortException

检查计算机右键属性--设备管理器里没有端口,先安装一个CH341SER;

安装驱动,选择打印机类型;

检查要求的COM端口,比特率;

都一致时还是报端口错误;

解决:

原来是要求必须32位的JDK环境;

1,安装jdk1.6_86的环境;

2,配置%java_home%;

这里还碰到一个问题是cmd中还是显示以前的版本,切换以后java -version还是1.8;解决是把javahome移到path中最面,再检查就变了过来;

3,eclipse中window里配置环境jdk1.6,

4,项目右键propertis中Buld path,拉到最下面将之前的jdk删除,add lib--jre--alterjre选择jdk或workerspace配好选择默认的,完成以后将之前的记录clear一下

回到页面就可以打印了

以下是一个简单的Java串口通信Demo: ```java import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Enumeration; import gnu.io.CommPortIdentifier; import gnu.io.PortInUseException; import gnu.io.SerialPort; import gnu.io.SerialPortEvent; import gnu.io.SerialPortEventListener; import gnu.io.UnsupportedCommOperationException; public class SerialComm implements SerialPortEventListener { private SerialPort serialPort; private InputStream inputStream; private OutputStream outputStream; private static final int BAUD_RATE = 9600; private static final int DATA_BITS = 8; private static final int STOP_BITS = 1; private static final int PARITY = SerialPort.PARITY_NONE; public static void main(String[] args) { SerialComm serialComm = new SerialComm(); serialComm.searchForPorts(); serialComm.connect(); } public void searchForPorts() { Enumeration portList = CommPortIdentifier.getPortIdentifiers(); while (portList.hasMoreElements()) { CommPortIdentifier port = (CommPortIdentifier) portList.nextElement(); if (port.getPortType() == CommPortIdentifier.PORT_SERIAL) { System.out.println(port.getName()); } } } public void connect() { CommPortIdentifier portIdentifier; try { portIdentifier = CommPortIdentifier.getPortIdentifier("COM3"); if (portIdentifier.isCurrentlyOwned()) { System.out.println("Port is currently in use"); } else { serialPort = (SerialPort) portIdentifier.open(this.getClass().getName(), 2000); serialPort.setSerialPortParams(BAUD_RATE, DATA_BITS, STOP_BITS, PARITY); inputStream = serialPort.getInputStream(); outputStream = serialPort.getOutputStream(); serialPort.addEventListener(this); serialPort.notifyOnDataAvailable(true); System.out.println("Connected to port: " + portIdentifier.getName()); } } catch (PortInUseException | UnsupportedCommOperationException | IOException | gnu.io.NoSuchPortException e) { System.out.println(e.toString()); } } public void disconnect() { if (serialPort != null) { serialPort.removeEventListener(); serialPort.close(); } } @Override public void serialEvent(SerialPortEvent spe) { if (spe.getEventType() == SerialPortEvent.DATA_AVAILABLE) { try { int availableBytes = inputStream.available(); byte[] bytes = new byte[availableBytes]; inputStream.read(bytes, 0, availableBytes); System.out.println(new String(bytes)); } catch (IOException e) { System.out.println(e.toString()); } } } } ``` 这个Demo演示了如何搜索计算机上可用的串口,连接到指定的串口,读取串口数据并在控制台上显示。你可以根据自己的需求对代码进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值