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!
auf der empfägnerseite: cat /dev/ttySx > datei beim Sender: cat datei > /dev/ttySx alternativ natürlich x/y/zmodem
> 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.
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.
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.
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.
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.
'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.
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).
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.
@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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.