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
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.
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
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
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
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"?
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?
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
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
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