PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : seriell daten am atmega128 empfangen



sato
10.07.2007, 22:48
Hallo Allerseits

Von PC sende ich seriell z.b folgendes C05F3123 es wird alles als text gesendet

Bei den Atmega128 möchte es empfangen als C = string
05 = als decimal wert
F3 = als hex wert
123 = als decimal wert
E = string

Die Frage ist, wie muss der code lauten um diese Daten am atmega128 zu empfangen und so auszuwerten?

Muss ich die daten in eine stringvariavel empfangen und dann die einzelnen werten von den stringvariavel trennen und benutzen?

z.b so?
Dim Serial_char As String * 1
Dim Serial_string As String * 9

$timeout = 10000
do
If Ischarwaiting() = 1 Then
Serial_char = waitkey()
Serial_string = Serial_string + Serial_char
end if
Loop Until Serial_char = "E"

If Len(Serial_string) = 9 Then
hier die einzelnen chars trennen und in verschiedene variaveln speichern?
end if

Bin für Eure Hilfe sehr dankbar

Gruss
Sato

dabuze
11.07.2007, 14:07
hallo kollege,

damit klappts bei mir prima!

hatte gestern fast das selbe problem



'config UART Interrupt
On Urxc Onrxd 'Interrupt-Routine setzen
Enable URXC 'Interrupt URXC einschalten
Enable Interrupts 'Interrupts global zulassen

'config VARIABLES
Dim Astring As String * 1 , Bstring As String * 2 , Cstring As String * 2 , Dstring As String * 3
Dim Estring As String * 1 , Bdec As Integer , Chex As Integer , Ddec As Integer


'main program
Do


Loop


'UART interrupt routine
Onrxd:
Inputbin Astring , Bstring , Cstring , Dstring , Estring 'lese werte als strings

Print Astring

Bdec = Val(bstring) 'Val Convert a string to a number
Print Bdec

Chex = Hexval(cstring) 'Hexval Convert a hex string to a number
Print Chex

Ddec = Val(dstring) 'Val Convert a string to a number
Print Ddec

Print Estring

Return
End


ich würde alles als strings auslesen, ich gehe mal davon aus das die länge des strings konstant bleibt

dabuze
11.07.2007, 14:20
zur erklärung empfehle ich dir

http://www.rowalt.de/mc/avr/avrboard/06/avrb06.htm

viele grüsse