Hallo
hier die Berechnung laut Axi in eine Funktion verpackt. Die Faktoren sind so gewählt, dass die gesamte Berechnung im Integer-Typ abgewickelt werden kann.
Code:Declare Function Skalierung (pInput as Word) as Integer Dim wInput as Word Dim iSkala as Integer for wInput = 0 to 1023 iSkala = Skalierung (wInput) Print wInput; " " ; iSkala next end Function Skalierung (pInput as Word) as Integer ' Nullpunkt herstellen Skalierung = pInput - 516 ' Wertebereich hat unter 0 einen Faktor von 5,12 (512/100) ' über 0 einen Faktor von 5,07 (507/100) ' daher werden diese in zwei verschiedenen Wegen berechnet ' Um eine aufwändige Berechnung mit Fließkommazahlen zu vermeiden ' werden diese Faktoren mit 32/163 (=1/5,09375) ' und 32/162 (=1/5,0625) ' Genauer wäre für den Bereich unter 0 die Faktoren 32/164 (=1/5,125) ' Hier wird aber 4 (sollte -100) in der Ganzzahlenarithmetik auf -99 abgeschnitten ' * 32 ist beiden Bereichen gemeinsam Skalierung = Skalierung * 32 select case Skalierung case is < 0 Skalierung = Skalierung / 163 case is > 0 Skalierung = Skalierung / 162 end SELECT End Function







Zitieren

Lesezeichen