- 3D-Druck Einstieg und Tipps         
Seite 6 von 7 ErsteErste ... 4567 LetzteLetzte
Ergebnis 51 bis 60 von 68

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

  1. #51
    HaWe
    Gast
    Anzeige

    Praxistest und DIY Projekte
    danke, aber ohne eigene Installation zum vorher selber-testen wird das mit den Hilfevorschlägen wohl leider nicht so schrecklich viel fruchten...


    PS,
    habe jetzt probiert:

    Code:
    void __fastcall TForm1::ComPort1Exception(TObject *Sender,
          TComExceptions TComException, AnsiString ComportMessage,
          __int64 WinError, AnsiString WinMessage)
    {
    
        try {  ComPort1->Close();  }
        catch (...) {  }
    
        try { Application->Initialize(); }
        catch (...) {  Application->Terminate();  }
    
    }

    damit ist das Beenden bei USB-Unterbrechung leichter möglich ohne dass es sich aufhängt (aber auch nicht 100% korrekt), und springt auch sonst leichter raus, wenn Fehler schon beim 1. Verbinden passieren... :-/
    Geändert von HaWe (25.01.2019 um 15:19 Uhr)

  2. #52
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    05.11.2007
    Beiträge
    1.076
    Ich habe mir mal den Code von ComPort genauer angesehen.

    Der originale Code "Cport.Pas" ist in Delphi programmiert, (wenn es das Original ist) 3652 Zeilen Code
    Den Code kann ich "teilweise" gut nachvollziehen, da ich lange Zeit mich mit Delphi beschäftigt habe
    und selbst erst eine Serielle Komponente in Lazarus auf Basis der Windows API programmiert habe.

    Wie diese UNIT jetzt nach C++ convertiert wird, habe ich aber ehrlich gesagt nicht verstanden.
    Habe ja auch bisher nie mit Borland Builder C++ gearbeitet.

    Im Code selbst sind SEHR viele Funktionen implementiert, auch Timeouts usw,

    Wenn die C-Componente alle Funktionen bietet wie das Delphi Original, dann fehlt es da eigentlich an Nichts.
    Wobei ich sie nicht für Optimal halte beim Empfangen, (Geschmackssache)

    Ich glaube die Funktion WaitForSingleObject könnte da ein Problem werden,
    sie wird unter anderem beim Lesen aufgerufen mit einer "unendlichen" Zeit

    Das asynchrone Lesen ist in der Komponente erheblich anders programmiert als bei mir
    und könnte, meiner Meinung nach festhängen. Da stecke ich aber auch nicht so tief in der Materie wie das laufen soll.
    Daher meine Aussage "festhängen" bitte mit Vorsicht geniessen.

    Ich habe bei mir einen 1ms Timer der immer wieder nachschaut ob was da ist und es in "meinem" Ringppuffer packt.
    es gibt ja leider keine Interrupts mehr, wie früher mit den Uarts im DOS Modus. Achja das waren Zeiten....

    Ich schaue mir das aber auch nochmal an mit dem Empfangen beim Borland C.
    Zumindest mal ausprobieren ob da was hängen bleibt und gebe Bescheid.

    Mit dem "catch" "exceptions" usw. muss ich gestehen kann ich garnichts anfangen.


    Siro
    Geändert von Siro (25.01.2019 um 16:31 Uhr)

  3. #53
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.09.2011
    Ort
    Hessen
    Beiträge
    707
    Zitat Zitat von Siro Beitrag anzeigen
    Wie diese UNIT jetzt nach C++ convertiert wird, habe ich aber ehrlich gesagt nicht verstanden.
    Da wird nichts konvertiert, der C++ Compiler ist binärkompatibel zum ebenfalls im C++ Builder enthaltenen Delphi Compiler. Das ganze Gemisch aus Pascal und C++ wird beim Übersetzen zusammengerührt.

  4. #54
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    05.11.2007
    Beiträge
    1.076
    @Mxt:
    Achso, das wuste ich nicht, danke Dir für die Info. Ich dachte bisher C und Pascal unterscheiden sich unter anderem in der Reihenfolge bei den Paramterübergaben.
    Pascal Parameterreihenfolge links nach rechts, bei C rechts nach links. Is ein anderes Thema, könnte man einen separaten Thread aufmachen...
    oder hier gucken:
    https://de.wikipedia.org/wiki/Aufrufkonvention

    Siro
    Geändert von Siro (25.01.2019 um 16:39 Uhr)

  5. #55
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.09.2011
    Ort
    Hessen
    Beiträge
    707
    Ja, Pascal und C unterscheiden sich. Aber das war bei Frankensteins Monster auch so. Hat trotzdem funktioniert. (Irgendwie)

  6. #56
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    05.11.2007
    Beiträge
    1.076
    Guten Morgen HaWe und Ceos:

    jetzt verstehe ich grad erst die Problematik:

    Wenn Du deinen Arduino abziehst, dann ist bei Dir ja die ganze RS232 (also der virtuelle Comport) weg ?
    und dann bekommst Du bei jeglichem Versuch auf die Schnittstelle zuzugreifen einen Exeption.

    Diese Problematik habe ich garnicht, weil auf meinem Motherboard gibt es einen "echte" RS232 und wenn ich mein
    Kabel abziehe, dann kommen lediglich keine Daten mehr, aber meine Schnittstelle existiert weiter.
    Aufgefallen ist es mir nämlich grad also ich über einen CP2102 (also einen externen USB zu RS232 Converter) am USB Port arbeite.
    Wenn ich dann das Kabel rausziehe, bekomme ich von Windows einen Exeption Error. Logisch Schnittstelle is ja weg.

    Die Problematik war bei mir und meinen Geräten noch nie aufgetaucht,
    das stellt also ein ganz neus Problem dar und da seid ihr Ceos und Du vermutlich wohl auf dem richtigen Weg.

    Wie man diese Fehler abfängt weis ich auch noch garnicht, das bräuchte ich nämlich irgendwann auch für meine Basteleien.
    Da wurde doch heute morgen tatsächlich nicht nur ich, sondern auch mein Forschungsdrang geweckt

    Siro

  7. #57
    HaWe
    Gast
    Zitat Zitat von Siro Beitrag anzeigen
    Guten Morgen HaWe und Ceos:

    jetzt verstehe ich grad erst die Problematik:

    Wenn Du deinen Arduino abziehst, dann ist bei Dir ja die ganze RS232 (also der virtuelle Comport) weg ?
    und dann bekommst Du bei jeglichem Versuch auf die Schnittstelle zuzugreifen einen Exeption.
    (...)
    Wie man diese Fehler abfängt weis ich auch noch garnicht, das bräuchte ich nämlich irgendwann auch für meine Basteleien.
    Da wurde doch heute morgen tatsächlich nicht nur ich, sondern auch mein Forschungsdrang geweckt

    Siro
    genau so ist es!
    Aber selbst wenn ich ein paar Sekunden später wieder den Arduino einstöpsele, und dann die COM (hier immer COM15, eine neue wird dann nicht generiert) wieder da ist, und somit dann auch über das ComPort-Verbinden-Widget angezeigt und angewählt werden kann, führt der Verbindungsversuch dennoch zu dem beschriebenen Fehler (error, exception)... :-/

    Man müsste bei ComPort->nicht_verfügbar alle Programm- und System-Einstellungen und -Threads dazu/darüber schließen und resetten, bis wieder der alte ComPort auftaucht, dann wieder überall alles dazu neu starten, und die Verbindung automatisch wiederherstellen - und falls automatisch nicht möglich, dann wieder über das Verbinden-Widget manuell per Menü ermöglichen...



    PS,
    letztes Layout:
    Klicke auf die Grafik für eine größere Ansicht

Name:	BCB-Arduino-109.jpg
Hits:	15
Größe:	66,9 KB
ID:	33960
    Geändert von HaWe (26.01.2019 um 16:38 Uhr)

  8. #58
    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

  9. #59
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    05.11.2007
    Beiträge
    1.076
    Hallo HaWe,

    lebt das Projekt noch ?

    Ich habe eben eine "uralte" Componente für die RS232 gefunden.
    Hier können sogar Ereignisse abgefangen werden, wenn ein Comport hinzu oder auch entfernt wird.

    Sie soll wohl auch unter Borland C++ Builder 1.0, 3.0, 4.0, 5.0, 6.0 laufen,
    ich weis nur nicht wie man sie installiert.
    Ich werde sie heute zunächts mal versuchen in mein Lazarus zu installieren.
    Die Komponente ist aber Urheberrechtlich geschützt und darf nicht weiter gegeben werden
    Ich habe sie damals mit dem Kauf des Buches erworben.

    http://toolbox.reworld.eu/projekte/serial/index.html
    Geändert von Siro (30.01.2019 um 16:31 Uhr)

  10. #60
    HaWe
    Gast
    Zitat Zitat von Siro Beitrag anzeigen
    Hallo HaWe,

    lebt das Projekt noch ?

    Ich habe eben eine "uralte" Componente für die RS232 gefunden.
    Hier können sogar Ereignisse abgefangen werden, wenn ein Comport hinzu oder auch entfernt wird.

    Sie soll wohl auch unter Borland C++ Builder 1.0, 3.0, 4.0, 5.0, 6.0 laufen,
    ich weis nur nicht wie man sie installiert.
    Ich werde sie heute zunächts mal versuchen in mein Lazarus zu installieren.
    Die Komponente ist aber Urheberrechtlich geschützt und darf nicht weiter gegeben werden
    Ich habe sie damals mit dem Kauf des Buches erworben.

    http://toolbox.reworld.eu/projekte/serial/index.html
    danke für die Info!
    Klar lebt das Projekt noch, und es ist ja jetzt auch ziemlich stabil. Bleibt jetzt allerdings erst mal so wie es ist, auch mit dem ComPort (Freeware). https://github.com/dsyleixa/Borland-...rduinoCOM_RxTx
    Nach Möglichkeit würde ich doch auch gern auf dem Raspi so etwas mit qtcreator machen, siehe anderer Thread! https://www.roboternetz.de/community...l=1#post649910

Seite 6 von 7 ErsteErste ... 4567 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, 11:40
  2. Zwei Arduino Entwicklungsumgebungen unter Windows?
    Von Frank im Forum Arduino -Plattform
    Antworten: 5
    Letzter Beitrag: 13.04.2014, 23: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, 08: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, 09:38
  5. Messwerte über ADC im LCD anzeigen
    Von newbie1982 im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 03.07.2008, 08:28

Berechtigungen

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

Solar Speicher und Akkus Tests