AuronX Geschrieben May 3, 2012 at 12:57 Geschrieben May 3, 2012 at 12:57 Hallo, eine Frage die mir schonmal beim durchstöbern des C#-Codes aufkam und jetzt auch in einem anderen Thread sichtbar wurde: Wenn ich mir in meinen Bindings ein Device erstelle und einer IPConnection zuweise, dann wird geschaut, ob ein Device mit der korrekten UID auch gerade im Stack vorhanden ist. Soweit so gut. Allerdings scheint es nicht vorgesehen zu sein auch den Device-Typ zu überprüfen, zumindest konnte ich nichts derartiges entdecken. Dadurch ist es im Moment möglich, dass ich mir (versehentlich) ein BrickletAmbientLight erstelle und damit dann meinen Temperatursensor auslese (GET_TEMPERATURE und GET_ILLUMINANCE haben beide die ID 1). Wäre hierzu nicht eine Device-Class o.ä. sinnvoll, die beispielsweise beim addDevice zusammen mit der Firmware-Version übertragen wird? Vermutlich könnte man auch den Name vergleichen, aber das ist denke ich die weniger schöne Lösung. Ziel wäre es am Ende des Tages sicherzustellen, dass das verwendete Binding auch zum Device passt. LG Jan Zitieren
Nifty Geschrieben May 3, 2012 at 13:03 Geschrieben May 3, 2012 at 13:03 Über den enumerator kannst Du den Namen des Gerätes parsen und daraus die Klasse ableiten. Mach ich in meinem Programm auch so. Toll ist das allerdings nicht. Zitieren
photron Geschrieben May 3, 2012 at 13:21 Geschrieben May 3, 2012 at 13:21 AuronX, das Problem steht schon auf meiner TODO Liste. AddDevice muss prüfen ob die Device Klasse auch zum antwortenden Brick(let) passt, ansonsten wird es eine Exception werfen. Die Firmware Version ist allerdings nicht eindeutig genug. AddDevice wird das wohl anhand des Device Namens prüfen, da dieser dem "<Name> Brick/Bricklet <Hardware Version>" Muster folgt. Zitieren
AuronX Geschrieben May 3, 2012 at 13:33 Autor Geschrieben May 3, 2012 at 13:33 Sehr gut Mein Vorschlag wäre es erstmal nur den Namen zu prüfen und dann wenn ihr das nächste mal eine Änderung am Protokoll vornehmt die inkompatibel zum alten ist (kommt bestimmt irgendwann ^^) gleichzeitig eine Device-Class mit einführt. Viele Grüße Zitieren
photron Geschrieben May 18, 2012 at 17:29 Geschrieben May 18, 2012 at 17:29 In den aktuellen Bindings Versionen (C/C++ 1.0.8, C# 1.1.2, Java 1.0.8, PHP 1.0.3 und Python 1.0.9) wird jetzt auch der Device Typ überprüft. Für einen erfolgreichen AddDevice Aufruf muss jetzt ein Device mit passendem Typ und UID antworten. Zitieren
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.