Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSSC-将SerialPortEventListener添加到JFrame_Java_Swing_Jframe_Rfid_Jssc - Fatal编程技术网

Java JSSC-将SerialPortEventListener添加到JFrame

Java JSSC-将SerialPortEventListener添加到JFrame,java,swing,jframe,rfid,jssc,Java,Swing,Jframe,Rfid,Jssc,我需要一些关于EventListeners如何在java中工作的帮助。老实说,我唯一知道如何使用的听众是ActionListeners,所以请原谅我不知道如何使用。首先,我想介绍一些参考资料 我正在java上开发RFID扫描仪桌面应用程序,EPOCH给了我以下信息: JSSC能够为我提供读取RFID所需的工具,但这一次,我发布了在我的应用程序上实现它的命令 这是我目前的代码: 第一,进口 import jssc.SerialPort; import jssc.SerialPortEvent;

我需要一些关于EventListeners如何在java中工作的帮助。老实说,我唯一知道如何使用的听众是ActionListeners,所以请原谅我不知道如何使用。首先,我想介绍一些参考资料

我正在java上开发RFID扫描仪桌面应用程序,EPOCH给了我以下信息:

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);
        }
    }
最后是抽象方法。。(老实说,我不知道这有什么用,我现在正在捡书。)

简单地说。我需要让我的RFID读取并在我的项目中的任何地方传递该值。我甚至想过尝试将我的JFrame类扩展到一个类文件,但到目前为止,没有成功。
教程有人吗?

您可以创建两个线程。第一个线程从串行端口(RFID)读取数据,而第二个线程处理特定于应用程序的任务。在java中,考虑使用串口通信管理器库进行串口通信。
请分享RFID硬件详细信息,以便我们可以考虑使用它的最佳应用程序设计。

您想摆脱
抛出新的UnsupportedOperationException(“尚未受支持”),否则您可能会遇到一些意想不到的问题。您需要在
SerialPortReader
TestRF
类之间使用某种类型的。但是要注意,Swing是单线程的,并且不是线程安全的,因此您需要确保没有阻止EDT,而且您对UI所做的任何更新都是在EDT的上下文中完成的。查看更多详细信息了解程序员的答案,这是非常有趣的,因为我需要学习线程,但现在我只需要这一个工作。我注意到你为什么推荐我使用这些链接。我让应用程序正常工作,没有错误,但有一个陷阱。在实际的jFrame出现之前,我需要先刷ID!那是错的。这个问题有临时解决办法吗?5小时后,我的导师会检查这个程序。
@Override
    public void serialEvent(SerialPortEvent spe) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }