Flo Geschrieben July 12, 2012 at 14:50 Geschrieben July 12, 2012 at 14:50 Hallo! Ich habe nach (jetzt) einigen erfolgreichen kleineren Projekten endlich vor was etwas größeres zu machen. Mein Problem dabei ist das ich die Bricks nicht auf die "langweilige" Art ansprechen will aka "gebe bitte die master-brick-id ein.." sondern wie im Brickv möchte ich diese automatisch erkennen (und natürlich anschließend verarbeiten). Ich hab mich mal in den bei den bindings beigelegten sources umgeschaut. Gefunden habe ich leider nur eine Methode mit dem Namen "getStackCurrent", welche aber nur ein int-wert zurück gibt (ich nehme an das diese wie eine "id" für den angeschlossenen stack ist?).. Heißt das so eine Methode gibt es nicht (/für Java-Bindings)? Oder habe ich mich einfach verlesen/was überlesen? Die Python-Bindigs habe ich mir mal gespart zu durchsuchen, ich hoffe das war nicht mein Fehler Dankeschön im Vorraus, ich hoffe ihr könnt mir helfen (da ich ungern die ipcon bruteforcen will mit rnd-ids ) Grüße Flo P.s.: Mit Elementen meine ich natürlich Bricks und Bricklets Zitieren
AuronX Geschrieben July 12, 2012 at 15:05 Geschrieben July 12, 2012 at 15:05 Du kannst den Stack enumerieren. Die IPConnection hat einen Enumerate-Callback, siehe auch hier: http://www.tinkerforge.com/doc/Software/IPConnection_Java.html#ipcon-java Den bool isNew kannst du auch als isConnected oder so lesen. Das heißt der Callback wird ja immer gerufen, wenn etwas angesteckt/abgezogen wird oder wenn du per Hand enumerieren lässt. Beim abziehen ist der Wert falsch, beim Enumerieren per Hand oder beim Anstecken ists true. Zitieren
Flo Geschrieben July 12, 2012 at 15:12 Autor Geschrieben July 12, 2012 at 15:12 Das hab ich ja echt wieder glatt überlesen.. Wieder mal n Brett vorm kopf gehabt... Vielen Dank! Gruß Flo Zitieren
M4ST3R Geschrieben July 12, 2012 at 15:33 Geschrieben July 12, 2012 at 15:33 Denk dran, dass es bei Java7 jetzt auch ein switch für Strings gibt erspart viel Arbeit! Zitieren
Flo Geschrieben July 12, 2012 at 15:37 Autor Geschrieben July 12, 2012 at 15:37 Haha, danke für den Tipp, da hast du absolut recht, habs auch grade mit nem Switch realisiert, und in eine Art Tabelle geschrieben, hat alles super Funktioniert, vielen dank euch beiden, ihr habt mir sehr geholfen Gruß Flo Zitieren
M4ST3R Geschrieben July 12, 2012 at 16:28 Geschrieben July 12, 2012 at 16:28 In eine Tabelle? Meinst du zur Visualisierung in der GUI oder zur Verwendung intern? Zitieren
Flo Geschrieben July 12, 2012 at 20:06 Autor Geschrieben July 12, 2012 at 20:06 Erstmal zum ausgeben in einer Tabelle (visualisierung). Habe es jetzt soweit das ich alle Bricks und Bricklets voneinander unterscheiden lassen kann, und damit arbeiten kann. Morgen kommen die Motoren dran und dann die ganzen Sensoren.. Gruß Flo Zitieren
M4ST3R Geschrieben July 12, 2012 at 22:56 Geschrieben July 12, 2012 at 22:56 Kann dir ein switch geben mit allen Bricks und Bricklets wenn du möchtest Zitieren
FabianB Geschrieben July 13, 2012 at 09:44 Geschrieben July 13, 2012 at 09:44 Ich hätte das gerne :-) Magst du das vielleicht in die Wiki stellen. Das könnte vielleicht mehrere interessieren. Zitieren
AuronX Geschrieben July 13, 2012 at 10:01 Geschrieben July 13, 2012 at 10:01 Es ist halt wirklich schade, dass es kein enum über Bricks/Bricklets gibt ^^ (Typ-Sicherheit und so ^^) Zitieren
M4ST3R Geschrieben July 13, 2012 at 13:11 Geschrieben July 13, 2012 at 13:11 Hier mal der Quellcode! Kann gern ins Wiki übertragen werden. Ist denk ich leicht verständlich und nicht auskommentiert public Device classifyDevice(DeviceModel model) { Device device = null; DeviceModel tmpDM = model; String cutted = tmpDM.getName().substring(0, tmpDM.getName().trim().length() - 4).trim(); switch (cutted) { case "AmbientLight Bricklet": device = new BrickletAmbientLight(tmpDM.getuID()); break; case "AnalogIn Bricklet": device = new BrickletAnalogIn(tmpDM.getuID()); break; case "AnalogOut Bricklet": device = new BrickletAnalogOut(tmpDM.getuID()); break; case "Buzzer Bricklet": device = new BrickletPiezoBuzzer(tmpDM.getuID()); break; case "Current12 Bricklet": device = new BrickletCurrent12(tmpDM.getuID()); break; case "Current25 Bricklet": device = new BrickletCurrent25(tmpDM.getuID()); break; case "DC Brick": device = new BrickDC(tmpDM.getuID()); break; case "Distance IR Bricklet": device = new BrickletDistanceIR(tmpDM.getuID()); break; case "Humidity Bricklet": device = new BrickletHumidity(tmpDM.getuID()); break; case "IMU Brick": device = new BrickIMU(tmpDM.getuID()); break; case "IO-16 Bricklet": device = new BrickletIO16(tmpDM.getuID()); break; case "IO-4 Bricklet": device = new BrickletIO4(tmpDM.getuID()); break; case "Joystick Bricklet": device = new BrickletJoystick(tmpDM.getuID()); break; case "LCD16x2 Bricklet": device = new BrickletLCD16x2(tmpDM.getuID()); break; case "LCD20x4 Bricklet": device = new BrickletLCD20x4(tmpDM.getuID()); break; case "Master Brick": device = new BrickMaster(tmpDM.getuID()); break; case "Poti Linear Bricklet": device = new BrickletLinearPoti(tmpDM.getuID()); break; case "Poti Rotary Bricklet": device = new BrickletRotaryPoti(tmpDM.getuID()); break; case "Relay Dual Bricklet": device = new BrickletDualRelay(tmpDM.getuID()); break; case "Servo Brick": device = new BrickServo(tmpDM.getuID()); break; case "Stepper Brick": device = new BrickStepper(tmpDM.getuID()); break; case "Temperature AmbientBricklet": device = new BrickletTemperature(tmpDM.getuID()); break; case "Temperature IR Bricklet": device = new BrickletTemperatureIR(tmpDM.getuID()); break; case "Voltage Bricklet": device = new BrickletVoltage(tmpDM.getuID()); break; // Diese werden nicht erkannt: case "Chibi Extension": case "StepDown Brick": case "RS485 Extension": } // System.out.println("Device: " + device.toString()); model.setDeviceTyp(device); return device; } Zitieren
Flo Geschrieben July 14, 2012 at 14:24 Autor Geschrieben July 14, 2012 at 14:24 Oh, danke, ich hatte es schon gelöst, aber vllt. möchtest du es ja wirklich ins Wiki stellen, wenns jemand interessiert kann ich das auch in andere Sprachen dann übertragen. Zitieren
M4ST3R Geschrieben July 14, 2012 at 16:03 Geschrieben July 14, 2012 at 16:03 Hab im Moment leider keine Zeit fürs Wiki, komme nicht mal zum Basteln im Moment... aber darf jeder gern ins Wiki stellen 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.