BlaueLed
23.09.2008, 23:21
Hallo,
ich habe folgende Routine zum einlesen des UART. Ausgelöst wird das ganze durch "On URXC Empfangesms".
'--------
'--- Modemabfrage ---
Empfangesms:
Getline Header ' wait for a modem response
I = Instr(header , ":") ' look for :
If I > 0 Then 'found it
Stemp = Left(header , I)
Select Case Stemp
Case "+CMTI:" : Showsms Header ' we received an SMS
' hanle other cases here
End Select
End If
Return
'--- daten einlesen ---
Sub Getline(s As String)
S = ""
Do
B = Inkey()
Select Case B
Case 0
Case 13
Case 10 : If S <> "" Then Exit Do
Case Else
S = S + Chr(b)
End Select
Loop
End Sub
'--- puffer füllen ---
Sub Flushbuf()
Waitms 100
Do
B = Inkey()
Loop Until B = 0
End Sub
'--- SMS einlesen ---
Sub Showsms(s As String )
Wait 1
Print "AT+CMGR=1"
Getline Header
Getline Sms
Smscount = Split(header , Ar(1) , ",")
Handynummer = Mid(ar(2) , 2 , 14)
Datumsms = Mid(ar(4) , 2 , 9)
Zeitsms = Mid(ar(5) , 1 , 8)
Lastnummer = Handynummer
Lastdatum = Datumsms
Lastzeit = Zeitsms
Lastfunktion = Sms
Bcount = Split(sms , Smsa(1) , ",")
Smskunde = Smsa(1)
Smsfunktion = Smsa(2)
Smskontrolle = Smsa(3)
Locate 12 , 2
Lcd "SMS empfangen"
'Open "sms.txt" For Append As #3
'Write #3 , Header , Sms
'Close #3
End Sub
So funktioniert auch alles wie es soll. Sobald ich aber die werte in der datei sms.txt speichern will, dann hängt sich der AVR auf und ich kann nichts mehr machen. Zum speichern benutze ich AVR-DOS. Sobald ich hinter lcd "SMS empfangen" diesen code einfüge, dann hängt sich der AVR auf.
Open "sms.txt" For Append As #3
Write #3 , Header , Sms
Close #3
Im Hintergrund läuft Timer1 im Sekundentakt. Als Controller benutze ich den Mega644P. Das ändern des HWstack oder Swstack oder framesize hat nichts gebracht.
Ich komme einfach nicht weiter und vielleicht kann mir ja jemand von Euch helfen, mein problem zu lösen.
danke
Kay
ich habe folgende Routine zum einlesen des UART. Ausgelöst wird das ganze durch "On URXC Empfangesms".
'--------
'--- Modemabfrage ---
Empfangesms:
Getline Header ' wait for a modem response
I = Instr(header , ":") ' look for :
If I > 0 Then 'found it
Stemp = Left(header , I)
Select Case Stemp
Case "+CMTI:" : Showsms Header ' we received an SMS
' hanle other cases here
End Select
End If
Return
'--- daten einlesen ---
Sub Getline(s As String)
S = ""
Do
B = Inkey()
Select Case B
Case 0
Case 13
Case 10 : If S <> "" Then Exit Do
Case Else
S = S + Chr(b)
End Select
Loop
End Sub
'--- puffer füllen ---
Sub Flushbuf()
Waitms 100
Do
B = Inkey()
Loop Until B = 0
End Sub
'--- SMS einlesen ---
Sub Showsms(s As String )
Wait 1
Print "AT+CMGR=1"
Getline Header
Getline Sms
Smscount = Split(header , Ar(1) , ",")
Handynummer = Mid(ar(2) , 2 , 14)
Datumsms = Mid(ar(4) , 2 , 9)
Zeitsms = Mid(ar(5) , 1 , 8)
Lastnummer = Handynummer
Lastdatum = Datumsms
Lastzeit = Zeitsms
Lastfunktion = Sms
Bcount = Split(sms , Smsa(1) , ",")
Smskunde = Smsa(1)
Smsfunktion = Smsa(2)
Smskontrolle = Smsa(3)
Locate 12 , 2
Lcd "SMS empfangen"
'Open "sms.txt" For Append As #3
'Write #3 , Header , Sms
'Close #3
End Sub
So funktioniert auch alles wie es soll. Sobald ich aber die werte in der datei sms.txt speichern will, dann hängt sich der AVR auf und ich kann nichts mehr machen. Zum speichern benutze ich AVR-DOS. Sobald ich hinter lcd "SMS empfangen" diesen code einfüge, dann hängt sich der AVR auf.
Open "sms.txt" For Append As #3
Write #3 , Header , Sms
Close #3
Im Hintergrund läuft Timer1 im Sekundentakt. Als Controller benutze ich den Mega644P. Das ändern des HWstack oder Swstack oder framesize hat nichts gebracht.
Ich komme einfach nicht weiter und vielleicht kann mir ja jemand von Euch helfen, mein problem zu lösen.
danke
Kay