我需要一些关于 EventListeners 如何在 java 中工作的帮助。老实说,我唯一知道如何使用的监听器是ActionListeners,所以请原谅我不知道怎么做。首先,我想做一些参考。
我在java和EPOCH上开发RFID扫描仪桌面应用程序给了我这个:JSSC
JSSC 能够为我提供读取 RFID 所需的工具,但这一次,我已经发布了在我的应用程序上实现它。
这是我当前的代码:
一、进口
import jssc.SerialPort;
import jssc.SerialPortEvent;
import jssc.SerialPortEventListener;
import jssc.SerialPortException;
现在对于课程:
class SerialPortReader implements SerialPortEventListener {
SerialPort serialPort;
@Override
public void serialEvent(SerialPortEvent event) {
if(event.isRXCHAR()){//If data is available
if(event.getEventValue() == 10){//Check bytes count in the input buffer
//Read data, if 10 bytes available
try {
byte buffer[] = serialPort.readBytes(10);
}
catch (SerialPortException ex) {
System.out.println(ex);
}
}
}else if(event.isCTS()){//If CTS line has changed state
if(event.getEventValue() == 1){//If line is ON
System.out.println("CTS - ON");
}
else {
System.out.println("CTS - OFF");
}
}else if(event.isDSR()){///If DSR line has changed state
if(event.getEventValue() == 1){//If line is ON
System.out.println("DSR - ON");
}else {
System.out.println("DSR - OFF");
}
}
}
}
public class TestRF extends javax.swing.JFrame implements SerialPortEventListener{
SerialPort serialPort;
public TestRF() {
initComponents();
setSerialPort();
}
public void setSerialPort(){
SerialPort serialPort = new SerialPort("COM7");
try {
serialPort.openPort();//Open serial port
serialPort.setParams(9600, 8, 1, 0);//Set params.
byte[] buffer = serialPort.readBytes(10);//Read 10 bytes from serial port
//serialPort.closePort();//Close serial port
serialPort.addEventListener(this);//Add SerialPortEventListener
}
catch (SerialPortException ex) {
System.out.println(ex);
}
}
最后,抽象方法。(老实说,我不知道这是做什么的,我现在正在捡书。
@Override
public void serialEvent(SerialPortEvent spe) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
简单来说。我需要让我的 RFID 读取该值并将其传递到项目中的任何位置。我什至想过尝试将我的 JFrame 类扩展到类文件,但到目前为止,没有运气。教程有人吗?
您可以创建 2 个线程。 第一个线程从串行端口 (RFID) 读取数据,第二个线程处理特定于应用程序的任务。还可以考虑在 java 中使用串行通信管理器库进行串行端口通信。
请分享RFID硬件细节,以便我们可以考虑使用它的最佳应用程序设计。