Library aus Quelltext erstellen

Hallo,

ich stehe grad vor dem Problem, dass ich eine Library einfügen möchte. Das ist die streamsend Library, mit welcher ich structs über die serielle Schnittstelle senden möchte.
Leider ist die Library nur als Quelltext verfügbar: http://paste.strictfp.com/39940
Nun stellt sich mir die Frage, wie ich den ganzen Spaß einbinde. ( Eigentlich besteht eine Library ja aus 2 Dateien?)

Viele Grüße
Till

Quelle:

Wieso keine RS485 Library?

Wie ist es denn möglich über diese Library structs zu senden?
Ist die nicht nur zur einfachen seriellen Kommunikation da?

Diese "Bibliothek" scheint nur aus streamsend.h zu bestehen. Also direkt ins Projektverzeichnis legen, oder in ein Unterverzeichnis neben die üblichen Bibliotheken.

Wichtig wäre zu wissen, ob der gezeigte Quelltext genau DAS macht was du willst. Falls JA müsste es möglich sein, daraus eine "echte" Bibliothek zu erstellen, die man dann wie alle anderen "importieren" kann. Siehe hier: http://www.arduino.cc/en/Hacking/LibraryTutorial.

Was mich irritiert ist das Fehlen einer Initialisierung, die man dann später in "void setup()" startet. Diese müsste m.E. noch nachgerüstet werden, ebenso die Trennung von Constructor und Methoden in *.h und *.cpp - danach kann man das eigentlich nach o.g. Tutorial prima lösen.

*Nachsatz...

Wenn du den Quelltext erst mal "nur so" testen willst, dann kannst du ihn ja auch komplett in die IDE und zwar VOR dein Programm reinkopieren. Wenn es dir später zu unübersichtlich erscheint - teile den Sketch doch mittel IDE-Tabs in 2 oder besser 3 Dokumente auf:

  1. Tab - "meinProgramm.ino" (nur 'ne kurze Beschreibung für dich)
  2. Tab - "aStreamSend" (dort den Source für StreamSend)
  3. Tab - "zEigeneRoutinen" (alles was du selbst geschrieben hast)

Und dann kannst du nach Belieben testen ob alles funktioniert...

Kommt drauf an welche RS485 Lib du nehmen willst.
SimpleModbusSlave wäre doch was für dich.

Tatsächlich hat es geklappt die streamsend.h einfach in den Library Ordner zu kopieren. Eine .cpp war nicht nötig.

Jetzt stehe ich vor eine weiteren Herausforderung: das Senden von wirklich großen Datenmengen funktioniert nicht. MAX_SIZE wurde auf 256 gestellt und der Struct wird auch gesendet, doch am Empfangen oder viel mehr am vernünftigen Auswerten des Empfangenen scheitert es noch. Hat da jemand eine Idee, was man an der Library verändern muss?

Große Datenmengen werden üblicherweise in kleinen Häppchen übertragen, mit Empfangsquittung. Dann reicht es bei einem Übertragungsfehler das letzte Paket nochmal zu senden.