Moins, also ich habe mich in den letzten tagen etwas mit der ansteuerung des Druckerprots beschäftigt. Also ein paar leds hängen auch dran und blinken fleißig. Álles läuft eigendlich aber da währe noch was. Das Programm was ich geschrieben habe läuft über eine gewisse zeit also es hört nicht auf zu "arbeiten". Ist halt ein lauflicht. So jetzt zum Problem und zwar solange das prog läuft hängt der rechner. Was kann ich dagegen tun??? Ich habe mal was über thread programmierung (ich hoffe richtig geschrieben) gelesen. Kann man das damit realiesieren?? Oder ist das was anderes? Prog im anhang!
nun eine kleine frage bidde... windows ? wenn ja 9x oder nt bzw ähnliche (nt,2k,xp) dos ? linux ? unter windows würd ich die mfc reincompilieren und dann mit AfxBeginThread den thread starten... da du aber gesagt hast der computer hängt... nehm ich stark an du arbeitest unter dos...richtig ??? dort bräuchtest eine multithreading erweiterung...da gibts so task-switcher (oder context switcher) die schon jahrelang eingesetzt werden... hin und wieder... einfach mal googlen ;) sonnst wär da noch die möglichkeit den rtc-interrupt zu überschreiben und dort das lauflicht reinzutun...unter dos möglich... 73 de oe6jwf
Hi Knecke, ein Thread würde sich hier schon anbieten, da Du das Programm sonst auch nicht durch irgendeinen Tastendruck o.ä. unterbrechen kannst. Wenn Du im Thread dann an irgendeiner Stelle ein Sleep(1) einbaust, kann der Scheduler des Betriebssystems dann auch die anderen Threads hin und wieder ranlassen, so dass der Rechner nicht hängt und auf Eingaben reagieren kann. Gruß Andreas
Das BS ist windows 95, ich hab das programm unter xp getestet. unter xp hängt es nicht mehr so stark (sorry für diese beschreibung). Ich muss alerdings noch sagen ich benutze den Borland C++ 3.1 compiler. Also beim start erhalte ich nur ein Fenster mit den Cout text. Ist das dann ein Windows programm oder nicht, hat das damit überhaupt was zu tun?? Also die sache ist die ich will später die schaltung etwas erweitern zum einlesen von daten. dazu müsste ich die eingänge ständig abrufen. So wie es jetzt aussieht würde das heißen das das programm alles andere blockiert. Deswegen bräuchte ich ein "Programm" (Thread??) was mir die daten im hintergrund also ohne den rechner voll auszulasen ausliest. danke für die antwort knecke
Kann mir noch jemand sagen wo ich im Internet nachlesen kann wie man so ein thread programmiert. Oder gibt es da "gut" Bücher die sowas beinhalten. ich kenne mich in C nur ein wenig aus. Ich sach mal "Hallo ich bin ein C-Programm" und ein bisschen mehr. mfg knecke
das probelm ist das du einen win32 compiler brauchst... weil das borland teil ist meines erachtens schon recht alt... lad dir einfach von der borland seite den aktuellen runter... zumindest gabs mal die command line-tools gratis... oder hol dir irgendwo her das visual-studio von microsoft..aber bitte das 6er...das 5er is nicht so konfortabel und das 7bener...naja... .net halt ;P wenn du doch lieber ohne mfc herumbastelst... halt den von borland...die api-funktion heisst CreateThread ... beschreibung z.b unter msdn.microsoft.com ;) viel spass & 55 de oe6jwf
Danke erstmal für die antworten. Ich werde mich dann mal ein bisschen einarbeiten. MFG knecke
Ich glaube nicht, daß Dein Problem mit der Thread-Programmierung gelöst wird. Du benutzt den alten Borland-Compiler. Dabei mußt Du mit outp auf den Port zugreifen. Unter Windows 95/98/NT.... sollte dies mit WriteFile erfolgen. Ob das allerdings auch für den parallelen geht weiss ich nicht. Auf jeden Fall läßt dadurch Windows die anderen Programme zum Zug kommen. Versuch einfach mal in Deine Delay-Funktion ProcessMessages(); aufzurufen. Damit sagst Du Windows, daß die anderen Programme jetzt dürfen. Falls der Borland diese Funktion nicht kennt, besorg Dir einfach den dev-c++ incl. Compiler (http://www.bloodshed.net/) und compilier dein Programm neu. Dabei weiss ich definitiv, daß es geht. Wenn Du dann immer noch die Thread-Programmierung brauchst, melde Dich nochmal. Ich habe das für die serielle Schnittstelle schon gemacht. Weiss aber im Moment nicht wo ich es habe. Grüße Andreas
Hi, du willst später noch was über LTP einlesen? Und erzeugst ein Lauflicht mit Warteschleifen? Hab es zumindest mal so verstanden.. Wenn du einfach die Warteschleifen einige zyklen kürzer machst kannst du deinen restlichen Programmcode da noch mit einbringen! Jedoch hat der Rechner danach noch immer die selbe Prozessorlast wie bisher. Aber ggf. stört es ja nicht wenn sonst nichts laufen muß! Stefan
<quote> AndreasH Wenn Du dann immer noch die Thread-Programmierung brauchst, melde Dich nochmal. Ich habe das für die serielle Schnittstelle schon gemacht. Weiss aber im Moment nicht wo ich es habe. </quote> Sowas müsste ich auch machen (bau einer kleinen wetterstation), könntest du mir evtl. dies schicken, falls es noch vorhanden ist? wäre froh über eine art "vorlage" per mail an mich falls möglich wär ganz nett ;), ned das ein fremder thread missbraucht wird ;) vielen dank rafiK
Also ich habe mal ein bißchen mit server programierung rumgespielt. also ich ahbe damals unter windows threads gebraucht, sonst hing der server immer bis wieder nen Net Paket reinkam. Ich in dem Fall ja nicht anders, bei dir kommt nur nen LPT, Paket. Also ich würde das Programm in drei Threads unterteilen, Einer zum senden, einer zum empfangen und einen Hauptthread der die steuerung und verarbeitung macht. Die kommunikation zwischen thred funktioniert über buffer. Zb. der hauptthread schreibt nen byte in den Buffer (Sende thread) und der sendthread erkennt das, und schickt es raus. Für die ganze realiesierung kann ich SDL empfehlen. http://www.libsdl.org/index.php. Es ist recht einfach zu implementieren und gibt der gute Werkzeuge an die Hand, mit denen du auch System unabhängig bist, es ist fast egal ob du unter WIn / linux ... enwickelst. Aber ich kann dir sagen das thread progrmaierung schon etwas aufwendiger werden kann ;) mfg Matthes
Man kann auch eine Iterruptserviceroutine schreiben, denn der Parallelport hat ja einen Interrupt.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.