Hallo zusammen Mein Problem: Ich möchte mit einem PIC16F876 über rs232 mit einem Modem (Wavecom WM02) komunizieren. Wenn ich das Modem an den PC anschliesse funktionieren alle Comands richtig, das Modem geht also. Aber da wird ja auch das ganze Handshaking bereitgestellt. Meine Frage also: Gibt es ne Möglichkeit die Komunikation nur mit RX und TX hinzubekommen? Oder muss ich die ganzen Handshaking-Signale auch bereitstellen? mfg Markus
> Oder muss ich die ganzen Handshaking-Signale auch bereitstellen?
Nur wenn das Modem keinen Befehl kennt, mit dem es sich auf reines
Softwarehandshake einstellen lässt.
Ich hab überleg die Signale RTS und CTS des Modems einfach zusammen zuhängen, damit sich das Modul immer wieder selbst die Sendefreigabe gibt.
Hardware-Handshake ist sicher schon länger obsolet. Du programmierst einen RS232-Empfang über IRQ und Buffer und alles paßt!
Bernd Rüter schrieb: > Hardware-Handshake ist sicher schon länger obsolet. > Du programmierst einen RS232-Empfang über IRQ und Buffer und alles paßt! Und das hilft ihm dann wie, wenn ihn das Modem dazu auffordert kurzzeitig nicht zu senden?
Ok ich bin nun schon einiges weiter. Die Komunikation mit Hyperterminal (also Modem am PC) geht prima. Baud 19200, 8Bit, No Parity, 1 Stopbit, Flowcontroll: None Dann muss ich das eingeben: AT+CMGS=+41XXXXXXXXX<Enter> Text der Nachricht<Ctrl-Z> Da die Flusscontrolle auf "None" steht bin ich davon ausgegangen das es auch auf dem PIC funktioniert. Also wenn ich alles gleich ausgebe. Also in etwa so: strcpy(number,"+41XXXXXXXXX"); printf("AT+CMGS=%s",number); putc('0x0D'); printf("Text der Nachricht"); putc('0x1A'); nur leider geht das nicht. Weiss jemand ob auf dem PIC ein String irgenwie anders terminiert wird oder sieht sonst ein fehler? (Sorry - hab den letzten Beitrag leider als Gast verfasst)
Markus Marugg schrieb: > printf("AT+CMGS=%s",number); > putc('0x0D'); printf("AT+CMGS=%s\r\n", number); > printf("Text der Nachricht"); > putc('0x1A'); printf("Text der Nachricht\x1A"); > nur leider geht das nicht. Weiss jemand ob auf dem PIC ein String > irgenwie anders terminiert wird oder sieht sonst ein fehler? Deine beiden Character-Konstanten (mit Single Quotes) ergeben nicht ganz das, was du erwartest. Ohne die Quotes würde es gehen, aber versuch's mal wie oben, mit den Steuerzeichen direkt im printf()-Formatstring. Ausserdem AT-Kommandos immer mit "\r\n" abschliessen, habe ich aber auch schon eingebaut. Andreas
ok. hab das mal ausprobiert. Leider ohne Erfolg. Muss da wirklich jeder Befehl auch mit "Line Feed" abgeschlossen werden? Ich konnte das irgenwie im Datenblatt nirgends finden.
Ok, also langsam dreh ich am Zeiger. "FlowControll - None" heisst schon das überhaupt nichts gesteuert wird? Am PC kann ich es einfach anhängen, Verbindung einrichten und drauf los schreiben. Keine Initialisierung nötig, es geht halt einfach. Mein Schnittstellen-Treiber funktioniert und auch sämmtliche Pinbelegungen hab ich schon tausendmal gecheckt. Hat noch jemand ne Idee?? Bin über jede Hilfe froh.
Markus Marugg schrieb: > ok. hab das mal ausprobiert. Leider ohne Erfolg. Muss da wirklich jeder > Befehl auch mit "Line Feed" abgeschlossen werden? Ich konnte das > irgenwie im Datenblatt nirgends finden. Nein, CR reicht. Wenn man will, kann man auch ein anderes Zeichen als Ausführungskommando festlegen, aber das ist absolut unüblich. Gruss Reinhard
Hi Markus, ich weiß nicht was der Arzt oder Apotheker empfiehlt, aber ich empfehle nachfolgendes: 1. Flow Control Flow Control ist im AT Command Mode nicht (nie) aktiv. Auf ein AT sollte ein OK kommen. Erst wenn man eine CSD oder GPRS Verbindung aufbaut werden die Handshakeleitungen benutzt. Die Handshakeleitungen kann man mit AT Befehlen ausschalten. 1.1 >Hardware-Handshake ist sicher schon länger obsolet. Das sehe ich anders. Ohne Handshake geht in der GPRS Verbindung mit kleinen Datenpackten recht gut. Meine obige Aussage bezieht sich auf die GPRS Modem welche hier gelistet sind. http://www.gsm-modem.de/gps/gsm-modem-module.html Der Buffer im Modul ist recht groß. Das Paket wird im RAM des Modems gespeichert und dann mittels des integrierten TCP/IP Stack zum Server geschaufelt. Die Paketgröße und das Timeout lässt sich einstellen. Wie das mit Wavecom ist, weiß ich leider nicht. Ich benutze seit Jahren keine Wavecom mehr. 2. Wat is ne´ Dampfmaschine? Da stelle mer´ uns ma´ jaanz dumm 2.1 AT + CR und dann OK Fangen wir mal ganz klein an. Einfach mal nur AT und dann sollte ein OK kommen. Schickt man irgendetwas Unbekanntes, dann kommt zumindest ein "Error" zurück. OK oder Error kommen aber nur, wenn man den Befehl auch mit CR abschließt. Wenn man meint, man sendet ein CR und sendet etwas anderes, dann kommt auch nie eine Antwort. Sende das AT und CR zum PC. Nimm, wenn möglich, nicht Hyperterm sondern eine Terminalsoftware, die die Zeichen auch im Hexcode anzeigen kann. Dann siehst du auch, ob du wirklich ein CR sendest. Man kann die Terminalsoftware auch parallel zum GSM Modul betreiben. Das TX vom GSM Modul einfach parallel zum RX der RS232 am PC verdrahten. Dann kann man auch bei späteren AT Commands schön sehen, was man wirklich gesendet hat. 2.2 AT + CR zum GSM Modul Wenn alles unter Punkt 2.1 funktioniert und die Terminalsoftware den richtigen Hexcode anzeigt, dann kann man auch Punkt 2.2 übergehen. Das obige habe in den letzten 15 Jahren schon unzählige Male beschrieben. Sollte mein Tipp oben zum Erfolg führen, werde ich es im meinem Blog veröffentlichen http://www.gsm-modem.de/M2M/tag/m2m-tip/ . AT Commands mittels uC Schritt für Schritt. 1. AT mittels uC an Terminalsoftware senden 2. AT mittels uC an GSM Modul oder GSM Modem senden 3. AT+CPIN=1234 senden. 1234 gegen die OIN der Karte tauschen 4.ATD 123456789; senden 123456789 gegen die Telefonnummer des eigenen Handies tauschen. Dann klingelt das Telefon und man kann abheben. Man hört nichts, da man ja kein Mikrofon angeschlossen hat, aber man hat schon mal die Funkverbindung inklusive der GSM Antenne überprüft 5. und weiteres steht dann im Blog. Viel Erfolg beim nächsten Schritt. Gruß Harald
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.