Jump to content
emeyer

Problem beim Callback IndustrialDigitalIn V2

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)
}

 

Share this post


Link to post
Share on other sites

Ich kann das reproduzieren, da ist ein Bug in den Bindings :o. Ich kümmere mich drum.

Share this post


Link to post
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.

Share this post


Link to post
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

Share this post


Link to post
Share on other sites

hahaha ...,

 

sooorry, hatte ganz vergessen die IP-Adresse von localhost wieder auf die tatsächliche zu korrigieren.

 

Sorry nochmal, eigener Fehler  ;D

Share this post


Link to post
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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...