Ich bastle mir gerade ein Steuermodul für GRBL, da mein PC als Gcode-Sender einfach zu langsam und stromfressend ist. Nach langem suchen und probieren läuft das 1.8HY TFT endlich, und über einen Joystick lässt sich mein Laserplotter bereits positionieren.
Leider fehlt mir das nötige Know-How um ganze Dateien an GRBL zu streamen, ohne den Puffer zu überladen. Mit Serial.write(myFile.read()); funktioniert es nicht.
Jede Textzeile muss einzeln gesendet, und auf das OK von GRBL gewartet werden. Kann mir dabei bitte jemand helfen?
Ich benutze nur die Beispielcodes fürs display und wie gesagt myFile.read mit dem es nicht funktioniert.
Schaltplan: RX an TX, TX an RX, Masse an Masse.
Ich finde keinen einfachen Beispielcode um mit der SDlib eine Zeile auszulesen, kann mir bitte jemand weiterhelfen?
Kolbi:
Ich benutze nur die Beispielcodes fürs display und wie gesagt myFile.read mit dem es nicht funktioniert.
Schaltplan: RX an TX, TX an RX, Masse an Masse.
Ich finde keinen einfachen Beispielcode um mit der SDlib eine Zeile auszulesen, kann mir bitte jemand weiterhelfen?
Super Beschreibung, aber der Code fehlt immer noch.
Wenn du alles geheim hältst, können wir nicht helfen.
Oder sollen wir für dich alles zusammensuchen, was es im Web gibt?
Wie sind denn die Textzeilen terminiert? LF-terminierte Zeilen liest und schreibst Du in einer Schleife bis zum LF, wartest auf das OK von GRBL, dann die nächste Zeile. Ungetestet:
Da ging es darum zwei Floats pro Zeile auszulesen. Aber da Auslesen und Parsen getrennt sind geht das mit jedem beliebigem Format.
Wichtig ist dass auch nach der letzten Zeile ein Zeilenumbruch kommt!
In loop() ist das hier die Schlüsselstelle:
if (readStream(dataFile) == true)
Das ist so lange wahr wie Zeichen in der Datei zu lesen sind.
Wenn du aber einfach nur 1:1 auslesen und weitersenden willst, würde es auch sowas wie oben tun. Hier müsste man die Zeilen nicht unbedingt zwischenspeichern!
Wie sind denn die Textzeilen terminiert?
CR + LF. Also am besten CR ignorieren und auf das LF abfragen