www.mikrocontroller.net

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


Autor: Nils S. (kruemeltee) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: G4st (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
auf der empfägnerseite: cat /dev/ttySx > datei
beim Sender: cat datei > /dev/ttySx

alternativ natürlich x/y/zmodem

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Tubuk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Tubuk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sigint 112 (sigint)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.