www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik JPEG Bilder mit serieller Schnittstelle übertragen


Autor: macke_a (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo !
Gibt es irgendwelche Einschränkungen, wenn ich JPEG Bilder über die 
serielle Schnittstelle übertrage? Ich möchte von meinem Rechner, Bilder 
an meinen ARM9 µC übertragen, diese dort auf einer externen 
Speicherkarte ablegen und auf einem 4" TFT Farbdisplay darstellen.

Wie sind Eure Erfahrungen damit ?
Gibt es solch ein Projekt vielleicht schon?

Freundliche Grüsse
macke_a

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

Bewertung
0 lesenswert
nicht lesenswert
Über serielle Schnittstellen lassen sich jedwede Art von Daten 
übertragen, ob das nun JPEG-, GIF-, TIFF- oder sonstwas-Daten sind, das 
ist der Schnittstelle vollkommen egal. Du musst nur nacheinander jedes 
einzelne Byte übertragen.

Gut, Du solltest Dir noch ein Rahmenprotokoll drumherum ausdenken, damit 
der Empfänger der Daten weiß, wann die Nutzdaten anfangen und wann sie 
aufhören, aber auch das ist vollkommen unabhängig von der Art der 
versendeten Daten.

Google mal nach den Protokollen X-MODEM, Y-MODEM, Z-MODEM und KERMIT.

Autor: Kola (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rufus hat Recht, allerdings müssen die Bilder als "binäre Daten" 
übertragen werden, nicht als Texte!

Autor: Severino R. (severino)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Protokolle X-MODEM, Y-MODEM, Z-MODEM (und ev. KERMIT) kennen keinen 
Text-Modus, sie übertragen alles mit 8 Bit.

(Bei FTP kann man zwischen ASCII und Binary wählen.)

Severino

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Probleme gibt es nur, wenn die Gegenstelle ASCII Zeichen aus dem
Steuerzeichenbereich als Steuerzeichen interpretiert.

Ein X-Modem geht nicht, da die ASCII Zeichen 0x01, 0x04, 0x06, und 0x15
als "Steuerzeichen" interpretiert werden.
Du kannst Dir aber auch eine eigene Implementierung schreiben.
Dabei musst Du dann sogenannte Zeichenstopfen verwenden.
Wenn z.B. ein Zeichen 0x01 im Datenstrom vorkommt, dann musst Du
"0x01 0x01" senden. Und auf der anderen Seite wieder ein 0x01 entfernen.
Dann werden nur einzelne Vorkommen von z.B. 0x01 als Steuerzeichen
interpretiert und im Doppelpack als ein Zeichen des Datenstroms.

Ansonsten müsstest Du Dir ein eigenes Protokoll überlegen.
Z-Modem ist soweit ich weiss etwas komplizierter. Kann aber auch mit
"Binärdaten" umgehen (wird wahrscheinlich mit Zeichenstopfen arbeiten).





Autor: Severino R. (severino)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Matthias

X-Modem geht sehr wohl für Binärdaten, da jeder Block eine definierte 
Länge hat und der Empfänger somit klar feststellen kann, was 
Steuerzeichen und was Blockinhalt ist.
Wenn die Leitung eine gute Qualität hat, ist X-Modem absolut genügend.
Will man aber Dateinamen und Änderungsdatum und -zeit mit übertragen, 
ist mindestens Y-Modem nötig.
Über eine schlechte Telefonleitung hat X-Modem jedoch tatsächlich den 
Nachteil, dass bei verlorener Synchronisation durch Störungen ein 
Nutzdatenbyte als Steuerzeichen interpretiert werden könnte, was aber 
meistens "nur" zum Abbruch führt, kaum jedoch zu einer fehlerhaft 
empfangenen Datei.

Dafür ist X-Modem sehr einfach zu implementieren.

Severino

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

Bewertung
0 lesenswert
nicht lesenswert
Im Zusammenhang mit dem Übertragen von Dateien auf ein System, das 
ebenfalls etwas mit Dateien anfangen kann, ist das Z-Modem-Protokoll das 
reizvollste, da dieses auch Dateinameninformationen übermitteln kann.
Alle von mir genannten Protokolle werden von üblichen 
Terminalprogrammen* wie Hyperterminal unterstützt, so daß auf PC-Seite 
kein spezielles Programm entwickelt werden muss.


*) nein, weder "Bray" noch "HTerm" sind Terminalprogramme, diese sind 
Analyse- und Testprogramme für serielle Übertragung.
Terminalprogramme aber emulieren serielle Terminals, werten also 
übertragene Steuerzeichen zur Bildschirmsteuerung aus, wie es VT100, 
TVI950 etc. alle auch taten.

Autor: macke_a (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ! Erstmal Danke für Eure Beiträge.
Nun soweit ich das verstanden habe, bin ich in der Lage mit dem Y-Modem 
ein JPEG Bild über meine serielle Schnittstelle zu übertragen.

Was mir etwas mehr Sorgen bereitet ist, dass die Datei ja in 8Bit 
Schritten übertragen wird, auch wieder vollständig und in der richtigen 
Reihenfolge zusammengesetzt wird! Nun, die Daten werden unmittelbar auf 
einer SD-Karte abgespeichert. Mmmh, da stellt sich für mich nur die 
Frage, ob ich einen Puffer für das JPEG Bild erstellen soll und dann die 
vollständigen Daten an die SD-Karte transportiere.

Was wird eigentlich passieren, wenn ich für mein 4" Zoll Display, eine 
JPEG von einer anderen Größe 480x640 übertragen. Irgendwo wird es dann 
wohl Probleme geben. Fehlt ein Stück vom Bild, oder wie kann sich so 
etwas auswirken?

Freundliche Grüsse
macke_a


Autor: Walter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hast du dir schon überlegt wie du das jpeg-Bild decodierst?
Ich denke nicht, denn sonst würdest du die Frage mit der Auflösung nicht 
stellen ...

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
macke_a wrote:
> Was mir etwas mehr Sorgen bereitet ist, dass die Datei ja in 8Bit
> Schritten übertragen wird, auch wieder vollständig und in der richtigen
> Reihenfolge zusammengesetzt wird!

Das ist dein geringstes Problem.
Da implementierst du einfach ein Hardware-Handshake, also
die RS232 Leitungen RTS/CTS und schon kann der µC dem PC
mitteilen: "Warte mal, ich muss das bis jetzt gesendete
erst mal verarbeiten. - So, ich bin jetzt soweit fertig, es
kann weitergehen"

> Nun, die Daten werden unmittelbar auf
> einer SD-Karte abgespeichert. Mmmh, da stellt sich für mich nur die
> Frage, ob ich einen Puffer für das JPEG Bild erstellen soll und dann die
> vollständigen Daten an die SD-Karte transportiere.

Wie du willst. Der Puffer belegt halt eine Menge SRAM-Speicher
und der ist auf einem µC sowieso notorisch knapp.

> Was wird eigentlich passieren, wenn ich für mein 4" Zoll Display, eine
> JPEG von einer anderen Größe 480x640 übertragen. Irgendwo wird es dann
> wohl Probleme geben. Fehlt ein Stück vom Bild, oder wie kann sich so
> etwas auswirken?

Kommt auf deine Anzeige Funktionen an: Es kann ein Stück
fehlen, die Zeilen können rundum wrappen, das Programm hängt
sich auf, weil es damit nicht umgehen kann, ...

Das ist aber auch noch nicht wirklich dein Problem. Dein
Hauptproblem ist: Wo krieg ich eine JPEG Dekodierung her,
die auf meinem µC noch vernünftig läuft.

Autor: peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
https://sourceforge.net/projects/mb-jpeg/

ach ja, muss es unbeding RS232 sein?
das ist nämlich super langsam :(

Autor: macke_a (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo !
Ok besten Dank an alle...
Ich denke ich werde mit euren Informationen weiterkommen und hoffentlich 
morgen gegen Abend ne Antwort bzw. ein lauffähiges Programm haben !

Ich melde mich !!

Freundliche Grüsse
macke_a

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.