dl5bo
December 11, 2021, 1:15pm
1
Moin zusammen.
Ich mache gerade meine ersten Gehversuche bei der Erstellung einer Library.
Dazu habe ich mir das Morse-Beispiel geschnappt und versuche es nun zu modifizieren.
Die Bibliothek soll IC7300 heißen.
In 7300.h steht folgendes:
#ifndef IC7300_h
#define IC7300_h
#include "Arduino.h"
class IC7300
{
public:
IC7300(byte TRX_address);
void SetNoTransceive(byte TRX_address);
// void dot();
// void dash();
private:
byte _TRX_address;
};
#endif
In der IC7300.cpp steht folgendes:
#include "Arduino.h"
#include "IC7300.h"
#include "AltSoftSerial.h"
AltSoftSerial _mySerial;
IC7300::IC7300(byte TRX_address) {
// pinMode(pin, OUTPUT);
_TRX_address = TRX_address;
}
void IC7300::SetNoTransceive(byte _TRX_address){
if ((_mySerial.available() <= 0)) {
_mySerial.write(0xFE);
_mySerial.write(0xFE);
_mySerial.write(_TRX_address);
_mySerial.write(0xE0);
_mySerial.write(0x1A);
_mySerial.write(0x05);
_mySerial.write(0071);
_mySerial.write((byte)0x00);
_mySerial.write(0xFD);
}
delay(2);
}
Im Prinzip möchte ich lediglich ein Kommando via Serial versenden und übergebe dazu die Zieladresse. Bei der Überprüfung erhalte ich folgene Fehlermeldung:
C:\Arduino_SVN\IC7300/IC7300.h:11:7: note: candidate expects 1 argument, 0 provided
C:\Arduino_SVN\IC7300/IC7300.h:11:7: note: candidate: constexpr IC7300::IC7300(IC7300&&)
C:\Arduino_SVN\IC7300/IC7300.h:11:7: note: candidate expects 1 argument, 0 provided
Meine Irrwege hier aufzulisten ist wohl wenig sinnvoll.
Ich bin in dem Thema so gar nicht zu Hause und stehe völlig auf dem Schlauch.
Was mache ich hier falsch?
Vielen Dank im Voraus.
Der Konstruktor hat einen Parameter. Den musst du beim Erstellen des Objekts auch angeben. Genau der Teil des Codes fehlt natürlich
Wobei auch das Unsinn ist:
SetNoTransceive(byte _TRX_address)
Die Adresse ist in der Klasse doch schon bekannt. Dann braucht man sie nicht nochmal als Parameter
noiasca
December 11, 2021, 2:02pm
3
setNoTransceive // --> member Funktionen mit kleinem Buchstaben beginnen lassen.
Stell dem Anwender frei welche Serielle Schnittstelle er verwenden möchte.
leg in der Klasse eine Variable Stream an und lass dir im Konstruktor einen Pointer auf die zu verwendende Serial übergeben.
Stream *mySerial;
combie
December 11, 2021, 2:06pm
4
Ja! Durchaus.
noiasca:
Stream *mySerial;
Nur, wenn das zur Laufzeit ausgetauscht werden soll, dann Pointer.
Ich empfehle da eher eine Referenz:
Print &printer;
Wenn es so ausreichend ist, also ein lesen nicht nötig
Sonst eben Stream &stream;
dl5bo
December 11, 2021, 2:40pm
5
Der Konstruktor hat einen Parameter. Den musst du beim Erstellen des Objekts auch angeben. Genau der Teil des Codes fehlt natürlich<
Wie muss der denn aussehen? Könntest Du den bitte in dem Code ergänzen?
SetNoTransceive(byte _TRX_address)<
Wenn ich den Teil in diesen abändere, bekomme ich neue Fehler.
void IC7300::setNoTransceive()
Mein Einstieg war dieses Tuorial und ich blicke einfach nicht, wo meine Fehler sitzen.
Sorry, wenn ich nerve, aber ich gekomme gerade einen Knoten im Kopf ...
Tommy56
December 11, 2021, 2:44pm
6
Wie soll Dir jemand helfen können, wenn Du die Fehlermeldungen und Deine Änderungen geheim hälst und uns nur Fragmente vorwirfst.
Gruß Tommy
noiasca
December 11, 2021, 2:46pm
7
pack deine .h, .cpp, Mustersketch zusammen in ein Zip und lad es hoch. Sonst können wir das nicht nachvollziehen.
Tommy56
December 11, 2021, 2:48pm
8
Die kurzen Sachen kann man auch in 3 Codetagabschnitte packen.
Gruß Tommy
combie
December 11, 2021, 2:50pm
10
Vorschlag:
IC7300.h (241 Bytes)
sketch_dec11c.ino (216 Bytes)
IC7300.cpp (388 Bytes)
-------------------
Disclaimer:
Dieses ist ein typisches "Combie Posting".
Es kann Spuren von Wahnsinn enthalten
Es kann Anstoßpunkte für Irritationen, Ungenauigkeiten und Irrtümer enthalten.
Es macht keinen Versuch vollständig sein zu wollen.
Es wird dringendst dazu aufgefordert, die evtl. gegebenen Informationen, vor der Verwendung, pingelig zu überprüfen.
Es enthält keinerlei Zwang, den Vorschlägen/Gedanken zu folgen.
Wem dieses Posting nicht schmeckt, darf es einfach im Regal liegen lassen.
Es gibt keine Gewähr für die Funktion der evtl. gegebenen Tipps und/oder den Erhalt der geistigen Gesundheit des Gegenüber.
dl5bo
December 13, 2021, 1:16pm
11
Vielen Dank allen, die mir helfen wollen. Insbesondere auch für das Beispiel.
Wenn ich aber das hier lese:
IC7300(Stream &stream):stream(stream){}
und ich nicht den Hauch einer Ahnung habe, wie das zu verstehen ist, wird mir klar, dass mir einfach noch zu viele Grundlagen zum Thema fehlen. Daran muss ich zuerst arbeiten.
Hättet ihr dazu vielleicht Empfehlungen für mich, wo ich mich aufschlauen könnte?
Gruß
Gunnar
combie
December 13, 2021, 1:24pm
12
Das ist ein Konstruktor mit Initialisierungsliste .
Eine Erklärung sollte sich in jedem modernen C++ Grundlagenbuch finden lassen.
Beispiel:
Eigentlich mache ich ja nicht gerne Werbung für irgendwelche Dinge.
Aber dieses Buch ist gerade, jetzt, heute, im Angebot.
OK, mit C++17 nicht die ganz aktuelle Variante, aber wir "Arduino" hängen noch bei C++11.
Mein Rat, an alle Arduino Freunde:
Schafft euch ein C++ Buch an, damit ihr die Sprache lernen könnt, welche ihr da verwendet.
Und dieses Buch ist recht OK. Selbst getestet.
Nachtrag:
Auch wenn Arduino mit keinem Wort in dem Buch erwähnt wird....
Die ersten 50% des Buches beschre…
system
Closed
June 11, 2022, 1:55pm
14
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.