Jump to content

Problem beim Callback IndustrialDigitalIn V2


emeyer

Recommended Posts

Hallo alle zusammen,

ich habe ein kleines Problem beim Auslesen eines neuen IndustrialDigitalIn V2 Bricklets. Nachdem der Callback ausgelöst wurde bekomme ich keine Ergebnisse in den Arrays changed und value obwohl da was sein muss.  :-\

 

Vielleicht sieht jemand den Baum im Wald der Fehler und kann mir einen

kleinen Tipp geben.

 

Vielen Dank im voraus.

 

Anbei der PHP-Code und darunter die Consolen-Ausgabe des var_dumps.

 

<?php

require_once('Tinkerforge/IPConnection.php');
require_once('Tinkerforge/BrickletIndustrialDigitalIn4V2.php');

use Tinkerforge\IPConnection;
use Tinkerforge\BrickletIndustrialDigitalIn4V2;


const HOST = 'localhost';     // Adresse des Hosts
const PORT = 4223;            // Port des Stapels


const INDI_1_2  = 'Gp5';      // Unique ID Industrial digital in V2 1 - 2  Brick 6wTk39 - A


$ipcon = new IPConnection();  // Create IP connection
$ipcon->connect(HOST, PORT);  // Connect to brickd


$indi12 = new BrickletIndustrialDigitalIn4V2(INDI_1_2,$ipcon); // Platz 1 

function cb_interrupt12($changed,$value)
{
var_dump($changed)."\n";
var_dump($value)."\n";
}

  $indi12->registerCallback(BrickletIndustrialDigitalIn4V2::CALLBACK_ALL_VALUE, 'cb_interrupt12');  // CALLBACK einrichten
  $indi12->setAllValueCallbackConfiguration(100,TRUE);
  
  
  $ipcon->dispatchCallbacks(-1);



$ipcon->disconnect();


?>

 

Ausgabe :

 

--------------------> INPUT GEHT AUF TRUE <-------------------------------------------------------------
administrator@bfubsscr1:/opt/scripte/platzbelegtanzeige$ php -f indiV2_test.php

Notice: Undefined index: changed1 in /opt/scripte/platzbelegtanzeige/Tinkerforge/IPConnection.php on line 1388

Notice: Undefined index: value1 in /opt/scripte/platzbelegtanzeige/Tinkerforge/IPConnection.php on line 1388
array(4) {
  [0]=>
  bool(false)
  [1]=>
  bool(false)
  [2]=>
  bool(false)
  [3]=>
  bool(false)
}


--------------------> INPUT GEHT AUF FALSE <-------------------------------------------------------------
array(4) {
  [0]=>
  bool(false)
  [1]=>
  bool(false)
  [2]=>
  bool(false)
  [3]=>
  bool(false)
}

 

Link zu diesem Kommentar
Share on other sites

Habs gefunden, das "entpacken" von Bool-Arrays funktionierte nicht wenn das Array in ein einzelnes Byte passt.

 

Hier ist der Fix: https://github.com/Tinkerforge/generators/commit/cd530f5c5fac87a5e6fcd450b3578734a91f1c09

 

Wird dann mit dem nächsten Bindings-Release gefixt. In der Zwischenzeit kannst du aber das diff im Link einfach schonmal auf deine IPConnection.php anwenden, sind nur 3 zusätzliche Zeilen.

Link zu diesem Kommentar
Share on other sites

Erst mal herzlichen Dank für die superschnelle Antwort und den Bugfix  :)

 

Nachdem ich die Zeilen in die IPConnection.php eingefügt und die nicht benötigten Zeilen gelöscht habe, bekomme ich jetzt einen runtime - Fehler.

Dieser tritt etwa 3-4 Sekunden nach Programmstart auf.

 

Das Testprogramm ist das Gleiche geblieben. Siehe oben.

 

php -f indiV2_test.php

Fatal error: Uncaught Tinkerforge\TimeoutException: Did not receive response in time for function ID 4 in /opt/scripte/platzbelegtanzeige/Tinkerforge/IPConnection.php:404
Stack trace:
#0 /opt/scripte/platzbelegtanzeige/Tinkerforge/BrickletIndustrialDigitalIn4V2.php(331): Tinkerforge\Device->sendRequest(4, 'd\x00\x00\x00\x01')
#1 /opt/scripte/platzbelegtanzeige/indiV2_test.php(30): Tinkerforge\BrickletIndustrialDigitalIn4V2->setAllValueCallbackConfiguration(100, true)
#2 {main}
  thrown in /opt/scripte/platzbelegtanzeige/Tinkerforge/IPConnection.php on line 404

Link zu diesem Kommentar
Share on other sites

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...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...