LabVIEWForum.de
(BMP) Bild aus String/Byte Array erzeugen? - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Grafik & Sound (/Forum-Grafik-Sound)
+---- Thema: (BMP) Bild aus String/Byte Array erzeugen? (/Thread-BMP-Bild-aus-String-Byte-Array-erzeugen)



(BMP) Bild aus String/Byte Array erzeugen? - Rob - 04.06.2007 17:43

Hallo,

habe 1200 Bytes an Daten von der seriellen Schnittstelle eingelesen und möchte diese visualisieren/als Bild darstellen. Jedes einzelne dieser 1200 Bytes entspricht 4 * einer 4-Bit Graustufencodierung (also: weiß (=11), hellgrau (=10), dunkelgrau (=01), schwarz =(00)), d.h. mit je 2 Bit aus einem Byte wird ein Bildpunkt beschrieben = 4 Bildpunkte pro Byte (2Bit * 4 = 8 Bit = 1 Byte, z.B. 0x1A = 0001 1001 = sw, dg, hg, hg). Insgesamt sind in den 1200Bytes also 4800 Bildpunkte enthalten. Diese sollen insgesamt ein 80 x 60 Pixel großes Bild ergeben. Habe mir dazu schon das folgende zusammengeklickt (siehe Anhang/Foto). Das ist aber zum einen relativ langsam (dauert gefühlt fast 1 Sekunde), zum anderen werden die einzelnen Zeilen des Bildes auch noch irgendwie verschoben.
An Software steht LabVIEW 7.1 zur Verfügung. Wie macht man es besser/richtig?

Gruß und danke

Robert


(BMP) Bild aus String/Byte Array erzeugen? - jg - 04.06.2007 22:19

Hallo, Robert,

ich hab mal deinen Code nachgebaut, lief bei mir (erstaunlich) zügig, konnte trotz einiger Versuche eigentlich nicht viel Geschwindigkeits-Verbesserung erreichen. Was ich aber nie nachgebaut habe, ist das Autoindexing des Strings am Rand der For-Schleife:
[attachment=6998]
Schmeiß das auf jeden Fall mal raus.

Zwecks versetzen, das konnte ich natürlich nicht nachvollziehen, da ich nur mit Zufallszahlen gespielt habe.
2 Ideen:
Ist deine Reihenfolge Zeilen-Spalten verkehrt herum? Sprich deine äußere Schleife läuft bis 80 und die innere dann nur bis 15?
Oder stimmt die Reihenfolge bei der Erstellung der 2bit-Variablen nicht?

MfG, Jens


(BMP) Bild aus String/Byte Array erzeugen? - Rob - 06.06.2007 13:11

Hi Jens,

habe gestern die ganze Zeit rumprobiert: im statischen Zustand funktioniert es einwandfrei (siehe geht). Wenn ich das ganze jedoch dynamisch mache (also mit eingelesenen Bytes von der seriellen Schnittstelle), dann schlägt das ganze fehl, bzw. erzeugt immer wieder einen Versatz.
Anbei noch einmal die beiden VIs (7.1er Version). Werde das noch mal mit einem Zwischenschritt machen: Übernahme der gelesenen Daten in einen extra (temporären) String und aus diesen dann das Bild erzeugen.
Der Autoindex war nur für mich gedacht, hatte da noch eine Anzeige drann hängen. Ist im "richtigen" VI nicht enthalten.

Gruß und schon mal Danke (wenn ich deine Antwort richtig deute, liegt es an der seriellen SChnittstelle/den Daten),

Robert

EDIT: kann meinetwegen gelöscht werden, VIs enthalten einen Fehler (zumindest das geht nicht VI)


(BMP) Bild aus String/Byte Array erzeugen? - Rob - 06.06.2007 14:38

Hallo,

komme dem Fehler näher. Es liegt definitiv am Empfang der Daten. Anbei mal 2 Screenshots und die dazu aufgezeichnete Datei mit den empfangenen Daten. Schon beim Empfang werden die Bytes total verdreht. Am Anfang dachte ich, es ist einfach nur alles "umgedreht/gespiegelt", aber das ist nicht der Fall. Wenn man die Daten aus der Textdatei kopiert und in die geht.vi kopiert, erhält man auch das richtige Bild. Warum und wie wird der empfangene String/Bytes verdreht?

Robert


(BMP) Bild aus String/Byte Array erzeugen? - Rob - 06.06.2007 16:23

Hallo,

Fehler gefunden, Problem behoben, alles läuft.
Wen es interessiert: in der Empfangsroutine wurden die empfangenen Strings falsch herum verknüpft. Die Eingänge der Stringverkettungsfunktion (siehe letztes Posting, 2. Bild) mussten "nur" vertauscht werden. ARGH...
Egal, kann nun nette Bilder darstellen.

Gruß und Danke,

Robert