Forum: Mikrocontroller und Digitale Elektronik TC35 Telefonbuch


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Uwe N. (Firma: Privat) (djuwert)


Bewertung
0 lesenswert
nicht lesenswert
Moin!  Ich versuche derzeit einem Tc35 Handymodul mittels AT Befehlen 
die Telefonbucheinträge zu entlocken. Mit AT+CPBR=1 geht garnix, da 
kommt immer Error zurück. Bei At+Cpbr=2 kommt manchmal die Nummer, aber 
was ja garnicht geht, oft auch nur ein "Ok" zurück! Ich habe testweise 
10 Nummern auf der Sim gespeichert. Kennt jemand dieses Verhalten? PS: 
Sms Versand im Textmodus geht super!

von Uwe N. (Firma: Privat) (djuwert)


Bewertung
0 lesenswert
nicht lesenswert
Ich habe nunmal weiter geforscht warum es zu diesem Verhalten kommt. 
Mein bascom Programm kommt offenbar mit den gesendeten Zeichen nicht 
klar. Es kommt immer zum Ende der ausgegebenen Einträge die Bin-Zeichen 
"10" , gefolgt von der "13". Also steht immer ein LF und ein CR 
hintereinander.

Kann man dem Modem in seinen Einstellungen irgendwie beibringen, dass 
nur das CR am Ende des Strings ausgegeben wird?

Bzw., ist jemand bekannt wie ich "Case" dazu nutzen kann das LF 
auszufiltern? Case ist doch eine "Fall"-Verzweigung, welche mir a.G. 
eines angegebenen Zeichen eine Verzweigung ausführt?

Danke für eure Hilfe, vielleicht hat ja einer nen Beispielcode für das 
Lesen des Telefonbucheintrags mittels AT+CPBR=... parat :-)

Danke!

von Tilt (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Uwe Neubert schrieb:
> Bzw., ist jemand bekannt wie ich "Case" dazu nutzen kann das LF
> auszufiltern? Case ist doch eine "Fall"-Verzweigung, welche mir a.G.
> eines angegebenen Zeichen eine Verzweigung ausführt?

Vielleicht geht was mit CONFIG INPUT ???
http://avrhelp.mcselec.com/configinput.htm

Ist aber Raterei ohne Code.

von Uwe N. (Firma: Privat) (djuwert)


Bewertung
0 lesenswert
nicht lesenswert
Hier ist der Code. Er soll im Terminalprogramm lediglich anzeigen was 
der Controller empfangen hat:

Dim I As Byte , B As Byte
Dim Sret As String * 66 , Stemp As String * 20
Dim Status As Byte

Config Serialin = Buffered , Size = 17
Enable Interrupts

Print "ATE0"

Waitms 2000
Waitms 2000
Print "AT+CMGF=1"
Sret = ""

Print "at+cpbr=1"
Getline Sret

Print "Inhalt nach SPbr1 ist:"
Waitms 100
Print Sret
Waitms 500

'get line of data from buffer
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
Waitms 500
'flush input buffer
Sub Flushbuf()
 Waitms 100
 Do
 B = Inkey()                                                ' flush 
buffer
 Loop Until B = 0
End Sub

Return

von Tilt (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Vielleicht so? (nicht syntax gecheckt)
1
Sub Getline(s As String)
2
 S = ""
3
 Do
4
  B = Inkey()
5
  Select Case B
6
   Case 0                      'mach nichts wenn inkey eine 0 zurückliefert
7
   Case 13 : S = S + Chr(b)    'CR wird noch an S angehangen
8
             Exit Do           'dann Schleife/Sub verlassen
9
   Case 10                     'mach nichts bei LF
10
   Case Else : S = S + Chr(b)  'alle anderen Zeichen an S anhängen
11
  End Select
12
 Loop
13
End Sub

Kenne das Modem nicht:
Wird am Ende jeden der 10 Telefonbucheinträge ein LF CR ausgegeben?
Oder erst ein LF CR am Ende der kompletten Ausgabe?
Wenn es nicht klappt müßtest du mal genau beschreiben, wie Getline 
arbeiten soll.
Getline läuft bei dir solange in der Schleife, bis die Abbruchbedingung 
kommt (LF). Dafür kannst du auch INPUT nehmen und mit CONFIG INPUT auf 
LF CR als Input komplett konfigurieren.

von Uwe N. (Firma: Privat) (djuwert)


Bewertung
0 lesenswert
nicht lesenswert
Dieses doofe Modem spuckt das so aus:
Cpbr1:LF CR, Nummerneintrag, LF CR

Das ist halt doof beim Einlesen da man im Text immer die 
Abbruchbedingungen hat. Das Siemens machts halt so. Ich hab auch Wavecom 
Modems, die spucken nur ein CR am Schluss und fertig. Für das Projekt 
ist aber das Siemens vorgesehen :-(

von Tilt (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Uwe Neubert schrieb:
> Dieses doofe Modem spuckt das so aus:
> Cpbr1:LF CR, Nummerneintrag, LF CR

Was soll Getline mit   LF CR, Nummerneintrag, LF CR   genau machen?

Erstes LF verwerfen
Erstes CR verwerfen
Erstes Komma verwerfen
Nummerneintrag in S schreiben
Zweites Komma verwerfen
.
.

Beschreib genau, was Getline machen soll!!!

von Tilt (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Tilt schrieb:
> Erstes LF verwerfen
> Erstes CR verwerfen
> Erstes Komma verwerfen
> Nummerneintrag in S schreiben
> Zweites Komma verwerfen
> .
> .
>
> Beschreib genau, was Getline machen soll!!!

Falls nur das erste LF und erstes CR stören könnte man einfach noch eine 
Schleife vorne vorsetzen:
1
Sub Getline(s As String)
2
3
 do
4
   b = Inkey()
5
   if b = 13 then exit do      'nach erstem CR Schleife verlassen
6
 loop
7
 
8
 S = ""
9
 Do                            'Zeichen sammeln 
10
  B = Inkey()
11
  Select Case B
12
   Case 0                      'mach nichts wenn inkey eine 0 zurückliefert
13
   Case 13 : S = S + Chr(b)    'CR wird noch an S angehangen
14
             Exit Do           'dann Schleife/Sub verlassen
15
   Case 10                     'mach nichts bei LF
16
   Case Else : S = S + Chr(b)  'alle anderen Zeichen an S anhängen
17
  End Select
18
 Loop
19
End Sub

Insgesamt nicht schön, könnte aber funktionieren?

von Uwe N. (Firma: Privat) (djuwert)


Bewertung
0 lesenswert
nicht lesenswert
Ich habe eben beide modems verglichen, sie spucken 1:1 dasselbe aus. Ich 
werde deinen Vorschlag heute Abend testen. Dankedir erstmal!!!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.