Hallo zusammen!
Ich habe das Gsm-Modul Telit GC864-QUAD und das Evaluationsboard S3 der
Firma Round Solutions gekauft. Vorerst möchte ich es über PC (RS232,
COM1) mit einer c++ Anwendung ansteuern. Später soll das ein eigener µC
machen. Ich bin kein C-Profi, hab aber schon die ein oder anderen
kleinen Sachen damit programmiert.
Nun will ich beliebige Dateien mit diesem GSM-Modul auf einen FTP-Server
stellen.
Ich kann zwar Textdateien schreiben (dafür gibt es quasi fertige
AT-Befehle), alles andere macht aber Probleme. Ich wollte z.B. ein
kleines .jpg (<2KB) kopieren, wobei einige Byte ankommen. Hat jemand
bereits etwas Ähnliches gemacht?? Ich sitze jetzt schon ne gefühlte
Ewigkeit da dran und komm einfach nicht weiter!
Ich habs halt über "AT#FTPOPEN..." und "AT#FTPPUT="testbild.jpg""
versucht. Hier habe ich auf binär-Mode gestellt und will jetzt die
geöffnete Bilddatei auf den COM-Port ausgeben (vielleicht vorher in
einem char-Array speichern?). Einlesen tue ich folgendermaßen:
Danke für die Antwort! Jetzt im Nachhinein leuchtet mir das auch ein,
dass man Binärdateien nicht in ein Char-Array packen kann.
Ich habe das jetzt ein wenig umgeschrieben und es hat auch geklappt,
dass ich eine kleine Bilddatei per GSM Modul auf einen FTP Server senden
und lesen konnte.
Statt des "char bufferAr[]={0};" benutze ich jetzt direkt den buffer und
dessen Größe. Hier die Änderungen:
1
gsmFTPupBin(buffer,lSize);
gibt es an:
1
voidgsmFTPupBin(byte*fstream,longlsize)
2
{
3
commandRS232("AT");
4
//....
5
binRS232(fstream,lsize);//Datei binär an RS232 übergeben
Seltsamerweise funktionierte es plötzlich wieder nicht mehr. Ich habe
seitdem das Problem, dass er die Datei zum lesen und versenden auf
meiner Festplatte nicht mehr öffnen kann.
1
pFile=fopen("c:\bild.jpg","rb");
2
if(pFile==NULL){fputs("Fehler beim Oeffnen der Datei!\n\n",stderr);exit(1);}
Hat jemand vielleicht einen Tip, woran das liegen könnte? Die Datei
existiert jedenfalls an genau dieser Stelle mit genau diesem Namen und
ist nicht schreibgeschützt (wobei das beim Lesen eh egal sein müsste).
Danke!
...ok, ich habs selbst herausgefunden. Ich hatte natürlich keinen
doppelten Backslash im Dateipfad! Sorry für diese "dumme" Frage. Aber
manchmal sieht man eben den Wald vor lauter Bäumen nicht.
Hallo!
So, nachdem ich jetzt wieder einige Tage vergeblich damit verbracht habe
größere Dateien über das GSM-Modul zu senden, wende ich mich
(hoffnungsvoll!!) an euch.
Ich kann momentan:
- eine kleine Bilddatei mit ca. 2 kB auf einen FTP-Server senden und
diese darauf anschließend öffnen. freu
Probleme:
- Größere Dateien lassen sich nicht übertragen. Einmal funktionierte
eine ca. 50 kB - Datei, mittlerweile nur noch bis ca. 12 kB. Ziel ist es
jedoch beliebig große Dateien bis einige MB (evtl. sogar bis einige 100
MB) zu übertragen. Das Modul/Programm hängt sich beim senden jedes Mal
auf.
- Das GSM-Modul hängt sich dabei (bzw. anschließend) auf. Laut
AT-Befehle sollte man als "Ende-Zeichen" "+++" senden. Funktioniert
jedoch nicht, es reagiert einfach nicht bzw. schreibt "+++" zusätzlich
in die Datei (ans Ende). Ich muss das GSM-Modul anschließend reseten.
Habt ihr Ideen zu meinem Code, was ich ändern könnte? Muss ich die Datei
"gestückelt", also mit Schleife in kleineren Blöcken nacheinander
übermitteln? Kann es daran liegen, dass das Array der Antwort von
ReadFile() zu klein ist?
hier mal der Code der Übertragungsfunktion:
1
voidbinRS232(byte*fileStream,longlSize)
2
{
3
charfresult[1024]={0};//Größe festlegen? 1024? mehr für lange Antworten?
Vor einer ganzen Weile mit Telit-Modulen gearbeitet (Vorvorgänger des
genannten). Seinerzeit hatten Anfangs die FTP-Kommandos im Grunde
garnicht funktioniert, was aber durch Firmware-Updates stetig
nachgebessert wurde. Da damals wenig Zeit auf Korrekturen zu warten, bin
ich auf Dateiübertragung nach RFC 1867 ausgewichen. Egal, Schnee von
gestern. Ist die Flusskontrolle für PC-Schnittstelle eingeschaltet.
Zumindest mit den älteren Modellen war Hardware-Flusskontrolle (RTC/CTS)
obligatorisch, sobald die Geräte in den Data-Mode gegangen sind. Im
Zweifel im Programm explizit über SetCommState machen. Da das Gerät bei
RoSo gekauft wurde: schon in deren Support-Forum (so es das noch gibt)
gefragt? Anfragen direkt an DAI (so die den noch so heißen) wurden
seinerzeit auch beantwortet.
- Das Support Forum hat inzwischen 5508 Mitglieder, 4519 Threads und ist
unter http://www.roundsolutions.com/forum erreichbar. Die Registrierung
ist formlos und kostenfrei. Es geht im Forum primär um drahtlose Module
(GSM, UMTS, WIFI, Bluetooth
- Ich würde für die ersten Tests die Testsoftware RS Term nehmen. Das
ist eine Art Terminalsoftware, welche per Mausklick die AT-Befehle
sendet. Tippfehler sind damit ausgeschlossen. Download siehe:
http://www.roundsolutions.com/techdocs/index.php#tools
- Die Flusskontrolle ist bei größeren Dateien notwendig. Ohne gehen
früher oder später Daten verloren. RS Term auf dem PC unterstützt die
Flusskontrolle.
Gruß
Harald