Re: Modemspezialist gesucht klappt noch nicht Kategorie: Sonstige Hardware (von Martin - 6.05.2006 12:48) | |
Als Antwort auf Re: Modemspezialist gesucht von André H. - 4.05.2006 17:28
| |
> Hallo Manfred & Martin, > > Warum macht ihr euch die Arbeit ? > Seit 2003 oder 2004 habe ich zu diesem Punkt etwas unter "BĂĽcher" > "FAQ & Updates" stehen: > Im Beispiel modem.c2p wird in der Funktion waitconnect() bei strx.comp() vom Compiler ein Fehler gemeldet !? > Seit dem Druck des Buches haben sich einige Funktionen im Modul strx.c2 geändert. > Darunter auch die Funktion comp(). > In der Funktion waitconnect() muĂ? die Zeile > if strx.comp(in,s,9) return 255; else return 0; > gegen folgende Zeile ersetzt werden: > return strx.InStr(0,in,s,str.length(in),9)>=0; > > Die Funktion waitconnect muĂ? daher so aussehen: > function waitconnect()returns byte//Wartet auf die "CONNECT"-Meldung vom Modem > {string s; > s=13+10+"CONNECT"; > wait hwcom.rxd(); > hwcom.receive(in,30,1000); > hwcom.flush(); > return strx.InStr(0,in,s,str.length(in),9)>=0; > } > > Als kleine Erklärung: > Seit strx.c2 V2.1 funktioniert strx.comp() anders. > Die Funktion erwartet einen Parameter weniger. Hier kam es auch zur Fehlermeldung, > Welche Martin einfach durch das Entfernen des dritten Parameters beheben wollte, > wie ich an der auskommentierten Zeile erkennen konnte. > > Die Aufgabe erfĂĽllt nun die Funktion strx.InStr() zum Teil. > > Wenn also aus dem Buch etwas nicht funktioniert, schaut bitte immer > hier auf der Site unter "BĂĽcher" > "FAQ & Updates" nach. > > MfG AndrĂ© H. > > > > > Nachtrag zu meinem vorigen Posting: > > > > Wir mĂĽssen ja nicht das Rad neu erfinden, die Funktion modem.getOK() macht ja das gleiche, nur > > sucht sie nach "OK" statt nach "CONNECT". > > Die Speichergrösse habe ich von 8 auf 25 erweitert, weil ja die Meldung länger ist. > > > > Bitte umbedingt diese verwenden! > > > > function waitconnect() returns byte > > {byte data[25];string searchfor; > > wait hwcom.rxd(); > > hwcom.receive(data,25,1200); > > searchfor="CONNECT"; > > if strx.InStr(0,data,searchfor,25,7)!=-1 > > {hwcom.flush(); > > return 255;} > > else > > {hwcom.flush(); > > return 0;} > > } > > > > Liebe GrĂĽsse > > Manfred Hallo zusammen So wird man Reich an Erfahrung :-) die FAQ und das Forum habe ich zwar rauf und runter durchsucht, aber an Updates BĂĽcher hätte ich nie gedacht. Die von Andreâ?? beschriebene Ă?nderung ist durchgefĂĽhrt es wird aber nach wie vor zum Hypertrminal kein MenĂĽ gesendet. Zwischenzeitlich habe ich mit 4Testdatenpunkten wobei einfach die Systemsekunde zum Display ausgeben wird festgestellt, das die Kommunikation vorhanden ist, da ich bei Tastenbetätigung am PC die Displayausgabe steuern kann. Der Programmablauf dabei ist folgender. Bei Beginn der Verbindungsherstellung wird einmalig â??Test 3â?? ausgefĂĽhrt, in der folgenden Sekunde einmalig â??Test 1â?? und â??Test 2â??. Bei erfolgter Verbindung kann ich solange eine Taste am PC gedrĂĽckt ist am Punkt â??Test 3â?? die Systemsekunde weiterlaufen lassen, also muĂ? es soweit passen. â??Test 4â?? wird nie ausgefĂĽhrt was entweder auf die if abfrage waitconnect oder vorher if strx. hindeuten mĂĽĂ?te. Nachstehend der kommentierte Programmteil function waitconnect()returns byte//Wartet auf die "CONNECT"-Meldung vom Modem {string s; s=13+10+"CONNECT"; rblcd.line(1);rblcd.zahl2(system.second());///Test 1 wait hwcom.rxd(); rblcd.put('W');rblcd.zahl2(system.second());///Test 2 hwcom.receive(in,30,1000); hwcom.flush(); return strx.InStr(0,in,s,str.length(in),9)>=0;//</i> } thread onlineCounter {byte Second; Second=system.second(); wait Second != system.second(); online=online+1; } //------------------------------------------------------------------------------ thread main {byte second, len; rblcd.init(); modem.init(5,255,255);//Modem initialisieren 7 =38400 5= 9600 for len=0 ... 3 { counter[len]=0; } in=""; loop {wait hwcom.rxd(); rblcd.line(2);rblcd.zahl2(system.second());//Test 3 len=hwcom.receive(in,30,1000); k2="RING"; if strx.InStr(0,in,k2,len,4)!=-1 //Modem abheben lassen bei "RING"-Meldung { k2="ATA"+13+10; hwcom.send(k2,str.length(k2)); if waitconnect() // Auf "CONNECT"-Meldung warten { rblcd.line(3);rblcd.zahl2(system.second());//Test 4 online =0; run onlineCounter; menu(); loop { if second!=system.second() {second=system.second();printtime();printOnline();} if hwcom.rxd() {byte get; get=hwcom.get(); if get=='1' subPorts(); if get=='2' subCounter(); if get=='3' subGetAD(); if get=='4' subGetFRQ(); if get=='T' or get=='t' setTimeDate(); Danke Martin | |
Antwort schreiben Antworten: Re: Modemspezialist gesucht klappt noch nicht (von Manfred - 9.05.2006 9:30) Re: Modemspezialist gesucht klappt noch nicht (von martin - 10.05.2006 20:16) Re: Modemspezialist gesucht klappt noch nicht (von Manfred - 15.05.2006 10:05) Re: Modemspezialist (von Martin - 16.05.2006 12:24) |