
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
> > > > > > > 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 |
| Antwort schreiben |