Hallo zusammen,
spiele seit ein paar Tagen daran rum mein altes ME45 mit einem Atmega16 Testboard (KreativesChaosBoard) zur Kommunikation zu bewegen und habs jetzt endlich hinbekommen. Ziel war es bei einer bestimmten SMS am Controller was auszulösen (hier: LED blinken).
Da ich nix fertiges zu diesem Thema gefunden habe will ich es meinen Nachfolgern etwas leichter machen. Deshalb gibts hier den Code zum nachlesen. Ich hoffe irgendwer kann damit was anfangen und es ist einigermaßen verständlich. Verbesserungsvorschläge nehme ich natürlich gerne an.
Grüße
Gesamtplan
Code:'SMSUNREAD6.BAS: PDU SMS auslesen 'Empfang von Siemens ME45 $regfile = "m16def.dat" $crystal = 8000000 $baud = 38400 'LCD Config Config Lcd = 40 * 2 Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.0 , Rs = Portc.1 Config Lcdbus = 4 Config Lcdmode = Port Initlcd Cls Cursor Off Dim Cmgl As String * 106 'cmgl String Dim Sms As String * 58 'reiner SMS String Dim Led As Bit On Urxc Onrxd Enable Urxc Enable Interrupts Config Pinb.3 = Output Led Alias Portb.3 Smsreadroutine: 'Routine zum Einlesen des SMS strings Print "at+cmgl=0" ; Chr(13) 'Neue SMS da? Waitms 100 If Len(cmgl) > 105 Then 'Stringpolling Sms = Mid(cmgl , 12 , 70) 'SMS auslesen Cmgl = "" 'String cmgl leeren End If Locate 1 , 1 Lcd Sms 'Ausgabe String auf Display If Sms = "Hier SMS Empfangsstring eintragen (PDU-Mode)"then Led = 0 Else Led = 1 End If Locate 2 , 1 'Anzeige zum debuggen Lcd "Laenge von Cmgl = " ; Len(cmgl) ; " Zeichen " ; Len(sms) Goto Smsreadroutine 'UART Interrupt Onrxd: If Asc(udr) = 58 Then 'Doppelpunkt(58) abrufen wenn at+cmgl=0 neue Nachricht Cmgl = "" 'Cmgl wieder leeren Else Cmgl = Cmgl + Chr(udr) End If Return 'Sms Aktion: 'Sms Loeschen:







Zitieren

Lesezeichen