Jump to content

[Java] Alle angeschlossenen "Elemente" finden


Recommended Posts

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

Link zu diesem Kommentar
Share on other sites

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.

Link zu diesem Kommentar
Share on other sites

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

Link zu diesem Kommentar
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.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...