Binäre Kommunikation

VISA, TCP/IP, CAN und ähnliche Protokolle
Аватара пользователя
learny
adviser
adviser
Сообщения: 207
Зарегистрирован: 23 окт 2008, 17:54
Версия LabVIEW: 8.5
Контактная информация:

Re: Binäre Kommunikation

Сообщение learny »

eg писал(а): Aber ich habe mir noch mal deine Daten im Screenshot angeschaut, das sieht nach binären Daten aus. Jetzt habe ich vergessen, was die eigentlich Frage war :D
:D

wie ich binäre Daten in HEX umwandeln kann, so dass ich sie weiterverwende. Ein Beispiel dazu: 9F 53 87 als Ausgabe entsprechen einen Messwert von 8868,767. Genau diesen in dezimalwert möchte ich umwandeln.
أهلا و سهلا بالمستخدمين العرب
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Binäre Kommunikation

Сообщение Eugen Graf »

Ok, das deutet noch mal an, dass das binäre Daten sind, denn so viele ASCII Zeichen man nicht mit 3 Bytes darstellen kann.

Zur eigentlich Frage. Du hast mir also 3 Bytes gegeben, aus denen du eine Zahl machen willst. Die Zahlen sollten aber entweder mit einem, zwei, vier oder acht Bytes dargestellt werden. Bist du dir sicher, dass aus diesen 3 Bytes eine Zahl rauskommen soll? Fehlt da vielleicht noch ein Byte irgendwo?
Аватара пользователя
learny
adviser
adviser
Сообщения: 207
Зарегистрирован: 23 окт 2008, 17:54
Версия LabVIEW: 8.5
Контактная информация:

Re: Binäre Kommunikation

Сообщение learny »

eg писал(а):Ok, das deutet noch mal an, dass das binäre Daten sind, denn so viele ASCII Zeichen man nicht mit 3 Bytes darstellen kann.

Zur eigentlich Frage. Du hast mir also 3 Bytes gegeben, aus denen du eine Zahl machen willst. Die Zahlen sollten aber entweder mit einem, zwei, vier oder acht Bytes dargestellt werden. Bist du dir sicher, dass aus diesen 3 Bytes eine Zahl rauskommen soll? Fehlt da vielleicht noch ein Byte irgendwo?
genau die 3 Bytes aus der Gesamtantwort (die als string angezeigt wird), entsprechen den Dezimalwert den ich suche, allerdings ohne Komma.

Angezeigt werden z.B. die Bytes 87539f (9F 53 87 - immer an der 19. Stelle in der Gesamtantwort).

Das ist genau der Dezimalwert : 8868767
Auf dem Display des Geräts werden 8868,767 angezeigt.

Zur manuellen Umwandlung habe ich folgenden Link benutzt:
http://www.parkenet.com/apl/HexDecConverter.html
أهلا و سهلا بالمستخدمين العرب
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Binäre Kommunikation

Сообщение Eugen Graf »

Also es hat bei mir mit Type Cast geklappt aus 0087 539F die gewünschte Zahl zu bekommen. Allerdings habe ich es mit einem Byte erweitert, weil wie gesagt eine Zahl sollte mit 1, 2, 4 oder 8 Bytes dargestellt werden.
Аватара пользователя
learny
adviser
adviser
Сообщения: 207
Зарегистрирован: 23 окт 2008, 17:54
Версия LabVIEW: 8.5
Контактная информация:

Re: Binäre Kommunikation

Сообщение learny »

eg писал(а):Also es hat bei mir mit Type Cast geklappt aus 0087 539F die gewünschte Zahl zu bekommen. Allerdings habe ich es mit einem Byte erweitert, weil wie gesagt eine Zahl sollte mit 1, 2, 4 oder 8 Bytes dargestellt werden.
hast Du den x-Eingang vom TypeCast auch als String in HEX-Anzeige probiert, eg?
أهلا و سهلا بالمستخدمين العرب
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Binäre Kommunikation

Сообщение Eugen Graf »

Ja, genau so, habe ich das gemacht. String Konstante auf HEX-Anzeige umgestellt und dort 0087 539F eingetippt. Als Typ oben habe ich U32 oder I32 angeschlossen.
Аватара пользователя
learny
adviser
adviser
Сообщения: 207
Зарегистрирован: 23 окт 2008, 17:54
Версия LabVIEW: 8.5
Контактная информация:

Re: Binäre Kommunikation

Сообщение learny »

eg писал(а):Ja, genau so, habe ich das gemacht. String Konstante auf HEX-Anzeige umgestellt und dort 0087 539F eingetippt. Als Typ oben habe ich U32 oder I32 angeschlossen.
dann filtere ich meine 3 Bytes heraus,
zeige sie an als string in HEX-Anzeige,
danach drehe ich sie um (reverse string),
dann füge ich eine 00-Byte ein,
und dann mittels TypeCast , wandle ich den Wert zu Dezimal.

eine O.K. für meine Vorgehensweise deinerseits eg?
أهلا و سهلا بالمستخدمين العرب
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Binäre Kommunikation

Сообщение Eugen Graf »

Nicht ganz, ich habe manchmal auch mit Drei Bytes Zahlen zu tun. Allerdings muss man wissen ob die Zahl die rauskommen muss vorzeichenbehaftet oder nichtvorzeichenbehaftet ist. Für vorzeichenbehafteten Zahlen sollte man nicht unbedingt mit 0 erweitern, sondern abhängig vom letzten Bit des ersten (wenn schon umgedreht) Bytes. Also wenn das letzte Bit des ersten Bytes TRUE ist, dann mit 0xFF erweitern, ansonsten mit 0x00.
Ausserdem sollte man Operationen mit Strings bei hohen Frequenzen vermeiden, lieber in Byte Array umwandeln und dann mit Array Operationen weiterarbeiten.

Wenn die Zahl, die rauskommen soll nicht vorzeichenbehaftet sein sollte, dann kannst du sie mit 0x00 erweitern.

Hier wäre ein Beispiel, wie ich es in einem meiner Projekte realisiert habe (gleich für 18 Zahlen):
Вложения
DreiBytes.png
DreiBytes.png (4.69 КБ) 8718 просмотров
Аватара пользователя
learny
adviser
adviser
Сообщения: 207
Зарегистрирован: 23 окт 2008, 17:54
Версия LabVIEW: 8.5
Контактная информация:

Re: Binäre Kommunikation

Сообщение learny »

eg писал(а):Nicht ganz, ich habe manchmal auch mit Drei Bytes Zahlen zu tun. Allerdings muss man wissen ob die Zahl die rauskommen muss vorzeichenbehaftet oder nichtvorzeichenbehaftet ist. Für vorzeichenbehafteten Zahlen sollte man nicht unbedingt mit 0 erweitern, sondern abhängig vom letzten Bit des ersten (wenn schon umgedreht) Bytes. Also wenn das letzte Bit des ersten Bytes TRUE ist, dann mit 0xFF erweitern, ansonsten mit 0x00.
Ausserdem sollte man Operationen mit Strings bei hohen Frequenzen vermeiden, lieber in Byte Array umwandeln und dann mit Array Operationen weiterarbeiten.

Wenn die Zahl, die rauskommen soll nicht vorzeichenbehaftet sein sollte, dann kannst du sie mit 0x00 erweitern.

Hier wäre ein Beispiel, wie ich es in einem meiner Projekte realisiert habe (gleich für 18 Zahlen):
super, und gut zu wissen für die Zukunft. Negative Zahlen werden bei mir aber nie vorkommen. Die Zahl steigt eigentlich nur an.

Ich habe folgendes programmiert bisher.

Изображение

Ich muss nur noch aus dem Decimal Wert "xxxxxxx" einen "xxxx,xxx" machen. Hast du für mich einen Tip dafür?
أهلا و سهلا بالمستخدمين العرب
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Binäre Kommunikation

Сообщение Eugen Graf »

Ich muss nur noch aus dem Decimal Wert "xxxxxxx" einen "xxxx,xxx" machen. Hast du für mich einen Tip dafür?
:haha: vielleicht durch 1000 teilen?
Аватара пользователя
learny
adviser
adviser
Сообщения: 207
Зарегистрирован: 23 окт 2008, 17:54
Версия LabVIEW: 8.5
Контактная информация:

Re: Binäre Kommunikation

Сообщение learny »

eg писал(а):
Ich muss nur noch aus dem Decimal Wert "xxxxxxx" einen "xxxx,xxx" machen. Hast du für mich einen Tip dafür?
:haha: vielleicht durch 1000 teilen?
Bitte lösche die letzten zwei Antworten! :D :D

(Blamage)
أهلا و سهلا بالمستخدمين العرب
Аватара пользователя
learny
adviser
adviser
Сообщения: 207
Зарегистрирован: 23 окт 2008, 17:54
Версия LabVIEW: 8.5
Контактная информация:

Re: Binäre Kommunikation

Сообщение learny »

Hallo zusammen,

aus einer Binären Antwort bekomme ich einen mit :labview: einen herausgefilterten Messwert, der folgendermaßen aussieht (HEX):
02 B6 00

Laut Protokollbeschreibung, handelt es um 3 Bytes (MSB, LSB :dntknw: , Exponent).

Wie könnte ich (evtl. allgemein) daraus einen dezimalen Wert machen? (laut Gerät-Anzeige, müsste der Wert bei ca 700 liegen).

Vielen Dank
learny
أهلا و سهلا بالمستخدمين العرب
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Binäre Kommunikation

Сообщение Eugen Graf »

Ja, es kommt 694 raus.
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Binäre Kommunikation

Сообщение Eugen Graf »

Nein, ich habe das letzte Byte (0x00) weggelassen, weil das Exponent ist. Und den Rest 0x02 B6 mit dem Typecast in eine U16 Zahl transformiert. Falls statt 0x00 etwas anderes stünde, würde es anders aussehen.
Аватара пользователя
learny
adviser
adviser
Сообщения: 207
Зарегистрирован: 23 окт 2008, 17:54
Версия LabVIEW: 8.5
Контактная информация:

Re: Binäre Kommunikation

Сообщение learny »

02 b6= 694
die 00 ist *10^00

=> falls das letzte Byte 03 wäre, hätte ich dann einen dez. Wert von 694.0000,00 stimmt`s?

Mein "Roadmap" wäre also:

die ersten 2 Bytes in Dezimal konvertieren, und mit dem letzten multiplizieren, danach das ganze ausgeben. Bin ich auf dem richtigen Weg?
أهلا و سهلا بالمستخدمين العرب
Ответить

Вернуться в «Kommunikation mit Geräten»