Christian Geschrieben May 3, 2012 at 10:06 Geschrieben May 3, 2012 at 10:06 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 . Viele Grüße aus Franken Christian Zitieren
Nifty Geschrieben May 3, 2012 at 10:08 Geschrieben May 3, 2012 at 10:08 Die UID ist für jedes Device verschieden! Das muss Du also noch ändern. Du solltest beim addDevice die Rückgabewerte abfragen dann bemerkst DU sofort wenn was nicht funktioniert. Zitieren
AuronX Geschrieben May 3, 2012 at 10:28 Geschrieben May 3, 2012 at 10:28 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. Zitieren
Christian Geschrieben May 3, 2012 at 11:25 Autor Geschrieben May 3, 2012 at 11:25 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. Zitieren
Nifty Geschrieben May 3, 2012 at 11:31 Geschrieben May 3, 2012 at 11:31 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. Zitieren
Christian Geschrieben May 3, 2012 at 12:00 Autor Geschrieben May 3, 2012 at 12:00 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. Zitieren
Nic Geschrieben May 3, 2012 at 12:38 Geschrieben May 3, 2012 at 12:38 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. Zitieren
photron Geschrieben May 3, 2012 at 12:41 Geschrieben May 3, 2012 at 12:41 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. Zitieren
Nic Geschrieben May 3, 2012 at 12:42 Geschrieben May 3, 2012 at 12:42 @Photron Wie sieht es mit den Delphi-Bindings aus ? Geplant, und in Arbeit ? Wäre klasse. Zitieren
Christian Geschrieben May 3, 2012 at 13:04 Autor Geschrieben May 3, 2012 at 13:04 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 ... 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! Zitieren
Christian Geschrieben May 3, 2012 at 13:10 Autor Geschrieben May 3, 2012 at 13:10 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 Zitieren
Nifty Geschrieben May 3, 2012 at 13:11 Geschrieben May 3, 2012 at 13:11 Exception Handling in C# http://msdn.microsoft.com/de-de/library/0yd65esw%28v=vs.80%29.aspx Zitieren
Nic Geschrieben May 3, 2012 at 13:50 Geschrieben May 3, 2012 at 13:50 Für den C#-Anfang: http://openbook.galileocomputing.de/visual_csharp_2010/ Zitieren
Christian Geschrieben May 3, 2012 at 14:08 Autor Geschrieben May 3, 2012 at 14:08 Für den C#-Anfang: http://openbook.galileocomputing.de/visual_csharp_2010/ Danke, die seite hatte ich schon offen. Muss nur in ner "ruhigen Minute" mal anfangen. Geht ja Angangs erst mal schwer um OOP... Zitieren
Nic Geschrieben May 3, 2012 at 14:29 Geschrieben May 3, 2012 at 14:29 Wie gesagt, die Examples aus den Bindings in VS laden und ausprobieren. Man muss nicht alles erstmal per Buch trocken lernen, ev. reicht eine Übersicht über den Syntax: http://de.wikipedia.org/wiki/Sprachelemente_von_C-Sharp Zitieren
Christian Geschrieben May 3, 2012 at 14:54 Autor Geschrieben May 3, 2012 at 14:54 Man muss nicht alles erstmal per Buch trocken lernen, ev. reicht eine Übersicht über den Syntax: http://de.wikipedia.org/wiki/Sprachelemente_von_C-Sharp ja das ist natürlich auch mal sehr Hilfreich! Sehr Cool!! 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.