LabVIEWForum.de - Serielle Schnittstelle - zu viele Bytes

LabVIEWForum.de

Normale Version: Serielle Schnittstelle - zu viele Bytes
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
Hallo
Ich erhalte über die serielle Schnittstelle 8000 Werte im Bereich zwischen 0 und 255.
Dazu verwende ich die Funktion "Bytes at seriell port" und danach "serial port read".
Nun erhalte ich aber meine Werte so schnell, dass dabei ca. 4096 Bytes anliegen (ermittelt durch die Funktion bytes at seriell port). Dies wird allerdings dann als String von unglaublicher Länge als gesamtes präsentiert.
Dies soll jedoch nicht sein, sondern ich möchte immer einzelne Strings mit gleicher Breite und im Bereich 0 bis 255.

Bitte keine Empfehlungen in Richtung VISA. Muss so realisiert werden.
Zitat:... ich möchte immer einzelne Strings mit gleicher Breite und im Bereich 0 bis 255.
Du könntest den String nach dem Einlesen zerteilen (mit gleicher Breite) und die Einzelstrings anschließend weiterverarbeiten...

Lg Stefan
oppossom schrieb:
Zitat:... ich möchte immer einzelne Strings mit gleicher Breite und im Bereich 0 bis 255.
Du könntest den String nach dem Einlesen zerteilen (mit gleicher Breite) und die Einzelstrings anschließend weiterverarbeiten...

Lg Stefan

Nein das ist nicht möglich. Zumindest weiß ich nicht wie.

Gleiche Breite war vielleicht falsch ausgedrückt.
War so gemeint 0 = 00000000, 255 = 11111111, also immer 8Bit breit.

Direkt den String alle 3 zeichen splitten geht also nicht.

Der String schaut cirka so aus: 17025524301702552430170....
allerdings nicht immer gleiche Werte

Ich möchte das direkt ein String-> verarbeiten, der nächste-> verarbeiten, ...
also 170 weitere Bearbeitung
255 ...
243 ...
0 ...
Hilf dir das ein bisschen weiter?

Lg Stefan
Danke sehr, trotzdem habe ich noch ein paar Fragen!

Wenn ich es richtig verstehe:
Du überprüft ob es sich um eine Zahl kleiner Hundert handelt oder nicht! Was passiert wenn meine Zahl jedoch 50 ist. Dann dürfen weder 2 Zeichen noch 1 Zeichen in das Array geschrieben werden!
Das berücksichtigt dein Program nicht, oder? Hab ich das richtig verstanden?

Wozu muss man vorne ein Array erzeugen? Das blaue Array ganz links. Ist das zwingend nötig?
Prinzipiell kann ich es ja auch direkt auf das Array legen. Mittels "Enable Indexing"
Hallo,

also ich verstehe was nicht.
Ist die Zahl 11111111b nicht gleich 'ÿ'?

Wenn ja, dann soll dein String anders aussehen. Bist du sicher, dass du diesen String emfängst?

Ich wollte eigentlich "String to Byte Array" vorschlagen, aber mit deinem String würde es nicht gehen.

Ansonsten ist es unbekannt wie deine Zahlen aussehen:
170255 kann 170 255 bedeuten, aber auch z.B. 17 0 25 5


Gruss, Eugen
eugen graf schrieb:Hallo,

also ich verstehe was nicht.
Ist die Zahl 11111111b nicht gleich 'ÿ'?
Rein Registermäßig betrachtet ist 11111111=0xFF=255
Es geht mir hier nicht um irgendwelche Zeichen sondern rein um die Zahlenwerte.


eugen graf schrieb:Wenn ja, dann soll dein String anders aussehen. Bist du sicher, dass du diesen String emfängst?
Ja vom Prinzip her schon. Es sind immer 4 WErte hintereinandergereiht, dann kommt der nächste Block. Nur irgendwie packt LabVIEW das Ganze in einen String. Es sollte jedoch für jeden Wert (0 bis 255, jeder WErt möglich) ein einzelner String entstehen!


eugen graf schrieb:Ansonsten ist es unbekannt wie deine Zahlen aussehen:
170255 kann 170 255 bedeuten, aber auch z.B. 17 0 25 5
Ja das ist das größte Problem.
Nur wie erkenne ich das?

Das Beste wäre wenn LabVIEW das Ganze nicht in einen String packt. Dann würde langwierige nachfolgende Aufschlüsselung des Strings erspart bleiben. Dann könnte ich direkt den einzelnen String weiterverarbeiten.
Das kannst du gar nicht erkennen.
Es muss ein Trennzeichen dazwischen, oder die Zahlen müssen immer die gleiche Länge haben (z.B. mit 0 gefüllt).

Wie gesagt, wenn du nicht sicher bist, wie dein String aussieht, probiere die Umwandlung vom String in ein Byte-Array.

Gruss, Eugen
[quote=eugen graf][q.uote="LV_Newbie]Ja das ist das größte Problem.
Kannst du wirklich die Gegenstelle programmieren? Habe ich richtig gehört?

Dann musst du es schaffen, dass dein String ungefähr so aussieht:

ªnšn§Ù9ºÏW0nã•_$åRÄ»§”ôøq¤J2×ÝNÖê?² Ó`½Ý䯧]ß±Å|7”ð5d
”–¯v§«iO¦ä£¶5ÏÓ $ÝT÷«¿çv6¾4S/ÍÔK3õÙ ti¦^š©—f꥙ú´]š©—fêój¦¶»?”?õ WNKë™Vž³ÙI•'ª<…N½W‚|ÓX9±‰ò£â8•·8zYPP°èî¯>…=.Š?ˆ,I·ž,

Dann ist es ein binäres Stream. So kannst du diesen String in LV direkt in Byte Array umwandeln und hast direkt die Zahlen. Du brauchst dann keine Trennzeichen hinzuzufügen.

Gruss
Seiten: 1 2 3
Referenz-URLs