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 to comment
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 to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
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 to comment
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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...