Jump to content

Recommended Posts

Geschrieben

Hallo Tinker-(Comm)unity,

 

ich hab mein StarterSet diese Woche auch erhalten und war eigentlich ganz guter Dinge. Angeschlossen, brickd und brickv läufen eigentlich wunderbar und erkennen meine 3 angeschlossenen bricklets.

 

Aber ich wollte natürlich auch gleich mal was programmieren :).

Ich bin eigentlich "eingefleischter" PHP entwickler und habe vor vielen Jahren                  einiges mit VisualBasic (VB6) gemacht, zu Schulzeiten ein bisschen C++ gelernt und dachte mir, ich fang mal mit Java an.

 

Fluchs Netbeans geladen und installiert sowie die "Bindings und Examples" für Java geladen. Ein bisschen Copy & Paste und schon stand mein aller erstes Java Consolen Programm.

 

Nur wenn ich das Programm laufen lasse (nach dem ich meine Anfänger-Fehler ausgemerzt habe) bekomm ich keine Werte von keinem der Bricklets. Es wird immer nur "0" angezeig...

 

Dann hab ich die Umgebung gewechselt und hab mir MSVC#2010 Express geladen und installiert und die Source-Files BrickletAmbientLight.cs, BrickletDistanceIR.cs, BrickletRotaryPoti.cs, BrickMaster.cs und IPConnection.cs in die Projekt-Mappe gezogen.

in der "Form1.cs" hab ich dann oben noch "using Tinkerforge;" hinzugefügt und schon waren die meisten Fehler weg.

 

Noch ein paar Bespiel-Code-Zeilen nach "Form1_Load" gezogen die mir eigentlich ein paar TextBoxen füllen sollten:

private void Form1_Load(object sender, EventArgs e)
{
    IPConnection ipcon = new IPConnection(HOST, PORT); // Create connection to brickd
    BrickMaster master = new BrickMaster(UID); // Create device object
    BrickletRotaryPoti poti = new BrickletRotaryPoti(UID); // Create device object
    BrickletAmbientLight al = new BrickletAmbientLight(UID); // Create device object
    ipcon.AddDevice(master); // Add device to IP connection
    ipcon.AddDevice(al); // Add device to IP connection
    ipcon.AddDevice(poti); // Add device to IP connection
    // Don't use device before it is added to a connection

    short position;
    string str_position;
    poti.GetPosition(out position);
    str_position = position.ToString();
    txt_rotpot.Text = str_position;

    ushort illuminance;
    al.GetIlluminance(out illuminance);
    string str_illuminance;
    str_illuminance = illuminance.ToString();
    txt_lumi.Text = str_illuminance;

    //ipcon.JoinThread();
}

 

Am Anfang der Class Form1 hab ich noch die Zeilen

private static string HOST = "localhost";
private static int PORT = 4223;
private static string UID = "94ANbPPdB7Z"; // Change to your UID

eingebaut.

 

Aktuell hat meine Form 2 Textfelder "txt_rotpot" und "txt_lumi". Nur bei rotpot kommt eine nicht korrekte "0" an. Bei Limi garnix :(.

 

Irgendwas mach ich scheinbar falsch und ich bin schon etwas frustriert, dass ich nicht dahinter komm :(.

 

Hoffe ich finde hier Hilfe :D.

 

Viele Grüße aus Franken

Christian

Geschrieben

Je nachdem wie sehr du anfänger bist solltest du möglicherweise lieber mit einer Konsolenanwendung anfangen... WinForms bürdet dir gleich nen ziemlich fettes Framework auf, das du dir villt erst anschauen willst wenn du die ersten Meter C# hinter dir hast.

Geschrieben

Danke mal für die Antworten!

 

also das mit der UID war schon klar :). dat is auch meine...

 

nur wie werte ich die Rückgabe-Werte am besten aus oder wo rufe ich Fehler ab? einfach "error_al = ipcon.AddDevice(al);" geht ja wohl nicht.

 

Also momentan fühl ich mich wie ein blutiger Anfänger ;-). Ich hab wie gesagt früher viel mit VB6 und Forms gemacht, aber mit meiner allgemeinen Objekt-Orientierung ist es wirklich nicht weit her. Mit C# hatte ich bisher ja auch noch nie was zutun, aber aller Anfang ist schwer :)...

 

Eine PHP-API wär natürlich mein Traum ;-)... da muss ich wohl noch ein paar Wochen drauf warten, aber geplant scheint es ja schon.

Geschrieben

Wenn das mit DEN Uid's  klar ist - warum definierst Du dann nicht für jedes Device eine ? Du benutzt im Moment nur eine einzige, musst aber bei jedem Device die zugehörige verwenden. Die kannst Du im Brickv einsehen.

 

-

Sehe gerade beim Add_device gibt es keinen Rückgabewert, Pech gehabt.

Geschrieben

Erwischt!

Kaum macht man's richtig, gehts ;-). Immer wieder verblüffend!

naja, ich seh schon. Das wird für mich noch ein harter Weg werden ;-). Entweder ich lern jetzt Java oder C#... Bin noch irgendwie unentschlossen...

 

jetzt muss ich dann noch schauen wie ich in C# mit Exeptions umgehen muss, weil mir teilweise ein Timeout passiert. Aber ich denk das ist hier nicht das richtige Forum für "allgemeine C# Fragen".

 

Trotzdem Danke für die Starthilfe :). Ich weiß echt nicht ob ich jetzt was neues lern oder warte bis die PHP-Unterstützung da ist.

Geschrieben

Welche Probleme hast Du den jetzt noch mit C# ?

Begonnen habe ich erstmal die Beispiele der TF-Doku zu machen, um das Verhalten und die Fkt. der Bricks/Bricklets zu erfahren.

Und in den C#-Bindings sind die Beispiele sogar fertig zum Auspropieren.

Geschrieben

Sehe gerade beim Add_device gibt es keinen Rückgabewert, Pech gehabt.

 

AddDevice wirft eine TimeoutException wenn es kein Device für die gegebene UID antwortet.

 

Christian, die PHP Bindings sind gerade in Arbeit und sollten im Laufe der nächsten Woche fertig werden.

Geschrieben

AddDevice wirft eine TimeoutException wenn es kein Device für die gegebene UID antwortet.

Na da muss ich mich eben noch schlau machen wie ich mit sowas in C# umgeh. is ja alles neuland :).

 

Bei VB erinnere ich mich, da gabs sowas wie "ON ERROR RESUME NEXT" usw...

 

Christian, die PHP Bindings sind gerade in Arbeit und sollten im Laufe der nächsten Woche fertig werden.

Das wird ja COOOL :D... dann bin ich mal gespannt wie sich das dann "anfühlt". da bin ich dann schon wesentlich heimischer *g*. Ihr macht echt großartige Arbeit muss ich sagen. Ich denk mit euch wirds nich langweilig. Wenn man hier so rumliest was ihr noch alles für Erweiterungen plant. Respekt!

Geschrieben

Welche Probleme hast Du den jetzt noch mit C# ?

 

Na es geht ja Bergauf. Wie gesagt das mit den Exeptions macht mir eben manchmal einen Strich durch die Rechnung. Ich hatte mal nen Timer angelegt, der alle Sekunde die Werte ausliest und in die Text-Felder schreibt. Ab und an gabs halt ein Timeout und C# ist dann stehen geblieben. aber da muss ich mich erst noch näher mit C# auseinander setzen. Das ist halt immer ne ziemliche Zeitfrage :). Arbeiten soll ich schließlich auch noch was *g*, was mir wegen der "Ablenkung" hier nicht ganz so leicht fällt...

 

Gruß

Christian

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...