Jump to content
View in the app

A better way to browse. Learn more.

Tinkerunity

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Geschrieben

Hallo Zusammen,

 

wie kann ich überprüfen ob ein Bricklet angeschlossen ist, z.B. das DualRelay?

In meinem Code mache ich folgendes:

IPConnection ipcon = new IPConnection(); // Create IP connection
dr = new BrickletDualRelay(UID, ipcon); // Create device object

try {
  ipcon.connect(host, port);
} catch (UnknownHostException e) {
  e.printStackTrace();
  JOptionPane.showMessageDialog(null, "Error:" + e.getMessage());
  antwort = false;
} catch (IOException e) {
  e.printStackTrace();
  JOptionPane.showMessageDialog(null, "Error:" + e.getMessage());
  antwort = false;
} catch (AlreadyConnectedException e) {
  e.printStackTrace();
  JOptionPane.showMessageDialog(null, "Error:" + e.getMessage());
  antwort = false;
}
return antwort;

 

Die Exception beziehen sich aber nur auf die IP-Connection. Und da der Brick-Daemon lokal auf dem selben Rechner läuft, wird nie eine Exception geworfen.

Es wird also immer ein True zurück gegeben, auch wenn kein Tinkerforge Modul angeschlossen ist. Ich kann sogar folgendes ausführen, ohne dass eine Exception geworfen wird:

try {
  dr.setMonoflop(relay, true, ms);
} catch (TimeoutException e) {
  e.printStackTrace();
  JOptionPane.showMessageDialog(null, "Error:" + e.getMessage());
} catch (NotConnectedException e) {
  e.printStackTrace();
  JOptionPane.showMessageDialog(null, "Error:" + e.getMessage());
}

 

Kann ich irgendwie abfragen, ob dass oben hinzugefügte Bricklet überhaupt angeschlossen ist?

Geschrieben

hi bennysamir;

 

schau doch mal unter der Doku Übergang zu 2.0

stich Wort ist Enumeration

Der Listener gibt dir Verbindung Infos zurück über die jeweiligen Hardware.

 

mfg masder

 

Geschrieben

Richtig, über den Enumerate Listener und einen ipcon.enumerate() Aufruf kannst du alle angeschlossenen Bricks und Bricklets dazu veranlassen sich zu melden.

 

dr.setMonoflop(relay, true, ms);

 

Das wirft keine TimeoutException da auf Setter wie setMonoflop standardmässig keine Antwort vom Brick(let) kommt. Dadurch können die Bindings dann nicht erkennen ob die Anfrage angekommen ist un nehmen an sie wäre es.

 

Das kannst du ändern, indem du mittels dr.setResponseExpectedAll(true) für alle Funktionen des Dual Relay Bricklets eine Antwort erzwingst. Alternative kann das auch mittels dr.setResponseExpected(BrickletDualRelay.FUNCTION_SET_MONOFLOP, true) nur für setMonoflop erzwungen werden.

 

Eine Antwort zu erzwingen hat den Vorteil, dass du in deinem Fall dann eine TimeoutException bekommst wenn kein Dual Relay Bricklet mit passender UID angeschlossen ist. Es hat aber auch den Nachteil, dass mehr Nachrichten dafür verschickt werden müssen.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.