-         
Seite 1 von 7 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 68

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

  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.10.2014
    Beiträge
    4.506

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

    Anzeige

    Habe mal angefangen, mein Projekt mit Arduinos am Windows-PC ein bisschen zu systematisieren -
    Ziel: Arduino Fernsteuerung mit einer grafischen Oberfläche vom PC und auch Messwerte anzeigen.
    Arduino ist mit Windows PC per USB verbunden, der Arduino nutzt dazu die Serial class.
    PC-Programmiersprache: Borland C++ Builder 6 (freier Download): https://winworldpc.com/product/borland-c-builder/6x

    Pin-Fernsteuerung (digital Pin ein/aus und auch pwm per Schieberegler) funktioniert schon.
    Klicke auf die Grafik für eine größere Ansicht

Name:	BCB_Arduino_101.jpg
Hits:	26
Größe:	50,0 KB
ID:	33944

    Als nächstes sollen digitale und analoge Pins ausgelesen und angezeigt werden; kA, ob ich's schaffe, die Borland-COM-Schnittstelle als add-on ist nicht so super verständlich dokumentiert.
    https://github.com/dsyleixa/Borland-...B6_COMport.txt

    Übernächster Knackpunkt: Multithreading (pthread?).

    Mal gucken, wie weit ich komme und welche Fragen auftreten.

    https://github.com/dsyleixa/Borland-...aster/Projects
    Geändert von HaWe (21.01.2019 um 12:01 Uhr)
    ·±≠≡≈³αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmäher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    34
    Beiträge
    3.330
    ich finde UART vom PC aus generell grausam, unter Windows braucht man einen Monster-Struct mit Daten um eine UART Verbindung aufzubauen.

    Ich habe was ähnliches allerdings mit Raspi und als Netzwerk Gadget aufgesetzt um mir den COM zu sparen und Mutluthreading gibts gratis dazu.

    Unter Arduino würde ich es erstmal mit einem Sheduler probieren bevor du dir selber PThreads ans Bein nagelst

    spontanes Suchergebnis das sich vernünftig anhört und die Grundlagen von PThreads gleich mit vermittelt:

    https://github.com/mikaelpatel/Arduino-Scheduler

    du kannst belibig viele loop()s bauen und musst nur darauf achten dass die auch mal an einem bestimmten Punkt mit yield() oder delay() warten damit der Scheduler einem anderen "Task" die Zeit gibt seine loop() zu bearbeiten.
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.10.2014
    Beiträge
    4.506
    neinnein, am Arduino ist MT kein Thema, da nutze ich ja bereits die Scheduler Lib seit ewigen Zeiten
    Am Raspi nutze ich hingegen pthread bereits sehr erfolgreich, ich finde pthread hier geradezu genial!

    Auch habe ich auf meinem Windows PC so viele Resourcen satt, da stört mich das bisschen für UART nun wirklich nicht. Für die Borland-IDE ist UART/COM nur ein plugin unter vielen anderen (wie für Multimedia oder Datenbanken).

    MT war hier nur auf die Borland-GUI bezogen, wenn später mehrere von der GUI angestoßene (auch komplexere, länger dauernde) Prozesse parallelisiert und automatisch zur Anzeige und zur Steuerung aktualisiert werden sollen.
    pthread auf dem Pi funktioniert auch für solche Dashboards bereits perfekt (bis auf GUI Buttons oder Slider).

    Hier geht es also allein um ein grafisches PC-Interface für Arduinos.
    ·±≠≡≈³αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmäher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    34
    Beiträge
    3.330
    oh ah sorry das hatte ich falsch verstanden ... *grusel* borland und "echtes" MT ist eine sache die mich schon in meinem praxissemster verfolgt hat ... hatte den ersten PC mit 2 kernen in der firma und musste das alte DCOM modul zerlegen und als socket server reimplementieren ... multightread ist grausam mit den ganzen "sync" zwischen den prozessen ohne dabei eine gewischt zu bekommen.

    ich weis nicht wie es jetzt um borland steht(zu lange her), aber persönlcih würde ich zu jedem nicht borland eigenen hilfsmittel raten um MT zu bewerktstelligen weil borland wie .Net und andere nennenswert großen aber ausgelassenen Frameworks dazu tendieren einem die finger abzuhacken wenn man sich nicht ganz penibel an die "wer darf wann was" Regeln hält
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.10.2014
    Beiträge
    4.506
    *grusel* borland
    ich habe nicht vor, mit dir hier über deine Meinung zu Borland C++ Builder zu diskutieren -
    ich habe ihn verwendet, und ich stelle das Projekt hier vor.
    Ich freue mich über konstruktive Erweiterungen und Tipps.
    Ich erwarte nicht, dass dir persönlich der Borland C++ Builder gefällt (mir selber gefällt er bislang sehr gut).

    Du darfst aber gerne deinen Code zeigen, wie du die UART-Serial-Kommunikation praktisch mit anderen Borland C++-Builder add-ins nutzt, aber ebenfalls MIT dem Borland C++-Builder.

    PS,
    pthread macht alles bezüglich multithreading automatisch, verteilt sogar die Threads auf einzelne Kerne, und man kann sogar Kerne explizit für MT ein- oder ausschließen
    Aber NOCH ist MT nicht aktuell für den BCB, erst mal kommt jetzt pin-read als nächstes...
    Geändert von HaWe (21.01.2019 um 15:04 Uhr) Grund: typo
    ·±≠≡≈³αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmäher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.10.2014
    Beiträge
    4.506
    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.
    ·±≠≡≈³αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmäher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    05.11.2007
    Ort
    Berlin
    Beiträge
    927
    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

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.10.2014
    Beiträge
    4.506
    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.
    ·±≠≡≈³αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmäher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    05.11.2007
    Ort
    Berlin
    Beiträge
    927
    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)

  10. #10
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.10.2014
    Beiträge
    4.506
    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)
    ·±≠≡≈³αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmäher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

Seite 1 von 7 123 ... 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
  •