LabVIEWForum.de
TMCM-110 String reply to Hex - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: TMCM-110 String reply to Hex (/Thread-TMCM-110-String-reply-to-Hex)

Seiten: 1 2


TMCM-110 String reply to Hex - Troy - 30.04.2009 11:08

Hallo,
ich habe einen TMCM-110 Motor der mir als reply einen 8-Byte-String liefert.
Aus diesem String möchte ich die letzten 4 Bytes nehmen, die Zahlen darin aneinanderketten und damit eine Hexzahl erhalten. Diese wird dann am ende in eine Integerzahl umgewandelt die die Position des Motors darstellt.

Nun ergibt sich folgendes Problem:
Der Motor steht an Position 32000. Wenn ich ihn aber frage wo er steht sagt er mir 2000. Wenn ich mir nun die Hexzahlen angucke sehe ich das Problem. Der Rückgabewert damit 32000 rauskommt, müsste 7D00 sein, ist jedoch 7D0 und somit 2000.
Das gleiche passiert wenn der Motor bei 257 steht. Die Rückgabe ist 17. 257 = 101 und 17 = 11 in Hex.

Es scheint also so dass mein Problem führende Nullen sind, die einfach weggelassen werden!

Die umwandlung vom String in Zahlen erfolgt über den Befehl "String to Byte Array". Und dabei werden meiner Meinung nach diese Nullen verschlampt, da dann ein Byte Array herauskommt in dem Integerzahlen stehen.

So die Frage ist nun wie kann ich es schaffen, dass die Zahlen die in jedem Byte im String stehen so übermittelt werden wie sie sind also mit allen führenden Nullen? Ich finde einfach keine Möglichkeit den ankommenden String in z.B. ein Byte-String-Array zu zerlegen (also jedes Byte in einen String in einem Array).

Ich hoffe jemand hat eine Idee.


TMCM-110 String reply to Hex - schrotti - 30.04.2009 11:51

Lade bitte das VI hoch, das die Umwandlung des Strings in einen Zahl durchführt oder poste wenigstens den String, den du von deinem Gerät bekommst.


TMCM-110 String reply to Hex - ImExPorty - 30.04.2009 15:12

Hallo Troy,
ich glaube nicht das LV etwas verschlappt....Tongue
Wenn man die richtige Funktion (Du hast Dich durch die Info 8-Byte-String wohl verleiten lassen) verwendet, kommt auch etwas sinnvolles raus... aber diese Arbeit ist Dir hier schon komplett abgenommen worden.
Viel Erfolg.


TMCM-110 String reply to Hex - Troy - 04.05.2009 08:54

Danke schonmal aber mein Problem löst sich dadurch leider noch nicht ganz, da in dem VI dass du mir gegeben hast nicht Get Axis Parameter implementiert wurde wo die Rückgabe zu meinem Problem führt...
Hab jetzt mal die beiden vis hochgeladen wo meiner Meinung nach der Wurm drin ist.

Lv85_img


TMCM-110 String reply to Hex - RoLe - 04.05.2009 10:23

meinst du sowas ...


TMCM-110 String reply to Hex - schrotti - 04.05.2009 12:57

Irgendwie blicke ich nicht durch. Warum wandelst ihr das in ein Bytearray um und warum verbindust du dann die beiden Byte des Asciicodes? Ich hätte jetzt, naiv wie ich bin, gedacht, ein Byte in hexadezimaler Represantation wird durch zwei Char, also zwei Byte dargestellt. Ich kann mir allerdings nicht vorstellen, dass du String wie FFF erhälst. Woher soll ich denn wissen obs 0F FF oder FF 0F ist.


TMCM-110 String reply to Hex - Troy - 04.05.2009 13:14

Jo RoLe danke schon mal das hat schon mal was gebracht. Es werden jetzt alle positiven Zahlen richtig zurückgegeben.
Problem sind nun die negativen Hex Zahlen. Hab jetzt gelesen dass man die zahl erst in Binärsystem umrechnen muss um dann wieder ins Hexsystem zu gehen... Gibts da ne bessere Alternative? Oder wenn nicht, wie genau muss man das denn machen mit dem umrechnen?
Habe mal die neue Version angehängt...
(als Beispie für die Ausgabe am Endel:
2000: [0]: 0; [1]: 7; [2]: 208
-2000: [0]: 255; [1]: 248; [2]: 48)


Lv85_img

(schrotti was du gerade meinst weiß ich leider nicht genau)


TMCM-110 String reply to Hex - ImExPorty - 04.05.2009 14:04

Hallo Troy,
mit meinem Hinweis
Zitat:diese Arbeit ist Dir hier schon komplett abgenommen worden.
meinte ich das die Aufschlüsselung des Strings hier zu 100% offengelegt ist (wenn Du also die gleiche Struktur beim Abfragen zurückbekommst):
[attachment=18207]
[attachment=18206]

Lv85_img[attachment=18205]
viel Erfolg


TMCM-110 String reply to Hex - Troy - 04.05.2009 15:09

Ja soweit ich das erkenne bekomme ich nicht die gleiche Antwort beim abfragen.
Ich bekomme mehrere (dezimal-)Zahlen in einem Array, die dann einzeln in Hexzahlen umgewandelt werden, die dann aneinander gehängt werden und eine große Hexzahl ergeben, die dann wiederrum in eine Dezimalzahl umgerechnet werden muss.

Die Frage jetzt gerade ist aber eher wie man eine Hexzahl (von der ich weiß dass sie eine negative Dezimalzahl darstellt) in eine Dezimalzahl umwandle. An dem Beispiel vorhin denke ich zu sehen, dass die 255 mir sagt dass eine negative zahl vorliegt, und ich dann die andern beiden Zahlen nur einzeln von 255 abziehen muss - das passt ja auch FAST^^.
Wahrscheinlich liegt dieses 'fast' daran, dass man normalerweise die Hexzahl erst in eine Binärzahl umwandelt, invertiert und dann noch +1 macht (so wie ich das aus anderen Forenbeiträgen verstanden habe) und dann wieder in Hex umwandelt.
Wäre cool wenn mir jemand da bei meinem Programm n Tipp geben könnte wie man das bewerkstelligt...


TMCM-110 String reply to Hex - ImExPorty - 04.05.2009 15:14

Hallo Troy,
damit dieser Thread auch anderen in Zukunft helfen kann, wäre es schön die Originaldaten mit mehren Beispielen und tatsächlichen Werten bereitgestellt zu bekommen.