AuronX Posted May 3, 2012 at 12:57 PM Share Posted May 3, 2012 at 12:57 PM 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 Quote Link to comment Share on other sites More sharing options...
Nifty Posted May 3, 2012 at 01:03 PM Share Posted May 3, 2012 at 01:03 PM Ü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. Quote Link to comment Share on other sites More sharing options...
photron Posted May 3, 2012 at 01:21 PM Share Posted May 3, 2012 at 01:21 PM 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. Quote Link to comment Share on other sites More sharing options...
AuronX Posted May 3, 2012 at 01:33 PM Author Share Posted May 3, 2012 at 01:33 PM 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 Quote Link to comment Share on other sites More sharing options...
photron Posted May 18, 2012 at 05:29 PM Share Posted May 18, 2012 at 05:29 PM 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. Quote Link to comment 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.