Forum: Mikrocontroller und Digitale Elektronik Probleme mit AT-Befehlen für GPRS Datenübertragung TELIT 864


von Bernd (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,
ich habe Probleme eine GPRS Verbindung zu einem privaten Netzwerk zu 
initialisieren. Ich habe den APN, Benutername und Passwort.
Ich verwende das Telit GE864-Quad mit integriertem TCP/IP Stack.

Wenn ich jetzt aber nun den Sockel öffnen will, erhalte ich ein ERROR 
zurück.
Hat vielleicht jemand bereits Erfahrung mit diesem Modem? Das Modem soll 
nicht always online sein. nach dem versenden soll der sockel wieder 
geschlossen werden.

Was sollte ich noch beachten, wenn ich serielle Daten via GPRS versenden 
möchte?

GPRS VERBINDEN:
AT+CGATT = 1
Antwort: OK

Kontext definieren:
AT+CGDCONT= 1,”IP”,”apn”,”yyy.yy.yyy.yy”,0,0
Antwort: OK

TCP-IP Stack konfigurieren:
AT#SCFG = 1, 1, 512, 30, 300,100
Antwort: OK

Kontext aktivieren:
AT#SGACT = 1, 1, “xxxxxxx”,”xxxxxxxx” // Username und Passwort


Socket öffnen:
AT#SD = 1 , 0 , 20 , xxx.xx.xx.xxx, 0,0,1
Antwort: ERROR


Daten über Socket 1 versenden
AT#SSEND=1
>Test<CTRL-Z>

AT#SH = 1 , 0 , 20 , xxx.xx.xx.xxx, 0,0,1

von Philipp (Gast)


Lesenswert?

Hallo,
also dir ist aber schon klar, dass auf der anderen Seite ein Session 
Server sein muss. Wer hält den die Verbindung?

ciao,
Philipp

von Bernd (Gast)


Lesenswert?

Hi Philipp,
danke für deine Antwort. Genau ein Server muss immer hören ob war 
reinkommt. Mein Endgerät initiiert und beendet die Verbindung. Dann wird 
es wohl daran liegen, dass ich noch gar keine Server laufen gelassen 
hab.
Aber das da gleich ERROR kommt, komisch.

von Philipp (Gast)


Lesenswert?

Hallo,
ja der erste Zugriff auf den Server öffnet die Session und über die ist 
dein GPRS-Modem permanent verbunden. So erfolgt dann auch die 
Kommunikation, denn die UMTS oder GPRS Dinger haben ja fast nie eine IP 
über die man sie erreichen kann (dyn. nach dem Aufbau natürlich).

Hab ich schon oft in C# programmiert.

ciao,
Philipp

von Bernd (Gast)


Lesenswert?

Hallo Philiip,
kannst du mir da vielleicht zwecks der Initialisierung helfen?
Ich habe eine Applikation geschrieben, die mir event-getriggert zunächst 
einen 15 sec Alarmruf und dann die Maschinenparameter via SMS auf mein 
Mobilfunktelefon versendet.
Event--> Alarmruf --> SMS versenden.

Das klappt soweit ganz gut. Allerdings möchte ich jetzt noch mehrere 
Datensätze. via GPRS versenden. Nur, bei mir happerts schon bei der 
Initialisierung.

Wie muss ich das GPRS Initialisieren um dann einfach Daten an meine 
Gegenstelle zu senden? Meine Applikation soll dann nach einer bestimmten 
Zeit die Verbindung wieder trennen.

Ich will also nicht eine permanente Verbindung zur Gegenstelle, den ich 
will ja, das bei einem Event eine SMS verschickt wird.

Wäre wirklich nett, wenn du oder andere mir hierbei weiterhelfen 
könnten. Ich programmiere in C.
Wie gesagt, ich verwende das Telit GE864 QUAD.
Viele Grüße

von Philipp (Gast)


Lesenswert?

Hallo,
tja leider ist jedes Modem anders. Ich habe Sagem, u-blox und enfora 
verwendet und nur das Sagem hat gut funktioniert.

Jedes Modem hat andere Befehle, da ist nichts mit dem 
AT-Befehlsstandard. Meine Befehle für TCP/IP fangen alle mit AT+KT... 
an.

Also so ca (aus dem IP Manual von Telit) ...

AT+CGDCONT=1,"IP","provider.apn.com","0.0.0.0"
   ---> Verbindung zu deinem APN, Protokoll IP und get dyn. IP
AT#SD=3,0,80,"www.deinserver.com"
   ---> Verbindung zur IP/HOST auf Port 80 auf Kanal 3 (mehrere möglich)
ATD*99***1#
   ---> connect

Und dann kannst schon Daten senden ...

Frage, warum sendest du nicht direkt eine SMS weg???

ciao,
Philipp

von Bernd (Gast)


Lesenswert?

Hallo Phillip,
Danke für die Antwort!
Da habe ich wohl das ATD*99***1# vergessen. Ich probiers gleich mal aus.

>>Frage, warum sendest du nicht direkt eine SMS weg???

wie meinst du das? Wegen dem zuerst durchgeführten "Anklingeln"?

von Philipp (Gast)


Lesenswert?

Hallo,
die SMS sendet das GSM-Modem oder dann der Server?
Bin etwas verwirrt nun :-)

ciao,
Philipp

von Bernd (Gast)


Lesenswert?

Hallo Philipp,
sorry, das kann ich verstehen, war etwas blöd erklärt. Also mein Modem 
soll via GSM Dienst event-getriggert SMS an ein Mobilfunktelefon 
versenden. Bei Bedarf aber via GPRS größere Datenmengen an meine 
Server-Session.

Noch eine Frage: Muss ich nach dem Aktivieren des Sockels wirklich noch
ATD*99***1# eingeben oder reicht das, wenn ich nur den Socket aktiviere 
und dann mit AT#SSEND=1 meine Daten?

von Philipp (Gast)


Lesenswert?

Hallo,
ich glaube bei deinem Telit ist es wie beim Sagem, da macht das der 
Socket. Ich hab gerade nochmal nachgesehen (Code aus 2008) und ich habe 
auch nur den SEND drinnen.

Wie machst du denn die Gegenstelle - also den Session Server? C, C++, 
C#,...?

MS : 
http://msdn.microsoft.com/en-us/library/system.net.sockets.tcplistener.acceptsocket(v=vs.80).aspx

Nach dem Connect musst du ein Thread aufmachen und der läuft dann in 
einer Endlosschleife und hört auf den Port. Wenn du den gleich zumachst, 
dann wirst du immer einen ERROR zurück bekommen. Nur wenn du den Stream 
schließt, dann wäre es richtig.

ciao,
Philipp

von Kit (Gast)


Lesenswert?

Hallo Bernd,

vielleicht kann Dir Telit mit seinem Technical Support Forum 
weiterhelfen:
http://www.telit.com/en/services/technical-forum.php

Gruß,
Kit

von Bernd (Gast)


Lesenswert?

Hallo Phillip,
Die Gegenstelle will ich mit LabView realisieren. Nur nochmals eine 
kurze Verständnisfrage: Mein Server soll ja im Grunde immer nur auf 
Nachrichten bzw. Daten von meinem GSM Modem warten! Also muss er im 
Grunde ja nur ständig am Port hören ob was von meinem GSM Modem kommt. 
Gibts da schon was fertiges wo ich nur noch den Port einstellen muss und 
mir die gesendeten Daten dann im Rohformat auf meinem PC anzeigt?
VG

von Philipp (Gast)


Lesenswert?

Hallo,
naja es gibt 2 Methoden. Entweder du machst eine Session zwischen den 
beiden oder du sendest einen Request (zB. HTTP) und bekommst die 
Antwort. Was dein Modem kann musst du bitte Telit fragen.

Wenn du einen HTTP Request absetzen kannst, dann ist es leicht. Einen 
Webserver mit XAMPP, PHP und die Daten kommen in ein File, DB, ...
Den Webserver kannst ja auf jeden Port laufen lassen bzw. hat Labview 
sowas ???

Wenn nicht dann Google mal nach "session server", da bekommst jede Menge 
Demo oder Freeware zum Probieren.

ciao,
Philipp

von Philipp (Gast)


Lesenswert?


Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.