Re: Hostmodus einleiten Kategorie: Programmierung (von ChristianS - 29.08.2011 14:05) | ||
Als Antwort auf Re: Hostmodus einleiten von André H. - 28.08.2011 17:54 | ||
| ||
Hallo André, danke für die Tipps und Dein Angebot sich mein Problem "Remote" anzusehen. Es ist nicht ganz so leicht die "Host-Mode LED" in die Station einzubauen, da das Teil in der Verteilung hängt und ziemlich verdrahtet ist. Da möchte ich nur sehr ungern dran. Ich verwende zur Datenübertragung nur die lizensierte Version Deines CC2-Download-Tools unter Win7, 32bit. Das Notebook hat eine RS232 Schnittstelle eingebaut. Das "Com-Menue" ist nichts weiter als eine Ansammlung von "hwcom.print()" -Befehlen, die ich zu Zwecken der �bersichtlichkeit ausgelagert habe. Da kann sich das Programm eigentlich nicht befinden, wenn der Host-Mode eingeleitet wird. Timeouts? Nee, habe ich noch nicht mit gearbeitet. Werde ich mir mal ansehen. Ich vermute mal, es könnte aber auch sein, dass es an den diversen Threads liegt, die parallel laufen. Ach ja, bleibt noch zu sagen, dass das Problem nicht auftritt, wenn ich den Host-Mode über die Tasten der Station einleite. Ohne Probleme lief auch immer diese Variante; ist aber nicht so elegant. if hwcom.rxd() { keyboard=hwcom.get(); if keyboard=='H'or keyboard=='h' { hwcom.print("rnrnHostmodus eingeleitet..rn"); hwcom.ready(); quit 63; } // Ende "Abfrage==H" if keyboard=='m' { hwcom.clr(); .... } ...... > Hallo Christian, > > > Wenn ich nun Daten via CC2-Tool übertrage, dann stürzt das Tool zu 70% ab ... > > Welches Tool? > Das CC2Net.de-DL-Tool oder den Original-Lader von Conrad? > Ich denke Du meinst ersteres. > > > ... und bleibt im > > Modus "Prüfe C-Control II" hängen. Nur ein manuelles Einleiten des Host-Modus an der Station > > funktioniert dann. Manchmal bekommt man durch einen Neustart des Tools und der Option > > "Host-Mode-Geschw. Korrektur" die Station wieder in den Betriebsmodus und man kann die > > �bertragung erneut einleiten. > > An dieser Position darf das Tool nicht stehenbleiben. > Wenn keine Antwort erfolgt, mu� die Meldung "C-Control II antwortet nicht..." erfolgen. > Es gibt nur wenige Gründe, warum es nicht zu einem Time-Out kommt: > > - Dein Programm wurde nicht beendet, sondern sendet kontinuierlich Daten, da es sich > in einem über RS232 erreichbaren Menü befindet. Die Host-LED leuchtet hier nicht. > Wenn Du keine Host-LED hast, bitte nachrüsten. (Low-Current-LED + Vorwiderstand > zwischen +5V und Host-Pin oder normale LED mit Transistor (siehe IDE-Hilfe zu OSOPT V3.0)) > Mehr dazu unten bei den Erläuterungen zu Deinem Thread. > > - Du nutzt die lizensierte Version des CC2Net.de-DL-Tools, ohne vorher das Setup > der Shareware ausgeführt zu haben. Es fehlen dann Steuerelemte oder haben eine > zu alte Version. In diesem Fall bitte das Setup ausführen und anschlie�end die > Lizensierte Version wieder drüberkopieren. (Verzeichis vor dem Setup sichern.) > > Wenn Du das ausschlie�en kannst: > Welches Betriebssystem benutzt Du? Win7, Vista, WinXP, Win2k, Win98(SE), Win95 :-) > Vom Bild her würde ich auf Vista oder Win7 schätzen. 32 oder 64Bit? > Benutzt Du eine echte RS232 oder einen USB-Adapter? > Bei letzterem ggf. einen anderen Adapter testen. > > Wenn das alles nichts hilft, kann ich mit Dir zusammen per Teamviewer draufschauen, um > das Problem zu analysieren. > > > > > > thread ComCom// Thread vom main-thread aus starten > > { > > run 50; > > loop > > { > > > > wait hwcom.rxd(); > > data=hwcom.get(); > > if data==254 > > { > > wait hwcom.rxd(); > > if hwcom.get()==254 quit 1;// Hostmode einleiten > > } > > if (data > 47) and (data < 58) //Gültigkeitsbereich Taste 0...9 > > { > > if data == 48 {Init();} //48=0 > > .... > > if data == 57 {mycalendar.Com();} //57=9 > > } > > if (data==81) or (data==113) > > hwcom.print("Ende..."); > > if data==13 > > com.Menue(); > > // ... > > hwcom.flush(); > > } > > } > > Eine Priorität von 50 ist i.d.R. für COM-Threads unnötig. > Du nutzt keinerlei Time-Outs. Mir springt if data==13 com.Menue(); ins Auge. > Wenn sich die Regelung in Deinem COM-Menü befindet, kann der Hostmode nicht eingeleitet werden. > Nutze zum Empfang von Daten vorzugsweise die Receive-Funktion. > Springe aus Menüs nach einer definierten Zeit ohne Aktivität in die Hauptschleife zurück. > �brigens kannst Du Deine Vergleiche übersichtlicher gestalten, wenn Du auf bestimmte > Tasten reagieren willst: > if (data >= '0') and (data <= '9') //Gültigkeitsbereich Taste 0...9 > oder > if data == '0' Init(); > So mu�t Du nicht erst vom ASCII-Code umdenken. > > MfG André H. | ||
Antwort schreiben Antworten: Re: Hostmodus einleiten (von André H. - 31.08.2011 7:54) |