Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

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)