PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Umwandlung zur seriellen Übertragung



elkokiller
21.07.2010, 14:55
Hallo,

ich habe einen Wert z.B. 40,37.
Um den Wert seriell übertragen zu können muss ich ihn in das Format Byte bringen.
Da der Zehnerwert immer <100 ist, ist das kein Problem:

dim wert as integer
wert = "40,37"

dim zehner as byte
zehner = wert

Übertragen wird jetzt die 40.

Für die Nachkommastelle hatte ich vorgeshen:

dim nachkomma_temp as integer
dim nachkomma as byte

nachkomma_temp = wert - zehner ' macht 0,37
nachkomma_temp = nachkomma_temp * 100 'macht 37,0

nachkomma = nachkomma_temp

Merkwürdigerweise kommt nun aber bei allen Werten > 26 kein richtiger Wert mehr an.
Offensichtlich hängt das Programm beim Umwandeln eine 0 an wodurch ich den Wert 260 bekomme was bei Byte natürlcih nicht geht.

Hat jemand eine andere Lösung?

peterfido
21.07.2010, 16:25
[quote="elkokiller"

dim wert as integer
wert = "40,37"

[/quote]

40.37 klingt für mich nicht nach integer.

Die serielle Übertragung sieht Werte als Text vor, da z.B. ein Wert 13 als CR erkannt wird.

Ich behelfe mir immer so, wenn die Werte immer unter 127 sind, einfach das Bit 7 zu setzen und am PC wieder zu entfernen. Oder halt gleich "Klartext" senden und den PC die Arbeit machen lassen.

Richard
21.07.2010, 17:23
Die zahl einfach in einen String wandeln, übertragen und im Empfänger
wenn nötig zurück wandeln.



A = 12.123 'add 1 to it
S = Str(a) 'convert integer to strtring
Print S

A = Val(s) 'convert strtring to integer
Print A


Gruß Richard[/code]

peterfido
21.07.2010, 18:54
Bascom wandelt beim Senden automatisch um.

dim wert as single
wert=12.34
print wert