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
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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.