PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Datenformat bei der Übertragung über CAN



elkokiller
02.08.2008, 22:59
Hallo,

die Speicherstellen des CAN, in diesem Fall des MCP2515, werden als Byte deklariert


Const Txb0ctrl = &H30 ' Transmit Buffer 0 Control Register
Const Txb0sidh = &H31 ' Transmit Buffer 0 Std Identifier High
Const Txb0sidl = &H32 ' Transmit Buffer 0 Std Identifier Low
Const Txb0dlc = &H35 ' Transmit Buffer 0 Data Length Code
Const Txb0d0 = &H36 ' Transmit Buffer 0 Data Byte 0
Const Txb0d1 = &H37 ' Transmit Buffer 0 Data Byte 1
Const Txb0d2 = &H38 ' Transmit Buffer 0 Data Byte 2
Const Txb0d3 = &H39 ' Transmit Buffer 0 Data Byte 3
Const Txb0d4 = &H3A ' Transmit Buffer 0 Data Byte 4
Const Txb0d5 = &H3B ' Transmit Buffer 0 Data Byte 5
Const Txb0d6 = &H3C ' Transmit Buffer 0 Data Byte 6
Const Txb0d7 = &H3D ' Transmit Buffer 0 Data Byte 7

Ich kann damit jeden Wert zwischen 0 und 256 übertragen.

Wenn ich nun aber den Wert 25,6 oder -18,4 übertragen möchte bekomme ich ein Problem.

Kann mir jemand sagen wie ich damit umgehen kann?

Tobias

PicNick
03.08.2008, 10:59
Lies mal da, vielleicht hilft das:
https://www.roboternetz.de/wissen/index.php/Bascom_Speicherstrukturen

elkokiller
08.08.2008, 21:17
Hallo,

ich denke dass es leider nicht die Antwort auf meine Frage war. Trotzdem Danke!

Ich habe, wenn ich es richtig verstanden habe, beim CAN Bus nur die Möglichkeit Bytes zu übertragen. D.h. die WErte dürfen nur zwischen 0 und 255 sein.

Ich möchte aber gerne eine Temperatur mit dem Wert von z.B. -15,3 übertragen.

Hat da noch jemand eine Idee?

uwegw
08.08.2008, 22:15
Dann musst du die Daten wohl auf mehrere Bytes verteilen...

elkokiller
08.08.2008, 22:23
offenbar komme ich da nicht herum :cry:

Vitis
09.08.2008, 12:36
entweder deine single-variable in ähhmmm ... waren es 4 byte?
glaub schon , also 4 byte zerlegen und wieder zusammensetzen
oder halt als stringwerte übertragen ... -15,3 währen dann
auch 5 byte ;)

elkokiller
09.08.2008, 22:59
dein oder verstehe ich nicht.
Ich kann doch keinen Stringwert übertragen, oder?

wie kann ich den Wert -15,3 zerlegen?

Vitis
10.08.2008, 09:28
wieso nicht? jedes Zeichen ist ein Byte Stichwort ASCII ;)

elkokiller
10.08.2008, 09:30
ja schon, aber wie trenne ich die einzelenen Bytes voneinander?

Vitis
11.08.2008, 11:17
am Einfachsten gehts mit overlayvariablen

dim temperaturwert as string * 5
dim bytearray (5) as byte at temperaturwert overlay

dann schreibste einfach den temperaturwert als string
und kannst aus dem array die einzelnen bytes auslesen :-b

elkokiller
11.08.2008, 12:56
super, danke. O:)