Jump to content

The_Real_Black

Members
  • Gesamte Inhalte

    288
  • Benutzer seit

  • Letzter Besuch

Posts erstellt von The_Real_Black

  1. // ---

    lcd = new Tinkerforge.BrickletLCD20x4(UID2);

    ipcon.AddDevice(lcd);

    lcd.BacklightOn();

    // ---

    Das Lcd ist nicht in der Connection.

     

    Dann im Setter:

    lcd.WriteLine(0, 0, "Ausgabe: " + lcdtext + "  " );

     

    Die Leerzeichen am Ende sind nötig, damit die Verschiebung der negativen Zahlen ausgeglichen wird.

  2. Mal ein "anderer" Ansatz (durch code sieht und lernt man es am besten):

     

    - Code ist verschoben

    - und getestet (klappt mit meiner UID // ist bereits auf deine UID geändert.)

    - sonst siehe oben.

     

    - ich habe mich mal auf den Poti beschränkt.

    - auf der Form ist ein label welches dir die Position des Potis anzeigt.

     

    Edit: Ich erwarte, dass der Brick bereits angeschlossen ist (keine Fehlerprüfungen oder so) da es nur ein Beispiel ist.

    Hilfestellung.zip

  3. Ich vermute mal du hast bereits einen Code wie:

     

     

    ipcon = new IPConnection(host, port);

    temp = new BrickletTemperature(t.Uid);

    temp.SetTemperatureCallbackPeriod(1000);

    temp.RegisterCallback(new BrickletTemperature.Temperature(TempCB));

     

    ...

     

    void TempCB(short val)

    {

      labelxyz.text = val.ToString();

    }

     

     

    Problem ist klar da es Multi-Threaded ist kann man nicht auf das Label zugreifen.

    Stichwort ist INVOKE!

          temp.RegisterCallback(new BrickletTemperature.Temperature(TempCB));

          SetValues = new SetPosDel(InvokeSetter);

     

    ...

     

     

          private delegate void SetPosDel(double val);

          private SetPosDel SetValues;

          void TempCB(short val)

          {

            try

            {

                object[] p = { (val / 100.0) };

                this.Invoke(SetValues, p);

            }

            catch

            {

            }

          }

     

          private void InvokeSetter(double val)

          {

            DateTime now = DateTime.Now;

     

            txt_log.Text = "Temperatur um "

                + now.ToString("yyyy-MM-dd HH:mm:ss:ff")

                +": " + val.ToString("0#.##") + "°C" + Environment.NewLine

                + txt_log.Text;

     

            txt_ExcelLog.Text += now.ToString("HH:mm:ss") + "\t" + val + Environment.NewLine;

          }

     

  4. http://www.tinkerunity.org/wiki/index.php/The_Real_Blacks_Wetterstation

     

    Es ist kein Mond, es ist eine Wetterstation!

    *uh?* Wie auch immer...

     

    Es gibt eine neue Klasse welche ich hier einzeln veröfentliche:

    Wetterstation für die Bricklets

    - Umgebungstemperatur

    - Lichtstärke

    - Luftfeuchte

     

    alle Bricklets sind Optional und können im Konstruktor als null übergeben werden.

    Das erzeugte HTML\XML ist als HTML5 aufgebaut und kann mit einen in der Klasse hinterlegten und änderbaren CSS formatiert werden.

     

    Spalten der Tabelle haben identische IDs

    Zeilen der Tabelle haben abwechselnd lineA und lineB als Klasse.

    So sollten alle Formatierungswünsche erfüllt sein ^^

     

    Es kann ein Speicher-Pfad angegeben werden damit sollte es auch möglich sein, dass ihr das XML in einen Webroot legt und dann aus dem Netz darauf zugreift (lokal klappt es gut).

  5. 1.) C#, .Net Framework ist handlicher als die C++ Klassen.

    2.) Nein das Programm muss nur ausgeführt werden und die Bricks per USB am Computer angeschlossen sein.

    3.)

    http://www.tinkerunity.org/forum/index.php/topic,55.msg4110.html#msg4110

    In meinen Projekt gibts alles wichtige Befehle zusammen gefasst... was allgemeines kann ich zwar auch schreiben, aber dafür gibt es Tutorials.

     

    http://msdn.microsoft.com/de-de/library/aa288436%28v=vs.71%29.aspx

     

    if(true){

    }else if(false){

    }else{

    }

     

    switch(int_variable){

    case 1:

    break;

    case 2:

    break;

    default:

    break;

    }

     

    und noch vieles mehr im MSDN Tutorial...

  6. UPDATE!

     

    http://www.therealblack.net/TFUploads/TRB_Bot.7z

     

    http://www.therealblack.net/TFUploads/Bot1_20120624.png

    Bot1_20120624.png

    Changelog:

    ...

    - Test Projekt mit manueller Steuerung hinzugefügt.

     

    - Projekt Bot 1 begonnen:

    -- Flow Layout Buttons anstelle der fixen Buttons verwendet

    -- Code Optimeirungen.

    -- Bot Klasse -> Fasst alle Bricks zusammen.

    -- Distanz halten Modus hinzugefügt.

    --- Bot speichert die Entfernung

    --- und hält diese Entfernung auf +-5 cm 

    -- IO16 Eingang 1 und 7 sind Kollisionsmelder

    --- Bot fährt zurück und bleibt stehen.

    -- neue Flow Layout Elemente (Led und Text)

    --- Verallgemernerung der Elemente von der Brickübersicht.

     

     

    Dieser Stand kann nun einen "Bot" auf einer definierten Distanz halten (+-5cm).

    Es werden verschiedene Bricks benötigt sonst führt es zu einer Exception! 2 x DC ist im Hauptprojekt fest hinterlegt welche UID welche Kette steuert. Leider hängt eine Kette immer wieder beim drehen... entweder es blockt irgendwas die Mittelung oder die Spannung ist zu gering! Am IO16 ist Port B Pin 0 und 7 für die Kollisionserkennung gedacht. Beim Beenden der Hauptform wird dank der Utils (FormClosed Utils) ein angeschlossener LCD ausgeschaltet und die Leds des IMU wird deaktiviert.

     

  7. http://www.therealblack.net/TFUploads/TRB_Bot.7z

     

    http://www.therealblack.net/TFUploads/Optionen.png

    Optionen.png

     

    Update Time! Heute Icon Pack: Die 100x100, 200x200 und 500x500 Icons dürfen auch gerne als Avatare verwendet werden ;-P

     

    Pfad: TRB_TF_RoboterProjekt\Utils\Dokumente\Icons_100

     

    Die Liste im Bild erstellt sich über meine Enumerations Utils bereits. ansonsten haben die Dinger noch keine Funktion... Ich werde die Brickverwaltung etwas nach hinten schieben und am Bot weiter Coden.  Zwar wäre es schöner die Optionen sehr Variabel zu halten, aber es braucht doch etwas Zeit alles implementiert zu bekommen.

     

    Auf Option soll sich eine Eingabe maske für jeden Typ einzeln öffnen.

    Speichern und Laden soll die Einstellungen in die DB schreiben.

    Die Punkte zeigen in verschiedenen Farben an ob die daten bereits in der DB waren oder ob ein benötiger Brick(Typ) nicht gefunden wurde.

     

    Die DB wird nun auch mit Initial Daten geschrieben: Anwendungsstellen Antieb links\rechts, Sensor vorne usw und auch die Bricktypen Master, DC usw werden aus meinen Enum in die DB geschrieben.

     

    @TF: könnte man die Brick\Bricklets und Extention Typen im Generator in ein Enum generieren? So würde jeder die gleichen IDs verwenden können wenn ein Bricktyp abgefragt wird... nur so eine Idee.

     

    @all: bei den Verwendungen (Antrieb links\rechts, Sensor vorne usw) kann man noch einiges erweitern wenn es noch wünsche dort gibt.

  8. zu deiner ersten Frage: ja...

     

    Meine Enumerationen sollen in die Datenbank gespeichert werden. Ebenso sollen alle Einstellungen wie "welche UID der DCBricks ist welche Kette" auch in der DB Landen -> wenn keine DB vorhanden ist soll eine Eingabeform erscheinen in welcher man die Bricks den Motoren zu ordnen kann. Damit kann man den Code verwenden egal welchen Brick man gerade verwendet.

     

     

  9. @AuronX: Default DB erstellt alle Tabellen wie ich sie im Bild gezeigt habe. (Über die muss ich aber nochmal nachdenken ^^)

     

    Ansonsten freut es mich, dass es geklappt hat, dann ist der nächste Schritt mal die Initial-Daten mit einzufügen und eine Automatische Inventarisierung zu ermöglichen. Projektverwaltung kommt dann auch bald. Und es wird neue Bilder geben ^^ soviel zu tun...

×
×
  • Neu erstellen...