Terminal-Programm mit zeitgesteuerte Zeilenausgabe

OP #5316492
Lesenswert?
• ▲
▼
Hallo,

Kennt einer von euch ein Terminal-Programm, dass ein Text-File einliest 
und es Zeile für Zeile über den COM rausschickt, wobei ich angeben 
möchte wie viel Pause er zwischen den Zeilen macht?

Mein Sohn hat den Arm zusammengebaut und gelötet. Jetzt spielt er 
erstmal damit indem er an den Potis dreht, er kann aber per COM Befehle 
schicken um die Servos anzusteuern:

Bsp.
100a
123b
80m

Nur darf das halt nicht alles mit einem Schlag ausgegeben werden, 
sondern z.B. jede 2te Sekunde eine Zeile.

Viele Grüße!
 Marko
OP #5319044
Lesenswert?
• ▲
▼
Mein 8-jähriger Sohn soll Befehle für den Roboterarm den er geschraubt 
und gelötet hat schreiben und rüber schicken. Daher suchte ich nach 
einer einfach anzuwendenden Lösung.

Scheint es aber nicht zu geben :-(

Ich schreibe selber ein kleines Progrämmchen. Wenn es fertig ist stelle 
ich es dann hier zur Verfügung, vielleicht kann es noch jemand anders 
gebrauchen.

Marko
#5319069
Lesenswert?
• ▲
▼
long don schrieb:
> Bernd K. schrieb:
>> Klingt nach nem dreizeiligen Python script
>
> Oder nach einem Bash-Einzeiler...

Ich schlage vor eine kleine Python-API für den Roboter zu schreiben, 
dann kann er das Teil mit einfachen Python Scripts steuern, zuerst nur 
eine sequentielle Folge von Funktionsaufrufen
1
hoch(10)
2
rechts(20)
3
runter(10)

und später schrittweise lernen auch Kontrollstrukturen wie Schleifen 
oder bedingte Ausführung oder Funktionen zu erlernen unter Beibehaltung 
des bereits gelernten.

Mit diesen zeilenweisen Textdateien würd ich gar nicht erst anfangen, 
das ist eine Sackgasse.
#5319093
Lesenswert?
• ▲
▼
Ich habe vor einiger Zeit ein kleines Python-Skript namens 
"periodic_forward" geschrieben, das bei der Problemstellung helfen 
könnte (siehe Anhang).
Das Skript ist als (UNIX-)"Filter" aufgebaut und macht nichts anderes, 
als zeilenweise von der Standardeingabe einzulesen und nach einer 
einstellbaren Verzögerung auf die Standardausgabe zu forwarden.

Angenommen, die Befehle für den Roboter würden bspw. in einer Textdatei 
mit dem Namen "datei_mit_roboterarm_befehlen.txt" stehen, und alle zwei 
Sekunden soll ein neuer Befehl aus dieser Datei an die serielle 
Schnittstelle /dev/ttyUSB0 gesendet werden, dann könnte man das bspw. 
unter Linux mit obigem Skript so machen:
1
cat datei_mit_roboterarm_befehlen.txt | periodic_forward -p 2.0 > /dev/ttyUSB0
Sollte mit ähnlichen Befehlen vermutlich auch für Windows etc. 
funktionieren.

Die mit 1.46kb etwas kürzere Version loggt die gerade gesendete Zeile 
standardmässig noch auf STDERR; das könnte mglw. praktisch sein, weil 
man dann am Bildschirm parallel dazu noch sehen kann, welcher Befehl 
gerade gesendet wurde.
Angehängte Dateien:
OP #5322348
Lesenswert?
• ▲
▼
Das mit dem Terminalprogramm hat sich erledigt. Der COM-Port wird mit 
dem Programmer geteilt und das Zeug stört sich gegenseitig. Ich habe ihm 
jetzt einfach gezeigt wie man das Teil direkt programmiert. Für mich das 
erste mal die Arduino-IDE genutzt. Ergebnis ist hier zu sehen:

https://www.youtube.com/watch?v=k_Gqy0jJNeM&feature=youtu.be

Ab da muss er jetzt selber weiterkommen.
Angehängte Dateien:

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.