Ausgabe verlangsamen

Post Reply

War dieses Helferlein für dich nützlich?

Ja.
0
No votes
Nein, ich hatte Probleme damit.
0
No votes
Nein, ich stand nie vor dem Problem, das dieses Helferlein lösen soll.
0
No votes
 
Total votes: 0

Message
Author
User avatar
Janka
Posts: 3585
Joined: 11. Feb 2006 19:10

Ausgabe verlangsamen

#1 Post by Janka »

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: Select all

#!/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: Select all

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

Post Reply