Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα παιδιά. Έχω ένα PhidgetRFID τσιπάκι (version 205) και αντιμετωπίζω πρόβλημα όταν προσπαθώ να εντοπίσω κάποιο RFID tag (τα tags και το chip είναι ήδη έτοιμα). Έχω ψάξει στη σελίδα του κατασκευαστή (έχει διάφορα παράδειγματα) και έχω βρει τον παρακάτω κώδικα προκειμένου να κάνω αυτό που θέλω (θεωρητικά), το οποίο είναι να εντοπίζει το tag και να μου εμφανίζει το id του.

 

 

 



import com.phidgets.*;
import com.phidgets.event.*;

public class RFIDExample
{
    public static final void main(String args[]) throws Exception {
		RFIDPhidget rfid;

		System.out.println(Phidget.getLibraryVersion());

		rfid = new RFIDPhidget();
		rfid.addAttachListener(new AttachListener() {
			public void attached(AttachEvent ae)
			{
				try
				{
					((RFIDPhidget)ae.getSource()).setAntennaOn(true);
					((RFIDPhidget)ae.getSource()).setLEDOn(true);
				}
				catch (PhidgetException ex) { }
				System.out.println("attachment of " + ae);
			}
		});
		rfid.addDetachListener(new DetachListener() {
			public void detached(DetachEvent ae) {
				System.out.println("detachment of " + ae);
			}
		});
		rfid.addErrorListener(new ErrorListener() {
			public void error(ErrorEvent ee) {
				System.out.println("error event for " + ee);
			}
		});
		rfid.addTagGainListener(new TagGainListener()
		{
			public void tagGained(TagGainEvent oe)
			{
				System.out.println("Tag Gained: " +oe.getValue() + " (Proto:"+ oe.getProtocol()+")");
			}
		});
		rfid.addTagLossListener(new TagLossListener()
		{
			public void tagLost(TagLossEvent oe)
			{
				System.out.println(oe);
			}
		});
		rfid.addOutputChangeListener(new OutputChangeListener()
		{
			public void outputChanged(OutputChangeEvent oe)
			{
				System.out.println(oe);
			}
		});

		rfid.openAny();
		System.out.println("waiting for RFID attachment...");
		rfid.waitForAttachment(1000);

		System.out.println("Serial: " + rfid.getSerialNumber());
		System.out.println("Outputs: " + rfid.getOutputCount());
		
		//How to write a tag:
		//rfid.write("A TAG!!", RFIDPhidget.PHIDGET_RFID_PROTOCOL_PHIDGETS, false); 

		System.out.println("Outputting events.  Input to stop.");
		System.in.read();
		System.out.print("closing...");
		rfid.close();
		rfid = null;
		System.out.println(" ok");
		if (false) {
			System.out.println("wait for finalization...");
			System.gc();
		}
	}
}


 

 

 

Όταν τρέχω το παραπάνω, μετά από λίγο, λαμβάνω το εξής error

Phidget21 - Version 2.1.8 - Built Feb 22 2016 11:45:54
waiting for RFID attachment...
Exception in thread "main" PhidgetException 13 (Given timeout has been exceeded.)
at com.phidgets.Phidget.waitForAttachment(Native Method)
at RFIDExample.main(RFIDExample.java:58)

 
Πρώτη φορά ασχολούμαι σχετικά, οπότε έχω χαθεί λίγο. Γι'αυτό ρωτάω, δε χρειάζομαι κάποια έτοιμη απάντηση, απλά κάποιο hint ώστε να με βοηθήσει.
Οποιαδήποτε βοήθεια ευπρόσδεκτη, ευχαριστώ εκ των προτέρων! :)
Δημοσ.

 

Πρέπει να αυξήσεις το timeout  στο παρακάτω σημείο, είναι ένα δευτερόλεπτο:

rfid.waitForAttachment(1000);

Ευχαριστώ για την απάντηση :)

Το πρώτο που δοκίμασα ήταν αυτό, με βάση το error που λαμβάνω.

Δοκίμασα μέχρι και 15 δευτερόλεπτα να το αυξήσω αλλά και πάλι το ίδιο.

Ο κατασκευαστής έχει και έτοιμο app το οποίο εντοπίζει το tag και δείχνει το id. Εκεί λειτουργεί κανονικά και άμεσα (χωρίς χρονική καθυστέρηση). Γι'αυτό δε μπορώ να καταλάβω τι πάει λάθος στον κώδικα, μιας και το chipάκι δουλεύει κατά τα άλλα.

Δημοσ.

Δεν ειμαι javaς.

 

Με μια ματια που εριξα στα ντοξ, η openany είναι async, η ταιμαουτ κανει polling το isattach μπλα μπλα μπλα.

 

Το θεμα ειναι τι παιζει με τα νηματα και events στη java. Θα εκτελεστει το onattach οσο το νημα ειναι μπλοκαρισμενο;

 

Βαλε μια σε κομεντς το πρωτο event και τρεξτο.

Δημοσ.

Σε ευχαριστώ Παπί για την απάντηση :)

Βασικά, έστειλα απευθείας στο support της εταιρίας και η λύση ήταν πολύ πιο απλή.

Όταν προσπαθούσα να τρέξω τον κώδικά μου είχα ανοιχτή και την κανονική εφαρμογή.

Με αποτέλεσμα να μη μπορεί να παίξει και με τα δύο μαζί (αλλά αυτό δεν το ήξερα, ούτε το έλεγε κάπου) :P

Δοκίμασα μόνο με το δικό μου κώδικα και λειτούργησε κομπλέ.

 

Οπότε problem solved.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...