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 ! > > Hallo Stefan, > > > > > DANKE, funktioniert jetzt endlich!! > > > (das mit den libs könnt man auch unsaubere Programmierung nennen, aber seit BillyBoy > > > gibts das Wort ja eh nicht mehr hihihi) > > > > Naja, mit dem Programmieren selbst hat das Fehlen von Libs eher nicht zu tuen. > > Eher mit einer falschen Annahme von Vorraussetzungen. > > Ich konnte schließlich nicht ahnen, daß in WinXP weniger DLLs sind, als in > > den Vorgängerversionen. ;-) > > > > > Achja, noch nen Kommentar zu der Timeout-Hostmode-Routine: > > > Wenn die Station in der > > > Timeout-Wartezeit ist, nimmts keinen Hostmode mehr an! (versteh ich zwar nicht warum, aber in > > > die inline-codes wollt ich als Anwender nicht unbedingt einsteigen :-) > > > Ich hatte da so ein kurzes LED-Lauflicht, da war dann die Aufenthaltswahrscheinlichkeit > > > im timeout-wait groß, und da wollt das Ding fast nicht mehr in Hostmode.... > > > Hab den Host-Timeout auf 10ms gesetzt, das geht trotz kurzem Programm ganz gut. > > > (auch unter XP! *grins*) > > > > Ich weiß hier nicht genau, was Du meinst. Poste doch bitte einfach einmal > > den Programm-Code bzw. Programmauschnitt, mit dem dies auftritt. > > > > > Das 2. 254 wird doch seltenst zwischen rxd und receive-timeout empfangen, sondern liegt > > > ca. (200µs+Windows-Latenz) nach dem 1. 254 bei 57600 (500µs+ bei 19200) im buffer... > > > > Das zweimalige ASCII(254) wird von DL-Tool als eine Datenfolge gesendet. > > In den Beispiel-Routinen ist die Wartezeit höher, um sicherzugehen, wenn hier > > z.B. Windows nicht ganz mitspielt. Seit WinXP muß man mit soetwas rechnen. > > Die Wege es WinXP sind eben unergründlich. Das ist ein Grund, warum ich kein WinXP nutze. > > > > > Ausserdem hab ich da einen unangenehmen Verdacht: > > > Hat ein yield (z.B. hwcom 1.4) höhere priorität als ein capture? Das stört dann die Sync der seriellen > > > Schnittstellen-Threads ganz schön... > > > > Yield und Capture sind zwei paar Schuhe, und haben direkt nichts miteinander zu tun. > > Ein Capture dient zum Schutz von Ressourcen, damit kein Durcheinander entsteht. (syncronisieren) > > Ein Yield gibt die Rechenzeit vorzeitig ab, sodaß alle anderen Threads erst Ihre Anzahl > > an VM-Instruktionen (oder falls ein wait, sleep oder yield kommt, bis dahin) abarbeiten, > > danach kommt der Thread wieder dran. > > > > Man kann aber ein yield als ein Pseudo-Capture mißbrauchen, was ich gerne hin und wieder mache, > > wenn nur für wenige VM-Instruktionen ein Thread nicht unterbrochen werden darf. > > Dies kann man für bis zu 255 VM-Instruktionen machen. > > > > Bei einem Capture kommt es aber auch innerhalb gecaptureter Routinen zu Threadwechsel ! > > > > MfG André H. > > Hallo André > > Mit den Captures ist jetzt klar, hab ich mir nochmal angeschaut: Ist nur ein kooperativer Handshake! > Mein Problem mit der Ablaufsteuerung muss ich über Taskprioritäten und Funktions-Aufrufreihenfolgen > lösen. > Frage hierzu: kann ein Thread sich volle Rechenzeit holen, ohne alle anderen Threads explizit zu kennen? > (halt X; halt Y... geht nur, wenn ich alle laufenden threads namentlich hab; da muss ich alle HALTen > und dann resumen... (und wehe ich vergess einen oder ein threadwechsel funkt dazwischen :-)) > Sind run, halt und resume eigentlich 1 VM-Befehl oder mehrere? > so wie ich das sehe ist auch ein run 255 kein single thread abarbeitung, sondern heisst > 255 OpCodes thread X, dann 32 (oder wieviel ich halt eingestellt hab) OpCodes main, 32 thread Y usw.? > naja, ich werd mal wieder akademisch neugierig, ich machs mit Funktionsaufrufen! > > Zu der Hostmode-Routine: > > <code> > thread waithost// Thread vom main-thread aus starten > { > hwcom.init(); > hwcom.setspeed(8); > loop > { > if hwcom.rxd(); > {//stports.setRel(1,-1); > > /*sobald rel1 an ist, geht "Übertragen" nicht mehr: > main stoppt, c-control antwortet nicht. > Nochmal "Übertragen" funzt dann wieder > (jetzt; hab das alte Prog schon weggeworfen gehabt und jetzt erstmal neu geschrieben... > jetzt gehts besser) > > ohne Rel und sleep: manchmal gehts beim ersten Versuch, manchmal brauchts mehrere... > > die setRel sind als "Debug" stationen drin, die delays zum besseren "Treffen" > der kritischen Zustände im Prog. > > */ > // sleep 500; > if hwcom.get()==254 > {byte x[2]; > // stports.setRel(2,-1); > // sleep 500; > x[1]=hwcom.receive(x,1,1000); > if x[0]==254 and x[1]==1 quit 1;// Hostmode einleiten > } > > // Platz für eigene Schnittstellenroutinen ... > > hwcom.flush(); > } > // weiterer Programm-code ... > > } > } > > /*Meine Version: > > //Hostmode durch 2x 254 per rs232 einleiten. cc2net.de-DLTool, modifiziert: SMy 040824 > thread waithost// Thread vom main-thread aus starten > {byte hostmode, x[2]; > hwcom.init(); > hwcom.setspeed(8); > loop > {if hwcom.rxd(); > {x[2]=hwcom.receive(x,2,10); > if x[0]==254 and x[1]==254 and x[2]==2 quit 1;// Hostmode einleiten > hwcom.flush(); > } > } > } > */ > > > > thread main > {byte i; > run waithost; > stports.init(); //der muss natürlich vor run waithost!! > for i=1...8 > {stports.setLED(i,-1); > sleep 10; > } > stports.alloff(); > } > > > </code>