Forum: Mikrocontroller und Digitale Elektronik SIM900 FTP-Client


von Peter B. (pbuenger)


Lesenswert?

Hallo Forum,

ich habe gerade ein Projekt mit einem GSM-Modul SIM900 von Simcom in 
Arbeit. Das Modul soll Binärdaten (JPG) an einen FTP-Server übertragen. 
Nun hat dieses Modul netterweise einen kompletten FTP-Clienten an Bord, 
man kann mit ein paar AT-Befehlen eine FTP-Verbindung aufbauen und Daten 
übertragen. Das ganze funktioniert soweit auch, allerdings habe ich 
jetzt ein dummes Problem:

Die FTP-Verbindung ist vom Typ Binär, die Daten werden mit 
AT+FTPPUT=2,<anzahl> an das Modul gesendet. Ist die Anzahl erreicht, 
antwortet das Modul mit OK. Wenn aber jetzt im binären Datenstrom ein 
0x0A enthalten ist, macht das Modul daraus ein 0x0D 0x0A. Ich habe also 
ein Byte mehr auf dem FTP-Server als ich gesendet habe. Alle anderen 
Bytes zwischen 0x00 und 0xFF werden einwandfrei übertragen.

Ich weiß nicht, ob man das SIM900 anders kunfigurieren kann, oder ob es 
irgend eine Escape-Sequenz für das 0x0A gibt. Im Moment komme ich nicht 
weiter, die Doku gibt diesbezüglich auch nix her. Hat jemand von Euch 
schonmal mit dem SIM900 gespielt und den integrierten FTP-Clienten 
verwendet?

Gruß,
Peter

von Cyblord -. (cyblord)


Lesenswert?

0xA (dec: 10) ist ein linefeed, da hängt das modul dann wohl automatisch 
ein carriage return 0xD (dec: 13) an. Das Modul scheint also nicht im 
Binärmodus zu arbeiten, sondern im Textmodus.
Es gibt natürlich die Möglichkeit die Binärdaten vorher in Base64 
umzuwandeln, aber das muss die Gegenseite natürlich erstmal wieder 
zurückwandeln.

Du könntest versuchen die Zeichen mit einem DataLink Escape (0x10) zu 
schützen, vielleicht erkennt das Modul dies. Ich würde aber eher 
versuchen das Modul in den Binärmodus zu bringen.

gruß cyblord

von Peter B. (pbuenger)


Lesenswert?

Hi cyblord,

das Modul ist defaultmäßig im Binärmodus, habs mit "AT+FTPTYPE?" 
abgefragt und sicherheitshalber mit "AT+FTPTYPE="I"" nochmal gesetzt. 
Hilft aber nicht.

Wie sieht denn der DataLink Escape aus? Ich kenne vom PPP nur ein 
Escape-Flag 0x7D.

Peter

von Cyblord -. (cyblord)


Lesenswert?

Kenne leider das Modul gar nicht, aber das Verhalten lässt schon 
eindeutig auf Text schließen. Sowas im Binärmodus geht ja eigentlich 
nicht.

Grundsätzlich läuft ein Escapen ja immer gleich ab. Es gibt halt ein 
spezielles Escape Zeichen in der ASCII Tabelle, welches oft dafür 
verwendet wird. Aber es kann natürlich grundsätzlich jedes Zeichen als 
Escape Zeichen verwendet werden.
Der Sender erkennt das Escape Zeichen und behandelt das nachfolgende 
Zeichen anders als sonst. Und entfernt das Escape Zeichen vor dem 
Senden. Will man ein Escape Zeichen an sich senden, so doppelt man es. 
Der Sender entfernt dann einfach eines davon.

gruß cyblord

von Peter B. (pbuenger)


Lesenswert?

So, Ursache gefunden, das SIM900 ist unschuldig. Ich habe die 
übertragene Datei mit Filezilla vom FTP-Server zurückgeholt. Steht jetzt 
Filezilla auf Typ "Auto" und die Datei ist vom Typ ".txt", wird der 
Dateiinhalt wie oben beschrieben manipuliert. Da habe ich mir also 
selber ein Bein gestellt.

Peter

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.