Library Einstieg gelingt nicht

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

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;

Ja! Durchaus.

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;

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 ...

Wie soll Dir jemand helfen können, wenn Du die Fehlermeldungen und Deine Änderungen geheim hälst und uns nur Fragmente vorwirfst.

Gruß Tommy

pack deine .h, .cpp, Mustersketch zusammen in ein Zip und lad es hoch. Sonst können wir das nicht nachvollziehen.

Die kurzen Sachen kann man auch in 3 Codetagabschnitte packen.

Gruß Tommy

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.

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

Das ist ein Konstruktor mit Initialisierungsliste.
Eine Erklärung sollte sich in jedem modernen C++ Grundlagenbuch finden lassen.

Beispiel:

Prima. Dankeschön.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.