Forum: Mikrocontroller und Digitale Elektronik Bascom Problem mit HEXVAL


von micha b (Gast)


Lesenswert?

Ich hab da ein großes Problem mit HEXVAL und komme nicht weiter, 
vielleicht könnt ihr mir helfen.

Unten ist ein kleiner Teil aus einem Programm das die Kommunikation mit 
einem DXM1 Modul regelt (OBD2 Schnittstelle).
Ich bekomme vom Modul z.B. folgende Antwort "41 01 B5"
Wobei die "41" als Header und "01" als Datentyp zu sehen sind, in der 
"B5" steckt der eigentliche für mich interessante Messwert. 
Kommunikation via UART funktioniert problemlos, Einlesen und Anzeigen 
des empfangenen Strings ebenfalls.

Mit MID bekomme ich den Messwert "B5" als Teilstring herausgefiltert, 
funktioniert.

Jetzt muß ich nur noch den Teilstring zum Single wandeln um mit diesem 
dann die grafische Anzeige zu befüttern, und genau da liegt jetzt mein 
Problem, ich bekomms nicht zum Laufen.


Beispielcode:
Dim Temp_long as long , temp_string as string * 4
Dim calc_wert as single, calc_string as string * 4

temp_string = "B5"                        'Teilstring von der UART

   Temp_long = Hexval(temp_string)        'Umwandlung von String auf 
long
   Calc_wert = Temp_long                  'Umwandlung von long auf 
single
   Calc_wert = Calc_wert - 40             'noch ne kleine Berechnung um 
auf den tatsächlichen Messwert zu kommen
   Calc_string = Format(calc_wert , "   ")


Wenn ich jetzt calc_string anzeigen lasse habe ich noch immer "B5" 
anstatt 181 dastehen.
Kann mir bitte jemand sagen was ich falsch mache? Und warum kann 
überhaupt ein "B5" in einem Single stehen?

Bin für jede Hilfe dankbar.

von Karl H. (kbuchegg)


Lesenswert?

micha b schrieb:

> Kann mir bitte jemand sagen was ich falsch mache? Und warum kann
> überhaupt ein "B5" in einem Single stehen?

Das sollte dich stutzig machen. Bist du sicher, dass du dir auch die 
richtige Variable ausgeben lässt?

Ansonsten: Du kannst dir ja auch mal die ganzen Zwischenvariablen 
anzeigen lassen und so nachvollziehen, in welchem Schritt genau was 
passiert.

von str (Gast)


Lesenswert?

micha b schrieb:
> Calc_string = Format(calc_wert , "   ")

Compiliert nicht.


Vielleicht?:

Calc_string = str(calc_wert)
Calc_string = Format(calc_string , "   ")

von micha b (Gast)


Lesenswert?

@str: (bei DEM Namen musstest du ja die Lösung wissen! :-) )
Das wird's wohl gewesen sein, wie blind war ich nur mal wieder????
Sorry, aber manchmal sieht man eben die bits vor lauter bytes nicht.

Schon komisch dass der Compiler da nicht mosert.

Danke!

von str (Gast)


Lesenswert?

micha b schrieb:
> Schon komisch dass der Compiler da nicht mosert.

@micha b: da würd ich genauer nachschauen. Vielleicht alte BASCOM 
Version? Hab deinen Beispielcode bei mir versucht kompilieren zu lasssen 
und aufgrund des Compiler Meckers (BASCOM Version 2.0.5.0) den Fehler 
entdeckt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.