PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : (Rs 232) Empfangene Daten auswerten ?



Blamaster
08.05.2009, 17:45
Hi,

ich möchte mir aktuell ein Atmolight aufbauen.

Die Platine dazu steht auch bereits und funktioniert soweit.

Jeder Led (R,G und B) kann ich einen Helligkeitswert zwischen 0 und 255 zuweisen.

Nun habe ich ein Programm gefunden, welches mir die passende Farbdaten ausgeben soll. (AtmoWin)

Auf deren Wikiseite habe ich folgendes Protokoll gefunden.



Serielles Protokoll

Baudrate: 38400 bps Parity: None Datenbits: 8 Stopbits: 1

Nachrichtenformat:
Byte Beschreibung
0 0xFF: Startbyte
1 0x00: Startkanal (low byte)
2 0x00: Startkanal (high byte)
3 0x0F: Anzahl Kanäle (15 = 5 * 3 (R, G, B))
4-6 Summenkanal R, G, B (Center)
7-9 linker Kanal R, G, B (Left)
10-12 rechter Kanal R, G, B (Right)
13-15 oberer Kanal R, G, B (Top)
16-18 unterer Kanal R, G, B (Bottom)

Beispiel:

Folgende Nachricht (in hexadezimaler Darstellung) gibt auf allen Kanälen hellstes Rot aus:

0xFF 0x00 0x00 0x0F 0xFF 0x00 0x00 0xFF 0x00 0x00 0xFF 0x00 0x00 0xFF 0x00 0x00 0xFF 0x00 0x00


Interesse habe ich nur an dem Summenkanal (Center) der Bytes 4-6.

Wie könnte ich das Codetechnisch umsetzen ? (Habe noch nicht so oft mit der Rs232 Schnittstelle gearbeitet)

Ich stelle mir das gerade so vor:



Isrlable:

Incr E_id

If E_id = 5 Then Led_r = Udr
If E_id = 6 Then Led_g = Udr
If E_id = 7 Then Led_b = Udr

If E_id = 19 Then E_id = 0

Return


Würde das so gehen, oder habe ich da einen Denkfehler drin ?

Was mich dann noch werwirrt ist das Beispiel:

0xFF 0x00 0x00 0x0F 0xFF 0x00 0x00 0xFF 0x00 0x00 0xFF 0x00 0x00 0xFF 0x00 0x00 0xFF 0x00 0x00

Ich brauche ja einen Zahlenwert zwischen 0 und 255 kann ich die Hexdezimal irgendwie ich einen solchen Zahlenwert umwandeln ?

Ich hoffe schonmal auf Hilfe :)

mfg Yannic