Forum: Mikrocontroller und Digitale Elektronik Serial Display Code umschreiben auf Serial? Kann das jemand?


von Thorsten M. (cortex_user)


Lesenswert?

Hallo,

Vor 3 Jahren stand ich vor dem gleichen Problem, da ich kein C++ kann 
und es auch nicht mehr lernen werde, weil ich es (fast) nie brauche im 
Hobby.

Leider hat der Autor diese SoftwareSerial verwendet, die aber nunmal bei 
esp32 nicht brauchbar ist. Es geht vermutlich nur um wenige Zeilen, die 
auf die Serial2 des ESP32 umgeschrieben werden müssen. Meine Versuche 
schlugen fehl, da schon die Compilerfehler für mich böhmische Dörfer 
sind.

Chat GPT 4.0 ist damit auch überfordert, C kriegt er noch ganz gut hin, 
bei C++ spuckt er nur Mist aus.

Kann das jemand auf die normale Serial bzw Serial2 von Arduino 
umschreiben, so dass das neue Objekt myTFT alle Eigenschaften von 
Serial2 erbt und die neuen noch mit dazu, die in den Methoden formuliert 
sind?

Warum der Construktor leer ist aber rxd und txd übergeben werden können 
verstehe ich auch nicht.

https://github.com/plouc68000/OS_SerialTFT
1
private:
2
  SoftwareSerial myTFT;
3
  char feedbackBuf[6];

und
1
SerialTFT::SerialTFT(uint8_t rxd, uint8_t txd):myTFT(txd, rxd)
2
{
3
  
4
}
5
void SerialTFT::begin(long speed)
6
{
7
  myTFT.begin(speed);
8
}

: Bearbeitet durch User
von Re (r42)


Lesenswert?

Thorsten M. schrieb:
> Warum der Construktor leer ist aber rxd und txd übergeben werden können
> verstehe ich auch nicht.

| SerialTFT::SerialTFT(uint8_t rxd, uint8_t txd):myTFT(txd, rxd){}


Der ist nicht leer, sondern das Konstrukt nach dem Doppelpunkt besagt, 
dass er seinen privaten Member "myTFT" mit eben den übergebenen 
Argumenten txd, rxd konstruiert (und damit initilialisiert).

HTH;(re)

von Thorsten M. (cortex_user)


Lesenswert?

Keiner? Schade..

von Harald K. (kirnbichler)


Lesenswert?

Was macht "myTFT"? Warum ist das vom Typ SoftSerial?

Welche anderen Klassen, die mit seriellen Übertragungen arbeiten, gibt 
es sonst noch?

Welche Funktionen ("Methoden") stellen die zur Verfügung?

Welche Funktionen ("Methoden"), die SoftSerial zur Verfügung stellt, 
werden über "myTFT" in SerialTFT verwendet?


Diese Fragen solltest Du selbst beantworten können. Wenn Du das getan 
hast, solltest Du selbst die nötigen Rückschlüsse ziehen können.

von Thorsten M. (cortex_user)


Lesenswert?

Auf Fragen mit Gegenfragen zu antworten bringt mich nicht weiter. Lassen 
wir es.

von Harald K. (kirnbichler)


Lesenswert?

Thorsten M. schrieb:
> Auf Fragen mit Gegenfragen zu antworten bringt mich nicht weiter.

Das nennt man Hilfe zur Selbsthilfe.

Dem Konzept wirst Du hier häufiger begegnen.

Wenn Du Dich dem konsequent verweigerst, kommst Du halt nicht weiter.

Ja: Ein bisschen Einsatz musst Du schon zeigen.

von Monk (roehrmond)


Lesenswert?

Wir helfen dir, deine Arbeit zu erledigen. Viele hier arbeiten auch 
gerne für andere (dich), das dann allerdings gegen Bezahlung.

von Top S. (topsoft)


Lesenswert?

> https://github.com/plouc68000/OS_SerialTFT
>
> [c]
> private:
>   SoftwareSerial myTFT;
>   char feedbackBuf[6];

Was passiert den wenn SoftwareSerial myTFT; zu Serial2 myTFT; wird?

von Thorsten M. (cortex_user)


Lesenswert?

Top S. schrieb:
> Was passiert den wenn SoftwareSerial myTFT; zu Serial2 myTFT; wird?

Ein Kompilerfehler, dass Serial2 keine Klasse ist aus der Vererbt werden 
kann. Ich arbeite das aber alles jetzt um, weg von C++ in eigene 
Routinen da mein Möglichkeiten ausgereizt sind das zu ändern.

: Bearbeitet durch User
von Monk (roehrmond)


Lesenswert?

Man könnte nachschauen, welche Klasse Serial hat.

von Thorsten M. (cortex_user)


Lesenswert?

https://github.com/arduino/ArduinoCore-avr/blob/master/cores/arduino/HardwareSerial.cpp

Die Verwendung von HardwareSerial unterscheidet sich grundlegend von 
SoftwareSerial. HardwareSerial ist keine eigenständige Bibliothek, 
sondern eine in der Arduino-Kernbibliothek enthaltene abstrakte Klasse, 
die die Schnittstelle für die serielle Kommunikation über die 
Hardware-UART-Schnittstelle des Mikrocontrollers definiert.

Sowas funktioniert aber das hat nichts mit Serial2 zu tun, da das 
bereits eine abgeleitete Klasse ist, die direkt gloabl verfügbar ist und 
deren Methoden verwendet werden können.

class MySerial : public HardwareSerial {
public:
    MySerial(uint8_t portNum) : HardwareSerial(portNum) {}

    // Implementierung der reinen virtuellen Funktionen
    void begin(unsigned long baud) override;
    void end() override;
    usw usw.
};

: Bearbeitet durch User
von Wastl (hartundweichware)


Lesenswert?

Harald K. schrieb:
> Wenn Du Dich dem konsequent verweigerst, kommst Du halt nicht weiter.

Doch.
Er kann sich mit der Eigenschaft "beratungsresistent" schmücken.

von Thorsten M. (cortex_user)


Lesenswert?

Habe die Lösung schon, dank chat GPT 4.0. Freundlich und kompetent bevor 
ich mich hier mit gewissen Nerds herumschlage.

: Bearbeitet durch User
von Norbert (der_norbert)


Lesenswert?

Dummschwätzer!

von Thorsten M. (cortex_user)


Lesenswert?


von Daniel F. (df311)


Lesenswert?

Thorsten M. schrieb:
> Habe die Lösung schon, dank chat GPT 4.0. Freundlich und kompetent bevor
> ich mich hier mit gewissen Nerds herumschlage.

na dann viel glück wenn mal irgendwann ein fehler auftritt

von Rahul D. (rahul)


Lesenswert?

Thorsten M. schrieb:
> Norbert schrieb:
>> Dummschwätzer!
>
> https://de.trustpilot.com/review/www.mikrocontroller.net

Immer wieder lustig, weil eigentlich niemand so ein Bewertungsportal für 
ein Forum braucht.
Sowas brauchen nur dünnhäutige Menschen, die nicht mal Kritik (im 
falschen Ton) ertragen.

Miestens kommt doch vor einer unfreundlichen Antwort irgendwas, was man 
mit minimalem Googlen herausfinden könnte, oder auf Bequemlichkeit 
basiert, umn dann auch noch in einem Kauderwelsch angefragt wird, was 
keiner versteht.

Und dann gibt's ne miese Bewertung...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.