Für dieses Forum muß Javascript im Browser aktiviert werden!
Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C2 Quellcode formatieren: <code>Quellcode</code> ASM Quellcode formatieren: <asm>Quellcode</asm> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! > > Mit dem Softwaretool habe ich schon etwas Experimentiert bin > > aber nicht zurechtgekommen, meine Com 1 läßt sich entweder > > nur vom Tool oder nur vom Hyperterminal ansprechen, kann > > aber auch ein NT 4 Problem sein. > > Die Meldungen auf das Display zu legen ist kein Problem ich > > müßte nur von dir Wissen welche wichtig sind. Es stehen > > 4 x 20 Zeichen zur Verfügung. > > Nachstehend der Code damit es nicht Endlos lang wird habe > > ich alles was mit Menü und sonstigen Funktionen > > zusammenhängt weggelassen, vielleicht hilft das weiter. > > > > Danke für deine Anteilnahme > > Martin > > > > Benötigt : modem.c2(V2.0),hwcom.c2(V1.1),str.c2,strx(V2.0), */ > > /* ports.c2 > > <code> > > > > function subEnd() returns byte > > {byte x;string s; > > hwcom.flush(); > > top(); > > s="Verbindung beenden? (j/n) "; > > hwcom.send(s,str.length(s)); > > wait hwcom.rxd(); > > x=hwcom.get(); > > if x=='j' or x=='J' > > { > > hwcom.put(x); > > hwcom.ret(); > > hwcom.ret(); > > s="Bye ..."; > > hwcom.send(s,str.length(s)); > > wait hwcom.ready(); > > return 255; > > } > > return 0; > > > > } > > > > 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(); > > // if strx.comp(in,s,9) return 255; else return 0; geändert > > if strx.comp(in,s) return 255; else return 0; > > } > > > > //------------------------------------------------------------------------------ > > thread main > > {byte second, len; > > modem.init(5,255,255);//Modem initialisieren 7 =38400 5= 9600 > > for len=0 ... 3 > > { > > counter[len]=0; > > } > > in=""; > > loop > > {wait hwcom.rxd(); > > 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 > > { > > 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(); > > if get=='E' or get=='e' > > { > > if subEnd() > > { > > modem.commandmode(); > > modem.hangup(); > > reset onlineCounter; > > break; > > } > > } > > menu(); > > } > > } > > } > > } > > } > > } > > </code> > > > > Hallo Martin, ich denke ich habe das Problem in der Function waitconnect gefunden: > Der String "s" hat den festen Wert 13+10+"CONNECT" > In den String "in" wird die Connect-Meldung des Modems geschrieben, z.b. 13+10+"CONNECT 32000". > > Wenn du jetzt mit strx.comp diese beiden ("CONNECT" mit "CONNECT 32000) vergleichst, dann > funktioniert das ganze natürlich nicht, es dürfen ja nur die ersten 7 (9 mit CR+LF) Zeichen verglichen > werden. > Das war ja auch so in der auskommentierten Zeile vorgesehen (if strx.comp(in,s,9) ), aber strx.comp > ist dafür der falsche Befehl, er vergleicht nur ganze Strings. > > Versuch das einmal: > > 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(); > // if strx.comp(in,s,9) return 255; else return 0; geändert > // if strx.comp(in,s) return 255; else return 0; > if strx.compsel(in,s,9,0) return 255; else return 0; > } > > Oder mit der Funktion instr : > > function waitconnect()returns byte//Wartet auf die "CONNECT"-Meldung vom Modem > {string s; > s="CONNECT"; > wait hwcom.rxd(); > hwcom.receive(in,30,1000); > hwcom.flush(); > // if strx.comp(in,s,9) return 255; else return 0; geändert > // if strx.comp(in,s) return 255; else return 0; > if strx.instr(0,s, in,7,str.length(in)) == -1 return 0; else return 255; > } > > Ich habe das nur so aus dem Bauch geschrieben, besonders bei der zweiten Lösung > bin ich etwas unsicher mit den Parametern, und hier in der Firma habe ich keinen CC2. > Wenn es nicht klappt muss ich dich aufs Wochenende vertrösten, wo ich das probieren kann. > Wie auch immer, es dürfen nur die ersten Zeichen der Connect-Meldung verglichen werden. > > Zum Softwaretool: > das sollte auf einem zweiten PC laufen, der die Daten zwischen CC2 und Modem mitliest, um > so den Fehler eingrenzen zu können. > Aber ich denke das können wir uns sparen, der Fehler war ja eindeutig. > > Manfred > > > >