有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么当我向RFID扫描仪索要最后一个标签时会出错

对于学校的一个项目,我必须与多个PHIDGET合作。我创建了一个类,它打开一个管理器,扫描连接的phidget,并根据phidget的类型初始化它们的侦听器。其中一个是RFID扫描仪。现在,为了测试这个phidget,我创建了这个初始值设定项方法(由于创建了两个额外的侦听器而缩短了代码,但是没有创建错误)

public void initRFIDPhidget(RFIDPhidget rfid, int serialNumber){
    try {
        rfid.open(serialNumber);
        rfid.waitForAttachment();
        rfid.setAntennaOn(true);
        rfid.setLEDOn(false);
    } catch (PhidgetException ex) {
        Logger.getLogger(PhidgetMain.class.getName()).log(Level.SEVERE, null, ex);
    }
    rfid.addTagGainListener(new TagGainListener(){
        public void tagGained(TagGainEvent tge) {
            try {
                System.out.println(Boolean.toString(rfid.getTagStatus()));
                if(rfid.getTagStatus())
                    System.out.println((rfid.getLastTag())); //  <--- This line
                rfid.setLEDOn(true);
            } catch (PhidgetException ex) {
                Logger.getLogger(PhidgetMain.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    });
}

正如你所看到的,有一行给了我一个小问题。每当我请求getLastTag()方法时,它都会给我一个巨大的运行时错误。奇怪的是,只有当我启动程序时,我的标签远离phidget,这种情况才会发生。如果我的标签在初始化时位于RFID扫描仪上,它将正常运行

你们知道为什么会这样吗

编辑:正如被问到的,我正在添加其余的代码和完整的错误消息

 //test variable
public static final String TEST_TAG_ID = "1e00acf9d4";

//used variables
private Manager phidgetMgr;
private Vector phidgetVec;

public static void main(String[] args){
    new PhidgetMain();
    //Initialize other programs in different threads here
}

public PhidgetMain(){
    try {
        phidgetMgr = new Manager();
        phidgetMgr.open();
        System.out.println("MANAGER OPENED\nWAITING FOR PHIDGETS TO CONNECT...");

        //Give phidgets time to connect
        Thread.sleep(1000);

        //Iterate through phidgets and initialize them
        System.out.println("OPENING PHIDGETS");
        phidgetVec = phidgetMgr.getPhidgets();
        for(int i = 0; i<phidgetVec.size(); i++){
            System.out.println("OPENING PHIDGET NUMBER " + (i+1));
            System.out.println("PHIDGET ID CODE: "+((Phidget)phidgetVec.get(i)).getDeviceID()); //Number identical for the type of phidget
            System.out.println("PHIDGET SERIAL NUMBER: "+((Phidget)phidgetVec.get(i)).getSerialNumber());
            try{
                if(((Phidget)phidgetVec.get(i)).getDeviceID()==Phidget.PHIDID_RFID_2OUTPUT){
                    RFIDPhidget rfid = new RFIDPhidget();
                    initRFIDPhidget(rfid,((Phidget)phidgetVec.get(i)).getSerialNumber());
                } else if(((Phidget)phidgetVec.get(i)).getDeviceID()==Phidget.PHIDID_INTERFACEKIT_8_8_8/*CONSTANTE KAN NIET KLOPPEN ZOEK DE OUTPUT TUSSEN DE CONSTANTEN IN DEZE LINK: http://www.phidgets.com/documentation/web/javadoc/ */){
                    InterfaceKitPhidget ikp = new InterfaceKitPhidget();
                    initInterfaceKitPhidget(ikp,((Phidget)phidgetVec.get(i)).getSerialNumber());
                }
            } catch(PhidgetException ex){
                System.out.println("OPENING PHIDGET NUMBER " + (i+1) + " THREW AN EXCEPTION");
            }
        }
    } catch (PhidgetException | InterruptedException ex) {
        Logger.getLogger(PhidgetMain.class.getName()).log(Level.SEVERE, null, ex);
    }
}

这是完整的输出:

WAITING FOR PHIDGETS TO CONNECT...
OPENING PHIDGETS
OPENING PHIDGET NUMBER 1
PHIDGET ID CODE: 49
PHIDGET SERIAL NUMBER: 88983
RFID SCANNER OPENED
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x0000000050fc9890, pid=12772, tid=17936
#
# JRE version: Java(TM) SE Runtime Environment (8.0_73-b02) (build 1.8.0_73-b02)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.73-b02 mixed mode windows-amd64 compressed oops)
# Problematic frame:
# V  [jvm.dll+0x279890]
#
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
#
# An error report file with more information is saved as:
# C:\Users\Typhaon\Documents\NetBeansProjects\FYS\hs_err_pid12772.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp
#
C:\Users\Typhaon\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 4 seconds)

共 (0) 个答案