我有一个票据验证器通过com端口连接到PC。我尝试将数据发送到账单验证器并接收输出(账单验证器通过ccnet协议进行通信) 这是我的代码-
public static void main(String[] args) throws SerialPortException {
String s[]=SerialPortList.getPortNames();
for (String x :s){
System.out.print(x);
SerialPort serialPort=new SerialPort(x);
}
try {
SerialPort serialPort=new SerialPort("COM4");
serialPort.openPort();
serialPort.setParams(9600, 8, 1, SerialPort.PARITY_NONE);
serialPort.writeString("RESET");
serialPort.setEventsMask(SerialPort.MASK_RXCHAR);
serialPort.addEventListener(new list());
System.out.println(serialPort.readBytes(5));
} catch (SerialPortException sex){
System.out.print(sex);
}
串行端口事件侦听器:
private static class list implements SerialPortEventListener{
@Override
public void serialEvent(SerialPortEvent spe) {
if (spe.isRXCHAR()&&spe.getEventValue()>0){
try {
String data =s erialPort.readString(spe.getEventValue());
} catch (SerialPortException ex) {
Logger.getLogger(Terminal.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
所以我得到了串行端口异常端口繁忙,我该如何解决?
答案 0 :(得分:0)
通常,这将在两种情况下发生: 1-您分配了错误的端口(可能是其他设备),可以通过设备管理器进行检查。 2-您之前已使用其他软件打开了它,或者您先前的代码运行仍在使用它,但尚未终止。 我在您的代码中看到您已经首先列出了所有com端口,但是您没有从中受益,这似乎是多余的。 我建议您删除代码的try部分中的所有行,而只保留openport行,然后对其他行执行此操作,以查看哪个行产生异常。