www.mikrocontroller.net

Forum: PC-Programmierung Ausgabe über LPT-Port


Autor: knecke (Gast)
Datum:
Angehängte Dateien:
  • LED.txt (843 Bytes, 175 Downloads)

Bewertung
0 lesenswert
nicht lesenswert
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!

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: hebel23 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: knecke (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: knecke (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: knecke (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke erstmal für die antworten.
Ich werde mich dann mal ein bisschen einarbeiten.

MFG knecke

Autor: AndreasH (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: RafiK (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
<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

Autor: AndreasH (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
email ist unterwegs

Autor: nobody0 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man kann dafür auch Posix-Threads nehmen.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: RafiK (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für all die Infos... werde mir mal alles in Ruhe
anschauen...

Autor: nobody0 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man kann auch eine Iterruptserviceroutine schreiben, denn der
Parallelport hat ja einen Interrupt.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.