mikrolinux Geschrieben April 20, 2013 at 22:03 Share Geschrieben April 20, 2013 at 22:03 Hi! Ich stelle gerade auf das neue Protokoll um. Bisher funzt das auch problemlos, nur beim Abfangen der Fehler tu ich mich iwie schwer. Ich denke die richtige Stelle ist der Connect zum Stack (Master, WLAN, Temperature und Dual Relay). Abfangen will ich den Fall, dass der Server nicht zum Stack verbinden kann. // versuche das Bricklet zu verbinden ... try { if ( !($ipcon->connect($host, $port) ) ) { throw new Exception( ); } } catch ( Exception $e ) { // tu irgendwas ... // Fehlermeldungen vorbereiten z.B. ... } ; Wenn ich das so baue und zu einem Bricklet verbinden will läuft der Code immer durchs catch. Mit dem alten Protokoll lief das prima, da hatte ich es so gebaut: try { if ( !($ipcon = new IPConnection($host, $port) ) ) { throw new Exception(); } } catch ( Exception $e ) { // tu was }; Hat jemand 'ne Idee? Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
mikrolinux Geschrieben April 21, 2013 at 07:30 Autor Share Geschrieben April 21, 2013 at 07:30 Moin! 'ne Nacht drüber schlafen war gut Ich habe das Ganze jetzt positiv formuliert und schon gings. Der Code ist jetzt total simpel // versuche das Bricklet zu verbinden ... try { $ipcon->connect($host, $port) ; } catch ( Exception $e ) { // Fehlermeldungen vorbereiten etc ... } ; Da ich ein ganzes Rudel Sensoren/Stacks abfrage, mache ich hier keine Schleife und einen neuen Versuch, sondern gebe einfach einen Fehler aus und weiter zum nächsten Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Plenz Geschrieben May 27, 2013 at 21:59 Share Geschrieben May 27, 2013 at 21:59 Ich mache das ähnlich unter VB.NET mit dem IO16: ich frage die Eingänge ab und wenn das nicht klappt, gebe ich eine Meldung aus "USB-Kabel nicht angeschlossen". Ich finde das aber reichlich unbefriedigend. Eine Abfragefunktion ipcon.isConnected() as boolean fände ich weitaus eleganter. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
photron Geschrieben May 28, 2013 at 08:08 Share Geschrieben May 28, 2013 at 08:08 Ich finde das aber reichlich unbefriedigend. Eine Abfragefunktion ipcon.isConnected() as boolean fände ich weitaus eleganter. Es gibt genau dafür IPConnection::getConnectionState(). Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Plenz Geschrieben May 28, 2013 at 18:37 Share Geschrieben May 28, 2013 at 18:37 Es gibt genau dafür IPConnection::getConnectionState(). Hatte ich ja auch so verstanden und ausprobiert (VB.NET). Aber der Code Dim cs As Short cs = ipcon.GetConnectionState() : Console.WriteLine(cs) ipcon.Connect(HOST, PORT) cs = ipcon.GetConnectionState() : Console.WriteLine(cs) ergibt 0 1 auch bei abgezogenem USB-Kabel. Sollte ich etwa einen Bug entdeckt haben? Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
AuronX Geschrieben May 28, 2013 at 19:02 Share Geschrieben May 28, 2013 at 19:02 Naja... du bist halt mit dem Brickd verbunden. Ob dort ein Brick/Bricklet angeschlossen ist findest du nur raus indem du eine Anfrage rausschickst und schaust ob es klappt. Also genau so wie du es tust ^^ Bei der WiFi-Extension könntest du natürlich davon ausgehen, dass auch etwas da ist wenn du eine Verbindung hast. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.