
Zitat von
Foooob
Sobald das erste Zeichen reinflattert soll der
AVR dieses entgegennehmen
und so lange warten bis die übrigen 5 Zeichen ebenfalls gespeichert sind.
Erst dann soll er den String auswerten. Und erst wenn dieser String ausgewertet ist soll der nächste entgegengenommen werden.
Ich scheitere momentan vor allem daran, dass der
AVR wirklich so lange wartet, bis er einen 6-stelligen String hat.
.
.
.
Hallo,
mit nachfolgendem Code wartet der AVR zunaechst auf ein bestimmtes Zeichen oder eine Zeichenfolge. In meinem Beispiel horcht der AVR auf ein "a".
Anschliessend liest der AVR die naechsten anstehenden Zeichen ein und speichert diese in die Stringvariable "zeichen".
Das ganze ist eine Endlosschleife. Mit diesem Programmschnipsel habe ich erfolgreich in einem anderen Projekt die Daten einer GPS-Mouse (Koordinaten, Geschwindigkeit usw. ) eingelesen.
Der Code basiert auf einem Beispiel aus dem Buch von Claus Kuehnel "Programmieren der AVR-Risc...") - na, kennt hier ja jeder...
Code:
$lib "glcdKS108.lib"
$regfile = "m32def.dat"
$crystal = 16000000
$hwstack = 32
$swstack = 20
$framesize = 40
$baud = 4800
Config Graphlcd = 128 * 64sed , Dataport = Portc , Controlport = Portb , Ce = 1 , Ce2 = 0 , Cd = 4 , Rd = 3 , Reset = 2 , Enable = 5
Config Serialin = Buffered , Size = 10
Declare Function Read_string(byval T As Byte) As String
Declare Sub Wait_for_string(byval S As String)
Enable Interrupts
Dim Zeichen As String * 6
Setfont 6x8font
Cls
Lcdat 1 , 1 , "wait_for_string"
Do
Print "test"
Call Wait_for_string( "a")
'Zeichen = Read_string(8)
Print "Alles wird gut"
Lcdat 3 , 1 , "Zeichen a empfangen"
waitms 500
Loop
End
Sub Wait_for_string(byval S As String) As String
Local Ii As Byte
Local Cc As Byte
Ii = 1
M1:
Cc = Waitkey()
If Cc <> Mid(s , Ii , 1) Then
Goto M1
Else
Incr Ii
If Ii > Len(s) Then Goto M2
Goto M1
End If
M2:
End Sub
Function Read_string(byval T As Byte) As String
Local Cc As Byte
Local Ss As String * 10
Ss = ""
Do
Cc = Waitkey()
Ss = Ss + Chr(cc)
Loop Until Cc = ","
Read_string = Left(ss , T)
End Function
$include "6x8font.font"
Screenshot: http://www.elektronik-web.de/atmel/r...tforstring.gif
Drahtigel: http://www.elektronik-web.de/atmel/roboternetz/wfs.jpg
Vielleicht hilft es ja etwas weiter...
Mit freundlichen Gruessen
Digitali
Lesezeichen