
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
> Hallo Alex, > > es empfiehlt sich erst mal mit ganz einfachen Routinen zu beginnen, und dann erst zu komplexeren Angelegenheiten überzugehen. Um zu testen, ob das Problem wirklich bei der Kommunikation zwischen C-Control und Modem liegt, hier mein Programm-Vorschlag für die C-Control: > > > print "ATD1755203102" > end > > > Daraufhin müsste das Modem die betreffende Nummer anwählen. Falls nicht, liegt das Problem effektiv bei nicht korrekt gesetzten Übertragungsparametern oder bei der Kabelverbindung. > > Den PIN-Code kannst du schon vorher über Hyperterminal an das Modem übergeben, ebenso die baudrate auf 9600 setzen (warum auch auf 2400, wenn die C-Control auf 9600 läuft?). > > die Routine zum Entleeren des Pufferspeichers sollte so aussehen: > > > define response byte > > #rxdleeren > IF RXD THEN GET response > IF NOT RXD THEN RETURN > GOTO rxdleeren > > > Viel Spaß, > Martin > > > > , > > > > > > > > > > > > > > > Ich benutze meine SIM-Karte für das M20 Terminal von Siemens. Wenn ich das M20 über Hyperterminal ansteuere --> AT-Befehle, dann funktioniert das prima. Aber sobald ich das über > > > > > > die C-Control versuche, reagiert das M20 überhaupt nicht. > > > > > > > > > > Dann stimmt die Baudrate und / oder Handshake und / oder Verkabelung nicht. > > > > > > > > > > > Ist dieser AT-Befehl für Eingabe der Baudrate des M20 unter CCBasic richtig eingegeben?: > > > > > > > > > > > PRINT "AT+IPR=2400"; > > > > > > > > > > Mal angenommen, er wäre richtig: Wie soll die M20 ihn verstehen, wenn er laut Deines Kommentares > > > > > > > > > > > Weil die Baudrate der C-Control ist von Haus aus mit 9600 Bits/s und die des > > > > > > M20 mit 19,2 kBits/s eingestellt. > > > > > > > > > > mit 9600 bps gesendet, aber mit 19200 bps zu empfangen versucht wird? Die M20 muss vorher auf 9600 bps und kein Handshake eingestellt werden, bevor sie die CC versteht > > > > > > > Kannst du mir vielleicht eine kleine Anleitung zeigen, wie man ein Siemens M20 Terminal mit > > > > der C-Control/plus Steuercomputer auf Applicationboard richtig ansteuert und wie man die AT-Befehle > > > > zum ändern der Baudrate > > > > > > Wie ich geschrieben habe, ist es aus meiner Sicht prinzipiell nicht möglich, ein auf 19200 bps stehendes M20 mit der CC zu einer anderen Baudrate zu überreden. > > > > > > > und zum anmelden der SIM-Karte --> AT+CPIN="XXX" richtig im > > > > Source-Code von CCBasic schreibt. > > > > > > Deine CC-Basic-Zeilen sahen syntaktisch schon ok aus. > > > > > > Bye > > > Achim > > > > > Hallo > > > > Was könnte das sein, wenn ich bereits ein Null-Modem Kabel (sprich gekreuzt) von CC auf M20 > > benutze, das M20 bereits auf einer Baudrate von 2400 bps eingestellt ist (habe ich über Hyperterminal > > bereits schon gemacht und gespeichert auf aktuelles Profil) > > --> AT+IPR=2400 > > OK > > AT&W --> speichert das ganze dauerhaft ab ( über AT&V kann man Profil betrachten in bezug > > auf Einstellungen (Baudrate usw.)) > > > > Dann im Programmcode von CCBasic bevor ich einen AT-Befehl aufrufe die Baudrate der > > CC mit dem Befehl BAUD R2400 runtersetze. > > > > Wie kann ich das Handshaking des M20 ausschalten?? mit AT+IFC=0,0 (Xon/Xoff)?? > > Meinst du das es daran liegt weil das Handshaking des M20 nicht ausgeschalten ist? > > Weil nach dem ausschalten des Handshaking kann man das auch wieder mit AT&W wieder > > dauerhaft über Hyperterminal abspeichern bevor man es an die C-Control hängt. > > > > Der Pufferspeicher der RS232 (C-Control) ist doch 8 Byte groß, oder? Also muss ich doch > > bevor ich einen AT-Befehl aufrufe den Pufferspeicher leeren mit > > > > define response byte[8] 'eigentlich doch 8 oder weil 8 Byte Pufferspeicher der RS232 oder??? > > > > #rxdleeren 'Subroutine für leert den Buffer der seriellen Schnittstelle > > PAUSE 5 > > IF RXD THEN GET response > > IF NOT RXD THEN RETURN > > GOTO rxdleeren > > > > > > -------------------Hier ist mein eigentliches Programm bis jetzt:------------------------------ > > > > ' *** Definition LCD-Ports *** > > define lcd_port byteport[2] > > define lcd_rs port[14] > > define lcd_rw port[13] > > define lcd_e port[15] > > '---Digitale I/Os---- > > define Fuellstandssensor1 port[1] > > 'define LED1 port[2] > > define SMSUeberwachung1 port[3] > > > > '---LCD Display--- > > define lcd_buf byte[10] > > define lcd_param byte[11] > > > > '*** ASM-Progs *** > > 'define fastbas &H151 > > 'define lesen &H16F > > > > '---User Data--- > > define response byte[20] > > > > '*** ASCII-Codes *** > > define gf_ &H22 > > define sp_ &H20 > > define A_ &H41 > > define B_ &H42 > > define C_ &H43 > > define D_ &H44 > > define E_ &H45 > > define F_ &H46 > > define G_ &H47 > > define H_ &H48 > > define I_ &H49 > > define J_ &H4A > > define K_ &H4B > > define L_ &H4C > > define M_ &H4D > > define N_ &H4E > > define O_ &H4F > > define P_ &H50 > > define Q_ &H51 > > define R_ &H52 > > define S_ &H53 > > define T_ &H54 > > define U_ &H55 > > define V_ &H56 > > define W_ &H57 > > define X_ &H58 > > define Y_ &H59 > > define Z_ &H5A > > '*** Hauptprgramm *** > > SYS fastbas 'Proggi etwas verschnellern > > gosub LCD_INIT 'LC-Display initialisieren > > BAUD R2400 'Baudrate auf 2400 runtersetzen( fチr schnellere ist CControl zu lahm) > > '-------------------------------------------------------------------------------------- > > response = 0 > > GOSUB rxdleeren > > PRINT"AT+CMGF=1"; > > PUT 13 'entspricht Enter-Taste > > PUT 10 'entspricht Enter-Taste > > Pause 150 > > PRINT"AT+CPIN="; > > PUT 34 'entspricht " > > PRINT"6284"; > > PUT 34 'entspricht " > > PUT 13 > > PUT 10 > > Pause 2000 '20 sec. Pause zum Netz suchen und anmelden des Modems von SIM-K. > > > > #mainloop 'Hauptschleife > > > > response = 0 > > GOSUB rxdleeren 'Buffer sollte leer sein > > PRINT"AT"; 'AT-Kommando nur zum チberprチfen > > 'ob das Handy da ist > > PUT 13 'entspricht Enter-Taste > > PUT 10 'entspricht Enter-Taste > > pause 15 'auf Modem warten > > IF RXD THEN GOSUB modemok ELSE GOSUB modemfehler > > GOSUB Wasserstand > > Pause 150 'Pause zum Ende jeder Runde > > GOTO mainloop > > END 'Eigentlich nur symbolisch > > > > '-------------------------------------------------------------------------------------- > > #Wasserstand > > IF Fuellstandssensor1 = 0 THEN GOTO SMS > > RETURN > > '-------------------------------------------------------------------------------------- > > #SMS > > > > 'Die nach PUT stehenden Nummern sind ASCII-Formate z.B. PUT 34 entpricht --> Ascii(34) = " > > > > PRINT "AT+CMGF=1"; 'setze Message-Format auf "Text" > > PUT 13 'Zeilenumbruch entspricht CR > > PUT 10 > > PAUSE 50 > > PRINT "AT+CMGS="; 'Befehl zum SMS-schreiben > > PUT 34 'entspricht " > > PRINT "+491755203102"; 'Ziel-Handynummer in Anfチhrungsstrichen > > PUT 34 'entspricht " > > PUT 13 'Zeilenumbruch (NUR CR) > > PAUSE 50 > > PRINT "Hallo Chef, hier ist -control: Wasserstand erreicht." 'SMS-Text > > PAUSE 10 > > PUT 26 'SMS werden mit Character 26 (eof "End Of File") > > PAUSE 200 ' abgeschlossen > > GOSUB rxdleeren > > beep 300,100,0 'ertönt ein akustisches Signal > > PAUSE 10 > > GOSUB SMSgesendet 'Schreibt ins Display SMS gesendet > > LED1 = 1 > > GOSUB Schalter1 > > DEACT LED1 'Port 2 wird wieder abgeschalten (LED an Port 2 hört auf zu leuchten). > > > > GOTO mainloop > > > > 'Hier läuft die Steuerung solange in einer Schleife bis ein Taster den Port 3 gegen GND geschalten hat. > > > > #Schalter1 > > IF SMSUeberwachung1 = 0 THEN RETURN > > GOTO Schalter1 > > > > '*** Funktionen *** > > #modemok > > lcd_param = 1 : gosub LCD_GOTOLINE '"MODEM OK" in der ersten Zeile > > lcd_param = M_ : gosub LCD_WRITECHAR > > lcd_param = O_ : gosub LCD_WRITECHAR > > lcd_param = D_ : gosub LCD_WRITECHAR > > lcd_param = E_ : gosub LCD_WRITECHAR > > lcd_param = M_ : gosub LCD_WRITECHAR > > lcd_param = sp_ : gosub LCD_WRITECHAR > > lcd_param = O_ : gosub LCD_WRITECHAR > > lcd_param = K_ : gosub LCD_WRITECHAR > > lcd_param = sp_ : gosub LCD_WRITECHAR > > lcd_param = sp_ : gosub LCD_WRITECHAR > > lcd_param = sp_ : gosub LCD_WRITECHAR > > lcd_param = sp_ : gosub LCD_WRITECHAR > > lcd_param = sp_ : gosub LCD_WRITECHAR > > lcd_param = sp_ : gosub LCD_WRITECHAR > > lcd_param = sp_ : gosub LCD_WRITECHAR > > lcd_param = sp_ : gosub LCD_WRITECHAR > > GOSUB rxdleeren 'Buffer leeren > > RETURN > > > > ' Handy scheinbar nicht da... > > #modemfehler > > lcd_param = 1 : gosub LCD_GOTOLINE '"MODEM NOT OK" in die erste Zeile > > lcd_param = M_ : gosub LCD_WRITECHAR > > lcd_param = O_ : gosub LCD_WRITECHAR > > lcd_param = D_ : gosub LCD_WRITECHAR > > lcd_param = E_ : gosub LCD_WRITECHAR > > lcd_param = M_ : gosub LCD_WRITECHAR > > lcd_param = sp_ : gosub LCD_WRITECHAR > > lcd_param = N_ : gosub LCD_WRITECHAR > > lcd_param = O_ : gosub LCD_WRITECHAR > > lcd_param = T_ : gosub LCD_WRITECHAR > > lcd_param = sp_ : gosub LCD_WRITECHAR > > lcd_param = O_ : gosub LCD_WRITECHAR > > lcd_param = K_ : gosub LCD_WRITECHAR > > lcd_param = sp_ : gosub LCD_WRITECHAR > > lcd_param = sp_ : gosub LCD_WRITECHAR > > lcd_param = sp_ : gosub LCD_WRITECHAR > > lcd_param = sp_ : gosub LCD_WRITECHAR > > GOSUB rxdleeren 'Buffer leeren > > RETURN > > > > #SMSgesendet > > lcd_param = 1 : gosub LCD_GOTOLINE '"SMS GESENDET" in der ersten Zeile > > lcd_param = S_ : gosub LCD_WRITECHAR > > lcd_param = M_ : gosub LCD_WRITECHAR > > lcd_param = S_ : gosub LCD_WRITECHAR > > lcd_param = sp_ : gosub LCD_WRITECHAR > > lcd_param = G_ : gosub LCD_WRITECHAR > > lcd_param = E_ : gosub LCD_WRITECHAR > > lcd_param = S_ : gosub LCD_WRITECHAR > > lcd_param = E_ : gosub LCD_WRITECHAR > > lcd_param = N_ : gosub LCD_WRITECHAR > > lcd_param = D_ : gosub LCD_WRITECHAR > > lcd_param = E_ : gosub LCD_WRITECHAR > > lcd_param = T_ : gosub LCD_WRITECHAR > > lcd_param = sp_ : gosub LCD_WRITECHAR > > lcd_param = sp_ : gosub LCD_WRITECHAR > > lcd_param = sp_ : gosub LCD_WRITECHAR > > lcd_param = sp_ : gosub LCD_WRITECHAR > > GOSUB rxdleeren 'Buffer leeren > > RETURN > > > > '-------------------------------------------------------------------------------------- > > #rxdleeren 'leert den Buffer der seriellen Schnittstelle > > PAUSE 5 > > IF RXD THEN GET response > > IF NOT RXD THEN RETURN > > GOTO rxdleeren > > '-------------------------------------------------------------------------------------- > > '*** LCD_Interface *** > > '( muss in jedes Programm mit LCD-Ausgabe eingefuegt werden) > > > > #LCD_INIT > > > > ' alle ports 0 > > lcd_port = OFF > > > > ' 8-Bit-Modus aktivieren > > lcd_param=&H38 : gosub LCD_WRITECMD > > > > ' mit 8-Bit-Command in 4-Bit-Modus umschalten > > lcd_port=&B00000010 > > tog lcd_e > > tog lcd_e > > > > ' ab jetzt 4-Bit-Modus > > lcd_param = &H28 : gosub LCD_WRITECMD > > lcd_param = &H0C : gosub LCD_WRITECMD > > > > ' Display loeschen > > #LCD_CLS > > lcd_param = &H02 : gosub LCD_WRITECMD > > lcd_param = &H01 : gosub LCD_WRITECMD > > return > > > > ' Zeilenwechsel > > #LCD_GOTOLINE > > if lcd_param = 1 then lcd_param = &H80 > > if lcd_param = 2 then lcd_param = &HC0 > > goto LCD_WRITECMD > > > > ' LCD-Kommando > > #LCD_WRITECMD > > lcd_buf = OFF > > goto LCD_WRITE > > > > ' Zeichenausgabe > > #LCD_WRITECHAR > > lcd_buf = &B00100000 > > > > ' Kommando oder Zeichen an Display senden > > #LCD_WRITE > > lcd_port = lcd_buf or (lcd_param shr 4) ' Hi-Nibble > > tog lcd_e > > tog lcd_e > > lcd_port = lcd_buf or (lcd_param and &H0F) ' Lo-Nibble > > tog lcd_e > > tog lcd_e > > return > > '-------------------------------------------------------------------------------------- > > 'mチssen beim ersten Mal mit チbertragen werden > > 'SYSCODE "fastbas.s19" > > 'SYSCODE "lesen.s19" > > '-------------------------------------------------------------------------------------- > > > > Du kannst ruhig zwischen den Zeilen dein Kommentar reinschreiben was nicht stimmt, > > wäre super Happy wenn ich das Ding endlich zum laufen bekommen würde und ich > > zumindest nur mal eine SMS über M20 verschicken kann wenn z.B. ein Dig. Port ein 0 Signal > > führt(auf Eingang gestellt). > > > > Gruss > > Alex > > Hallo Martin Hallo Achim Es FUNKTIONIERT!! HURRA, HURRA. Habe meinen Fehler gefunden. Das M20 hat reagiert und hat mir auf ein anderes Handy eine SMS geschickt, gesteuert von C-Control. Über Hyperterminal: Und zwar habe ich erstens das Handshaking ausgeschalten über Hyperterminal mit Befehl AT&D0 (Disable Data Terminal Ready(DTR)) anschließend mich eingewählt mit AT+CPIN="xxxx" zuvor natürlich Baudrate runtergestellt mit AT+IPR=2400. Dann mit Befehl AT+CSCA="+491710760000" für D1-Netz, da die SIM-Karte die ich ins M20 reingesteckt habe auf einen D1-Vertrag läuft. Das ganze dauerhaft im M20 gespeichert mit Befehl AT&W. (Auf der SIM-Karte, die in das M20 eingeschoben werden muss, befindet sich u.a. die Telefonnummer des Short Message Service Centers (SMSC) und Platz für maximal zehn Textnachrichten. Die eingetragene SMSC-Nummer hängt vom Kartenvertrag ab. Beispielsnummern sind bei D1-Telekom: +491710760000 und bei D2-Privat: +491722270333. Mit AT+CSCA? kann man sich die eingetragene Nummer anzeigen lassen. Per AT+CSCA=“+491710760000“ lässt sich die Nummer festlegen. Mit solchen AT-Befehlen lassen sich noch zahlreiche weitere Optionen einstellen. So kann z.B. festgelegt werden, wie lange eine Textnachricht beim SMSC auf seine Abholung warten soll, bevor sie gelöscht werden kann.) - Dann im Programmcode von CCBasic bevor man den ersten AT-Befehl schreibt zuvor die Baudrate der C-Control runtergestellt mit Befehl BAUD R2400. - Dann habe ich statt dem gekreuzten Kabel ein 1zu1 Kabel V.24 Kabel hergenommen! Jetzt probiere ich mal ob ich mich programmtechnisch über C-Control anmelden kann also sprich --> AT+CPIN="xxxx" dann Pause 500 (10 sec. Pause um dem Modem Zeit zu lassen das es sich über die SIM-Karte ein Netz sucht und einwählt). Ich halte euch auf dem laufenden. Gruss Alex |
| Antwort schreiben |