Ausgabe verlangsamen

Antworten

War dieses Helferlein für dich nützlich?

Ja.
0
Keine Stimmen
Nein, ich hatte Probleme damit.
0
Keine Stimmen
Nein, ich stand nie vor dem Problem, das dieses Helferlein lösen soll.
0
Keine Stimmen
 
Insgesamt abgegebene Stimmen: 0

Nachricht
Autor
Benutzeravatar
Janka
Beiträge: 3585
Registriert: 11. Feb 2006 19:10

Ausgabe verlangsamen

#1 Beitrag von Janka » 21. Sep 2007 10:17

Hallo,

dieses Helferlein brauchte ich, um die Ausgabe auf einen seriell angeschlossenen Drucker zu verlangsamen, damit er sich beim Programmieren des Flashs nicht verschluckt. Mit RTS/CTS-Handshake hatte das Ding arge Probleme, und XON/XOFF-Handshake wollte gerade beim Programmieren des Flashs auch nicht so recht.

Aber man kann es auch benutzen, um einen zu schnell durchrollenden Text zu verlangsamen etc. Vielleicht findet das ja jemand nützlich.

Code: Alles auswählen

#!/usr/bin/tclsh
# slow -- reblock and slow down output.
if &#123; $argc < 1 &#125; &#123; set DELAY 1000 &#125; &#123; set DELAY &#91; lindex $argv 0 &#93; &#125;
if &#123; $argc < 2 &#125; &#123; set BLOCKSIZE 1 &#125; &#123; set BLOCKSIZE &#91; lindex $argv 1 &#93; &#125;

fconfigure stdin -encoding binary -translation binary -buffering full -buffersize $BLOCKSIZE
fconfigure stdout -encoding binary -translation binary -buffering full -buffersize $BLOCKSIZE

while &#123;!&#91; eof stdin &#93;&#125; \
&#123;
	fcopy stdin stdout -size $BLOCKSIZE
	after $DELAY
&#125;
Man kann das Skript in eine Pipe einbauen, in der Defaulteinstellung verlangsamt es die Ausgabe auf 1 Zeichen pro Sekunde. Mit dem ersten Parameter kann man die Wartezeit in Millisekunden einstellen, mit dem zweiten die Größe des Blocks. Wichtig: Falls die Blockgröße >1 ist, blockiert das fcopy beim letzten Block, wenn die Eingabedatenmenge nicht genau durch die Blockgröße teilbar ist. Man kann sich durch

Code: Alles auswählen

$ cat Eingabedaten | dd bs=<BLOCKGRÖSSE> conv=sync | slow <VERZÖGERUNG> <BLOCKGRÖSSE>
behelfen, wenn es (wie in meinem Fall) nichts ausmacht, dass die Daten am Schluss mit Nullbytes auf die Blockgröße aufgefüllt werden.

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

Antworten