- fchao-Sinus-Wechselrichter AliExpress         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 68

Thema: Arduino am Windows-PC: GUI zur Fernsteuerung und zum Messwerte anzeigen (per USB)

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    HaWe
    Gast
    update,
    habe eben gelesen: die GUI nutzt ein eigenes thread handling, das sich TThread nennt.
    Übungsweise könnte man ein Label ins Formular einfügen, das eine Zahl automatisch jede Sekunde um 1 hochzählt, unabhängig ob man irgendwo was drückt oder klickt oder doch oder ob irgendwo anders eine Schleife läuft
    - ist mir aber noch unklar, wie das geht.

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    05.11.2007
    Beiträge
    1.076
    Hallo HaWe,
    ich finde die Idee sehr gut, ich habe etwas ähnliches gemacht, jedoch mit Lazarus/Pascal für Windows.

    Die Windowsschnittstelle ist schon "etwas" grausam, da gebe ich CEOS recht, aber ich habe mich durchgerungen
    und sie recht gut zum laufen gebracht. Ich bekomme nun 4000 Messdaten a 16 Bit pro Sekunde in "quasi" Echtzeit
    von meiner Elektronik zum PC übertragen und kann sie in Kurven darstellen und skalieren

    Zudem wirst Du eine Art "Synchronizer" benötigen, damit die Software auch immer richtig einrastet,
    wenn das Kabel mal abezogen oder angesteckt wird. Ich hab mir dafür einen speziellen 16 Bit Code ausgedacht,
    der normalerweise nicht in meinen Messwerten auftaucht und in dem jedes Nibble unterschiedlich ist.
    Tests mit Original COM vom Motherboard und auch mittels Silabs Treiber USB laufen bei mir problemlos.

    Ich musste teils auch in den Systemeinstellungen (Gerätemanager) einges umstellen, damit ich schneller an meine Daten rankomme.
    Grade die USB Schnittstellen puffern sehr viel zwischen und entsprechend verzögert kommen dann auch die Daten an
    bzw. garnicht, wenn noch nicht genügend Daten vorhanden sind.
    Ich habe mir dazu einen Timer geschaffen der jede Millisekunde nachschaut ob schon Daten vorhanden sind.
    Witzigerweise bzw. unverständlicherweise stellt windows dafür die Funktion
    ClearCommError zur Verfügung, da muss man aber erstmal drauf kommen....
    Da bekommt man die Anzahl TX und RX Daten zurück

    Aber das sind Optimierungen die man zum Schluss tätigen kann, erstmal muss die Schnittstelle gut laufen.

    Siro

  3. #3
    HaWe
    Gast
    hallo,
    danke für deinen Post, allerdings: das klingt nun doch komplizierter als gedacht.
    Mit der USB/COM-Schnittstelle habe ich mich absolut überhaupt nicht näher beschäftigt, ich nutze sie einfach so, wie sie ist, daher ist sie für mich genau so gut oder schlecht oder grausam wie alles andere - halt eine Blackbox.... .
    Für meine Raspi-Arduino-Kommunikation nutze ich feste arrays, die außer einem Start- und einem optional Ende-Byte (0xff bzw. 0xfe) noch eine chksum und ein ack byte enthält. Das klappt absolut fehlerfrei, sogar in einem eigenen pthread Thread neben vielen anderen parallel laufenden, und das auch wenn man die Verbindung unterbricht (USB-Kabel oder BT HC06 über CH341 Adapter)
    - wie du am Borland-Code sehen kannst, mache ich das fürs Senden mit BCB noch nicht, und Empfangen steht ja eh noch auf der todo-Liste.
    Windows mit Borland GUI ist ja noch absolutes Neuland (habe nur vor ein paar Jahrzehnten mal ein wenig damit herumgespielt),

    Falls jemand also speziellen Borland-Programmcode für mein bisheriges Programm dazu hat: gerne immer her damit. Andere Programme oder Plattformen zum Vergleich bringen mir ehrlich gesagt hingegen allerdings momentan nicht so viel, um weiter zu kommen.

    Zum regelmäßigen wiederholten Abruf von Daten in einer loop (in Arduino Scheduler oder per GCC MT Endlos-thread auf dem Pi sehr einfach) brauche ich aber dann auch dieses MT TThread fürs BCB GUI, und auch das ist ja überhaupt noch nicht gelöst.

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    05.11.2007
    Beiträge
    1.076
    Für die allermeisten Anwendungen reicht auch eine "Blackbox", welche die entsprechnde Funktionalität für RS232 zur Verfügung stellt,
    habe lange Jahre auch eine fertige Komponente genommen.

    Der Borland C++ Builder sieht ja aus wie mein Lazarus bzw. Delphi.
    Wie ich dem Video entnehmen kann, scheint das handeln mit der RS232 ja damit supi einfach zu sein.
    Damit solltest Du recht schnelle Erfolge erzielen können.


    Siro

    Habe mir die IDE grad mal runtergeladen, bekomme sie aber leider nicht installiert.
    Damit sind leider keine weitern Versuche möglich. Die erste .iso Datei hab ich angeklickt, dann will er irgendwann eine zweite DVD.
    Muss ich die erst auf 2 DVDs brennen ?
    Geändert von Siro (21.01.2019 um 19:09 Uhr)

  5. #5
    HaWe
    Gast
    Zitat Zitat von Siro Beitrag anzeigen
    Habe mir die IDE grad mal runtergeladen, bekomme sie aber leider nicht installiert.
    Damit sind leider keine weitern Versuche möglich. Die erste .iso Datei hab ich angeklickt, dann will er irgendwann eine zweite DVD.
    Muss ich die erst auf 2 DVDs brennen ?
    es existieren 2 iso files in dem Download-Archiv per https://winworldpc.com/product/borland-c-builder/6x

    Borland CPP Builder 6.7z
    Klicke auf die Grafik für eine größere Ansicht

Name:	BCB-isoFiles.jpg
Hits:	5
Größe:	39,0 KB
ID:	33945

    jeweils für 1 CD-ROM, die man nacheinander brennen kann.
    Ich habe dann die 1. CD eingelegt, dann fragt er nach Lizenzdaten (stehen auch in dem 7z Arrchiv in serial.txt), dann installiert er sie, dann verlangt er die 2.CD, und nach CD-Austausch läuft die Installation dann störungsfrei bis zum Ende.


    TThread für BCB MT scheint aber auch echt ein Problem zu sein, extrem schwierig und derzeit völlig unverständlich ...
    Geändert von HaWe (21.01.2019 um 19:33 Uhr)

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    05.11.2007
    Beiträge
    1.076
    Installation hat geklappt, habe die CDs gebrannt. Man muss die IDE aber immer mit Administratorrechten starten.

    Nun fehlt die Komponente CPort.
    Ich habe die "comport411f.zip" runtergeladen, weis nicht ob das richtig ist und auch nicht wie man die dann installiert.

    TThread brauchst Du meiner Meinung nach nicht. Ich wüste zumindest nicht wofür.
    Die serielle Schnittstelle läuft in einem eigenen Thread.

    Du müstet jetzt die Eigenschaft OnRxChar im Objektinspector haben.
    Dort doppelt klicken und dann in die Funktion reinschreiben was passieren soll wenn ein Zeichen empfangen wurde.
    Zum Testen erstmal das Zeichen anzeigen, das mache ich meisten in Form->caption

    Siro
    Geändert von Siro (21.01.2019 um 21:15 Uhr)

  7. #7
    HaWe
    Gast
    hallo,
    ja, den COM Port habe ich hier nach installiert:
    https://github.com/dsyleixa/Borland-...master/sources
    https://github.com/dsyleixa/Borland-...omport411f.zip
    Installation:
    http://perso.wanadoo.es/pictob/tcomport.htm

    In dem Github Ordner stehen auch noch ein paar weitere Infos dazu.

    später sollen dann aber die seriellen Nachrichten vom Arduino nicht nur empfangen, sondern auch ausgewertet werden (Anzeige aller inputs als "Lämpchen", die gesendeten analogen Werte auch in Zahlenform (int/float/double), und ausgerechnete Werte sollen uU auch - allgemein formuliert - z.B. in einem Graphen immer entsprechend frisch simultan aktualisiert werden können. Das Aktualisieren und Weiterverarbeiten kann sehr schnell nötig sein, je nachdem, wie schnell die Werte eintreffen, und die Verarbeitung darf andere Funktionen nicht blockieren, daher plante ich MT mit TThread.

  8. #8
    HaWe
    Gast
    hallo,
    ich habe jetzt ein Terminal-Fenster eingebunden, und die vom Arduino gesendeten Strings werden auch automatisch nacheinander angezeigt.

    Der Empfangs-String müsste dann jetzt noch irgendwie zwischengespeichert werden, zur weiteren Auswertung.


    Der Arduino-Sende-Code sieht so aus:

    Code:
    #define MSGLEN 256
    char    cbuf[MSGLEN];  // cstring buffer
    
        int a0, a1, a2, a3;
        a0=analogRead(A0);
        a1=analogRead(A1);
        a2=analogRead(A2);
        a3=analogRead(A3);
    
        sprintf(cbuf, "&a0=%d;&a1=%d;&a2=%d;&a3=%d;", a0,a1,a2,a3);
        Serial.println(cbuf);
        strcpy(cbuf, "");

    Klicke auf die Grafik für eine größere Ansicht

Name:	BCB_Arduino_103.jpg
Hits:	6
Größe:	42,2 KB
ID:	33947

    vollständiger Arduino-Code und alle BCB-Projektdateien hier:
    https://github.com/dsyleixa/Borland-...jects/103_test

    - - - Aktualisiert - - -

    update, vorheriger "Fehler" lag am Arduino-Code.
    Es bleibt nur dies zu tun:
    Der Empfangs-String müsste dann noch irgendwie zwischengespeichert werden, zur weiteren Auswertung.

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    05.11.2007
    Beiträge
    1.076
    Okay, ich bin gescheitert,
    ich bekomme es nicht installiert, da fehlt mir wohl einiges an Hintergrundwissen.

    Siro

  10. #10
    HaWe
    Gast
    updat:

    ich habe jetzt die obige Funktion
    void __fastcall TForm1::ComPort1Exception()
    wieder komplett rausgenommen, sie hat letztendlich die Stabilität nicht deutlich verbessert.

    Aber ich habe die Routinen fürs manuelle Verbinden leicht abgeändert, jetzt lässt sich nach USB-Unterbrechung die Verbindung ohne Störung wiederherstellen, wenn sie existiert, und es blockiert nichts mehr, wenn sie nach wie vor weg ist:
    Code:
    void __fastcall TForm1::Button1Click(TObject *Sender)  // Button press: "Connect"
    {
       ComPort1->ShowSetupDialog();
       try {ComPort1->Open();}
       catch(...) { };
    
       if(ComPort1->Connected )  {
         // init program variables and widget states
       }
    }
    
    void __fastcall TForm1::Button2Click(TObject *Sender)  // Button press: "Disconnect"
    {
       if(ComPort1->Connected ) { 
    
           // try to send pin-stop msg to Arduino
          strcat(msgcstr,  "&_ALLPINS_=0;\n" );
          ComPort1->WriteStr(msgcstr);  
    
          Sleep(100);  // safety sleep
    
          try {  ComPort1->Close();  }
          catch (...) { }
       }
    }

    aktuelle, recht stabile und einigermaßen brauchbare Version:
    https://github.com/dsyleixa/Borland-...rduinoCOM_RxTx

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. ISP-Programmer für Arduino, Bascom und AVR-Studio unter Windows 10
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 05.04.2016, 10:40
  2. Zwei Arduino Entwicklungsumgebungen unter Windows?
    Von Frank im Forum Arduino -Plattform
    Antworten: 5
    Letzter Beitrag: 13.04.2014, 22:17
  3. Messwerte als farbige Linien und GPS Koordinaten mit Google Earth anzeigen
    Von wkrug im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 0
    Letzter Beitrag: 17.04.2012, 07:54
  4. Windows-Treiberproblem mit Arduino
    Von wvtee im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 2
    Letzter Beitrag: 28.12.2011, 08:38
  5. Messwerte über ADC im LCD anzeigen
    Von newbie1982 im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 03.07.2008, 07:28

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress