INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

String-Zeichen nur bis 127?



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

03.12.2006, 01:18
Beitrag #1

Mark_labview Offline
LVF-Grünschnabel
*


Beiträge: 14
Registriert seit: May 2005



kA



String-Zeichen nur bis 127?
Hallo Zusammen,

Ich möchte über die serielle Schnitstelle ein Byte an einen Microkontroller übertragen. Also Werte von 0 bis 255. Somit dachte ich wandle einfach meine Zahl "to an 8-bit integer" und dan mit "Byte Array To String" in ein ASCII Zeichen und übertrage dieses. Das klappt von 0-127 ganz prima, aber von 128-255 bleibt es bei 127. Hat LabVIEW dafür kein ASCII-Zeichen parat oder wo liegt das Problem? Und noch wichtiger, wie löse ich es?

Danke für eure Hilfe!

Labview Version 8.0
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.12.2006, 13:36
Beitrag #2

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.696
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
String-Zeichen nur bis 127?
' schrieb:Ich möchte über die serielle Schnitstelle ein Byte an einen Microkontroller übertragen. Also Werte von 0 bis 255. Somit dachte ich wandle einfach meine Zahl "to an 8-bit integer" und dan mit "Byte Array To String" in ein ASCII Zeichen und übertrage dieses. Das klappt von 0-127 ganz prima, aber von 128-255 bleibt es bei 127. Hat LabVIEW dafür kein ASCII-Zeichen parat oder wo liegt das Problem? Und noch wichtiger, wie löse ich es?
Warum wollen nur immer alle ASCII übertragen?

Konvertiere das zu übertragende Zeichen (U8) mit "Byte Array To String" in einen String - und fertig.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.12.2006, 13:52 (Dieser Beitrag wurde zuletzt bearbeitet: 03.12.2006 13:56 von Mark_labview.)
Beitrag #3

Mark_labview Offline
LVF-Grünschnabel
*


Beiträge: 14
Registriert seit: May 2005



kA



String-Zeichen nur bis 127?
' schrieb:Warum wollen nur immer alle ASCII übertragen?

Hallo IchSelbst,

es giebt 2 gute Gründe die Werte als ASCII Zeichen zu übertragen.
Mit einem ASCII- zeichen kann ich Zahlen bis 255 mit einem einzigen Byte übertragen, sonst bräuchte ich bis zu 3 Byte.
Zweitens muss ich das Ascii-Zeichen im Microkontroller nicht umständlich umrechnen, der versteht das Acii Zeichen ohne umschweife sofort als Wert von 0-255.

' schrieb:Konvertiere das zu übertragende Zeichen (U8) mit "Byte Array To String" in einen String - und fertig.
Sorry, hast du meinen Post gelesen? Genau das hab ich gemacht, klappt aber nur bis zum Wert 127.

Danke und Gruß!

Labview Version 8.0
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.12.2006, 14:48
Beitrag #4

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.696
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
String-Zeichen nur bis 127?
' schrieb:sonst bräuchte ich bis zu 3 Byte.
So? Eine "Drei-Byte-Übertragung" heißt bei mir "Dezimal"-Übertragung. Alles, was ein Byte bezeichne ich als Binär.

Zitat:klappt aber nur bis zum Wert 127.
Wieviele Datenbits hast du denn eingestellt?

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.12.2006, 14:53
Beitrag #5

Mark_labview Offline
LVF-Grünschnabel
*


Beiträge: 14
Registriert seit: May 2005



kA



String-Zeichen nur bis 127?
' schrieb:So? Eine "Drei-Byte-Übertragung" heißt bei mir "Dezimal"-Übertragung. Alles, was ein Byte bezeichne ich als Binär.

Wieviele Datenbits hast du denn eingestellt?

Ich habe 8 Datenbits eingestellt, aber das Problem seh ich ja schon in LabVIEW selbst. Wenn ich mir das ASCII Zeichen von LabVIEW wieder in eine Integer zurückwandlen lasse kommen ab 127 bis 255 nur noch 127 raus.

Wie kann ich den Binär übertragen? Giebts eine andere Möglichkeit als über die Wandlung in ein ASCII-zeichen?

Labview Version 8.0
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.12.2006, 15:49
Beitrag #6

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.696
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
String-Zeichen nur bis 127?
' schrieb:Wenn ich mir das ASCII Zeichen von LabVIEW wieder in eine Integer zurückwandlen lasse kommen ab 127 bis 255 nur noch 127 raus.
Nach der Standard-ISO-Definition sind ASCII-Zeichen nur 7Bit breit - was aber hier keine Rolle spielen dürfte. Hast du vielleicht eine "Begrenzung" in der Darstellung der Zahl?

Ich habe hier leider kein LV, daher als Text:

Wenn du ein ganz ordinäres Array of U8 mit der entsprechenden Konvertierung in einen String wandelst, für die Darstellung des Strings "Hexfromat" wählst, dann musst du im String FF sehen, wenn im U8 255 steht.

Zitat:Wie kann ich den Binär übertragen?
Auch "ASCII"-Zeichen werden "binär" übertragen. ASCII ist eine Darstellungsform genauso wie Hex, Dezinal etc.

Das Problem liegt darin, dass man dem VISA-VI nur einen "String" übergeben kann. Schön wäre, wenn man direkt eine Zahl anschließen könnte. Würde man einen U8 anschließen (können), würde ein Zeichen übertragen werden - und nicht drei, auch wenn die Zahl (in Dezimaldarstellung) 255 heißt. Wegen dieses "Mangels" muss man also eine Zahl (bzw. ein Array) in einen String konvertieren - der eigentlich kein "String" im Sinne von lesbarem Text ist, sondern ein Stream.

Teste also folgendes:
Nach der Konvertierung des Array of U8 nach String müssen bei Hexdarstellung des Strings die Zahlen des U8-Array als Hexwerte im String erscheinen: also 0..255 als 00 .. FF.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
03.12.2006, 16:23
Beitrag #7

Mark_labview Offline
LVF-Grünschnabel
*


Beiträge: 14
Registriert seit: May 2005



kA



String-Zeichen nur bis 127?
' schrieb:Nach der Standard-ISO-Definition sind ASCII-Zeichen nur 7Bit breit - was aber hier keine Rolle spielen dürfte.
Hm, na das dürfte doch die Erklärung für mein Problem sein 2^7 = 128. Sprich LV arbeitet nur mit der Standart-Tabelle und nicht mit der erweiterten für IBM PC oder Windows?

' schrieb:Auch "ASCII"-Zeichen werden "binär" übertragen. ASCII ist eine Darstellungsform genauso wie Hex, Dezinal etc.

Das war mir schon bewusst. Meine frage ziehlte darauf ab ob es eine Möglichkeit giebt die serielle Schnittstelle mit LV so low level ansprechen zu können das man einzelne bit-folgen eingeben kann. Aber ich denke die frage hats du auch schon mit "nein" beantwortet. Also bleibt nur der "Umweg" über einen ASCII string?

Deinen Test hab ich gemacht. Es giebt Hexwerte von 0x00 bis 0x7F, also wie auch in dezimal von 0-127.

Ich hab mal noch ein wenig in LabVIEW nach anderen Funktionen gesucht und folgende gefunden:

VISA Out 8
Writes an 8-bit block of data to the specified address space and offset.

leider bekomm ich den nicht zum laufen. Die fehlermeldung lautet:
Possible reason(s):

VISA: (Hex 0xBFFF0067) The given session or object reference does not support this operation.

Gruß Markus

Labview Version 8.0
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.12.2006, 16:41
Beitrag #8

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.696
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
String-Zeichen nur bis 127?
' schrieb:Sprich LV arbeitet nur mit der Standart-Tabelle und nicht mit der erweiterten für IBM PC oder Windows?
Das kann ich mir nicht vorstellen. Bei einer "Konvertierung" einer "Zahl nach ASCII" wird praktisch nichts gemacht - außer Speicher kopiert. Ein Speicherbereich, der als Typ U8 hat, wird in einen Speicherbreich kopiert, der zu einer Variablen vom Typ String gehört. Eine "Übersetzungstabelle" gibt es da nicht.

Zitat:Aber ich denke die frage hats du auch schon mit "nein" beantwortet. Also bleibt nur der "Umweg" über einen ASCII string?
Im Prinzip ja - außer wenn ich das mit VISA OUT 8 finde.

Zitat:Es giebt Hexwerte von 0x00 bis 0x7F, also wie auch in dezimal von 0-127.
Wenn du das sagst, glaube ich dir das natürlich. Das ist aber nicht Sinn und Zweck. Das muss mit 00 bis FF gehen. Vergleiche Anhang (LV7.1.1)


Angehängte Datei(en)
Sonstige .vi  U82Str.vi (Größe: 11,1 KB / Downloads: 202)

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.12.2006, 17:12
Beitrag #9

Mark_labview Offline
LVF-Grünschnabel
*


Beiträge: 14
Registriert seit: May 2005



kA



String-Zeichen nur bis 127?
ok, an dieser Stelle muss ich mich für meine Blödheit entschuldigen. Ich hatte bei meinen ganzen tests die ich gemacht habe noch diese Funktion dazwischen:

To Byte Integer
Converts a number to an 8-bit integer in the range -128 to 127. The connector pane displays the default data types for this polymorphic function
BlushWacko

Ohne das funzt es besser!......

Danke @IchSelbst für Deine geduldige hilfe!

Labview Version 8.0
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.12.2006, 19:51
Beitrag #10

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.696
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
String-Zeichen nur bis 127?
Also, das mit der Begrenzung auf 127 hat mir doch keine Ruhe gelassen.

' schrieb:Ich hatte bei meinen ganzen tests die ich gemacht habe noch diese Funktion dazwischen:
To Byte Integer
Converts a number to an 8-bit integer in the range -128 to 127. The connector pane displays the default data types for this polymorphic function
Ohne das funzt es besser!......
Hast du als "Start-Zahl" eine vom Typ double? Double nach I8 gibt natürlich nur positive Zahlen von 0 bis 127.Wenn dann musst du den double zuerst nach I16 und das dann nach U8 wandeln Tongue. Guckst du Beispiele.


Angehängte Datei(en)
Sonstige .vi  U82Str.vi (Größe: 36,21 KB / Downloads: 193)

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Nicht Darstellbare Zeichen erkennen Philipp_O 2 3.533 21.11.2022 07:39
Letzter Beitrag: Philipp_O
  GS1 Trennzeichen - ASCII Zeichen Andi_89 1 3.708 16.07.2018 15:57
Letzter Beitrag: GerdW
  Was bedeutet dieses Zeichen? dulfried 0 3.279 03.11.2017 14:48
Letzter Beitrag: dulfried
  nur alphanumerische Zeichen zulassen dimitri84 5 7.754 12.03.2012 20:23
Letzter Beitrag: jg
  String suchen und ersetzen zwischen zwei zeichen Burn_Baby 2 6.131 10.12.2011 00:04
Letzter Beitrag: unicorn
  In einen String Zeichen einfügen Yantit 12 17.164 20.11.2010 16:51
Letzter Beitrag: schrotti

Gehe zu: