PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : UART + HEX zerlegen



BlaueLed
03.01.2010, 21:31
Hallo zusammen,

ich bekomme über die serielle Schnittstelle folgende Daten ( in HEX ):

BE 00 00 03 FF FF FF BE 00 00 03 FF FF FF BE 00 00 03 FF FF FF BE 00 00 03 FF FF FF BE 00 00 03 FF FF FF BE 00 00 03 FF FF FF BE 00 00 03 FF FF FF BE 00 00 03 FF FF FF BE 00 00 03 FF FF FF BE 00 00 03 FF FF FF BE 00 00 03 FF FF FF BE 00 00 03 FF FF FF BE 00 00 03 FF FF FF BE 00 00 03 FF FF FF

Mittels inputbin kann ich diese Daten auch einlesen. Ich muss diese Daten aber jetzt in ein Array bringen. Also Array(1) muss BE sein. Array(2) 00 usw. Ich kann zwar herausfinden, wann BE gesendet wird, weiß aber nicht wie ich das synchronisieren soll.

Folgenden Code benutze ich:



$regfile = "m168def.dat"
$crystal = 8000000
$baud = 300


On Urxc Onrxd
Enable Urxc
Enable Interrupts


Dim Inputstring As Byte
Dim Startbyte As Byte



Main:
nop
Goto Main



Onrxd:

Inputbin Inputstring

If Inputstring = &HBE Then
Startbyte = 1
End If

Return


Das Startbyte wird auch korrekt gesetzt. Nur wie bekomme ich jetzt die restlichen Hex werte in ein Array ?

Gruß BlaueLed

PicNick
04.01.2010, 09:56
Nun, das Array muss es erstmal geben (+index), z.B
DIM MyArr(16) as byte
DIM ArrIdx as byte


Onrxd:
Inputbin Inputstring
If Inputstring = &HBE Then
Startbyte = 1
ArrIdx = 0
End If
incr ArrIdx
MyArr(ArrIdx) = Inputstring
Return

Nur ein Muster, denn im Detail kommt's jetzt drauf an, was denn so insgesamt geschehen soll.

MagicWSmoke
04.01.2010, 10:06
Der Hexstring wird wahrscheinlich mit einem CR enden, dann könntest Du diese Lösung verwenden:

http://www.mcselec.com/index2.php?option=com_forum&Itemid=59&page=viewtopic&t=8191

BlaueLed
04.01.2010, 13:04
Hi,

danke PicNick. Dein Code funktioniert einwandfrei.

Gruß BlaueLed