Forum: PC Hard- und Software Dateien über serielle Verbindung nach Linux kopieren, WIE?


von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

Ich habe hier ein Linuxboard ohne Netzwerkzugang um Dateien zu kopieren. 
Nun nutze ich GTK-Term als Terminal um darauf zuzugreifen. Dort gibt es 
die eine Funktion um Dateien im RAW-Format zu senden.

Nun meine Frage, gibt es eine Möglichkeit um damit Daten zu übertragen? 
Ich kann allerdings die Konsole nicht von der seriellen Schnittstelle 
nehmen. Am besten wäre natürlich ein Programm, welches ich laufen lasse, 
Datei senden und Programm beendet sich wieder und ich habe wieder 
Zugriff auf meine Konsole.

Ich hoffe einer von euch kann mir da weiterhelfen!

von G4st (Gast)


Lesenswert?

auf der empfägnerseite: cat /dev/ttySx > datei
beim Sender: cat datei > /dev/ttySx

alternativ natürlich x/y/zmodem

von Rolf Magnus (Gast)


Lesenswert?

> Nun nutze ich GTK-Term als Terminal um darauf zuzugreifen. Dort gibt es
> die eine Funktion um Dateien im RAW-Format zu senden.

Ein cat > datei auf dem Board, dann senden im Gtkterm wird vermutlich 
nicht richtig funktionieren bei Binärdaten, weil er dann mittendrin ein 
Dateiende erkennt, wenn da zufällig das entsprechende Zeichen steht. Du 
könntest aber auf der Sendeseite die Daten vorher z.B. mit uuencode in 
Text wandeln, den so übertragen, dann auf der anderen Seite mit uudecode 
wieder zurückwandeln.

> auf der empfägnerseite: cat /dev/ttySx > datei

Das wird aber wohl nicht so ideal funktionieren, wenn gleichzeitig die 
shell auf derselben Schnittstelle offen ist.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Um Binärdaten über serielle Verbindungen zu senden, die auch 
gleichzeitig als Terminalverbindung für die Shell dienen, verwendet man 
seit Äonen Protokolle wie die von G4st angesprochenen X-/Y- oder 
Z-Modem.

Auf Linux-Systemen kann man dafür sz verwenden.

Auf der Gegenseite bedarf es nur eines üblichen Terminalprogrammes wie 
z.B. das bei älteren Windows-Versionen mitgelieferte "Hyperterminal" 
oder TeraTerm.

von Tubuk (Gast)


Lesenswert?

rz und sz ist ein Weg muss aber durch das Terminalprogramm unterstützt 
werden
und linux kommt dafür wahrscheinlich minicom in Frage.

Copy und paste von Binärfiles geht mit uuencode bzw. uudecode.

von Tubuk (Gast)


Lesenswert?

Rolf Magnus schrieb:
>> auf der empfägnerseite: cat /dev/ttySx > datei
>
> Das wird aber wohl nicht so ideal funktionieren, wenn gleichzeitig die
> shell auf derselben Schnittstelle offen ist.

Einfach "cat > file" cat liest dann von stdin, was ja die Console ist.

von Hc Z. (mizch)


Lesenswert?

sz braucht unter Unix kein Terminalprogramm als Gegenseite, sondern nur 
eine Shell, denn es sendet als Präambel "rz<newline>", was das 
Empfangsprogramm auf der anderen Seite startet.

In Gegenrichtung muss rz von Hand aufgerufen werden.  Eine Shell auf der 
gleichen Schnittstelle stört (wie beim cat oben auch) natürlich nicht, 
denn sie tut ja nichts und wartet nur auf die Beendigung des Kommandos, 
sei es jetzt rz oder cat.

Und dann gibt es noch den guten alten Kermit, der sollte auch auf jedem 
Linux verfügbar sein und ist für solche Sachen auch gut geeignet.

von Sven P. (Gast)


Lesenswert?

'Dateiende' ist kein Zeichen, sondern eine Bedingung. Es könnte 
allerhöchstens sein, dass sich irgendein Terminal-Programm von einem 
NULL-Zeichen so verwirren lässt, wie das Windows-Notepad.

Eines der Modemprotokolle empfiehlt sich aber trotzdem, da die mit 
Prüfsummen arbeiten und automatisch den Transfer beenden. Eine serielle 
Schnittstelle ist halt keine Pipe, da gibts i.d.R. kein Dateiende.

von Klaus W. (mfgkw)


Lesenswert?

Unter DOS (als würdiger Nachfolger von CPM) war ^Z (ASCII 26)
als Dateiendezeichen verbreitet, nur zur Info.
Da hat man auch den Unterschied nicht gekannt zwischen Zeichen
und Bedingung (meines Wissens, weil im Dateisystem von CPM
keine Länge einer Datei vermerkt war und deshalb ein Zeichen
dafür missbraucht werden musste).

von Sven P. (Gast)


Lesenswert?

Zumindest bei Textdateien, jo. Meine IBM-DOS-Referenz sagt, dass das bei 
Binärdaten nicht so ist. Kam daher, dass CP/M die Dateigröße nur in 
Blöcken (etwa zu 128 Bytes) hinterlegt hat, und man bei Textdateien 
trotzdem auch halbe Blöcke haben wollte.

von Sigint 112 (sigint)


Lesenswert?

@Nils:
  Vielleicht ist auf deinem Linux-Board schon alles vorhanden um SLIP 
(Serial Line Internet Protocol) zu nutzen. Dann kannst du TCP/IP 
basierte Tools nutzen.

Gruß,
  SIGINT

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.