Forum: PC-Programmierung LPT Port in C ansteuern


von der T. (derturke)


Lesenswert?

Hallo leute

hab mal ne Frage hab jetzt auch schon alle foren abgeklappert! Ich suche 
Quellcode zum Ansprechen des LPT Ports Für ein lauflicht! Ich benutzte 
Windows XP und Visual Studio 2005. Habe auch schon ein Beispiel Programm 
gefunden Finde das Aber zu umfangreich kennt einer ne Seite Wo ein 
Kleiner Quellcode steht um LED an un auszuamchen???
Habe da was mit CreateFile WriteFile gehört finde aber nix bestimmtes! 
Welche Header dateien brauch ich ????
Soll so abgespeckt wie Möglich sein???

Das ganze soll so laufen habe ein Emuliertes Betriebsystem Osek das ein 
lauflicht steuert will die dort eingestelleten LED mit dem LPTport 
gleichsetzten damit das lauflicht auf meinen led geht!!!


MFG
DerTurk

: Gesperrt durch Moderator
von Stefan B. (stefan) Benutzerseite


Lesenswert?

Moment da gibt es Infos auf http://www.codeprject.com isch schau mach, 
ob ich den exakten Link finde...

Grundlagen

Hardware Interface Programming in VC++ - Part I (Port Access)
By Jaygiri
http://www.codeproject.com/KB/system/ppsc.aspx

Parallel Port Pin Control Library (PaPiC) (C++)
By gordius
http://www.codeproject.com/KB/system/PaPiC.aspx

Reading from Parallel Port using Inpout32.dll (VB)
By phebejtsov
http://www.codeproject.com/KB/vb/Inpout32_read.aspx

I/O Ports Uncensored - 1 - Controlling LEDs (Light Emiting Diodes) with 
Parallel Port (C++)
By Levent Saltuklaroglu
http://www.codeproject.com/KB/cs/csppleds.aspx

I/O Ports Uncensored Part 2 - Controlling LCDs (Liquid Crystal Displays) 
and VFDs (Vacuum Fluorescent Displays) with Parallel Port (C++)
By Levent Saltuklaroglu
http://www.codeproject.com/KB/cs/cspplcds.aspx

Anwendungen

Controlling Floppy Drive Stepper Motor via Parallel Port (C++, .NET)
By Ashish Derhgawen
http://www.codeproject.com/KB/system/floppystepper.aspx

Stepper Motor Control through Parallel Port (Vscript, VB)
By bhaskar_gupta
http://www.codeproject.com/KB/vbscript/Stepper_Motor_Control.aspx

Control Electrical Appliances using PC (C#)
By Taha Amin
http://www.codeproject.com/KB/cs/control_e_appliances.aspx

Computer Controlled Watering System with C# or VB.Net
By Troy Simpson
http://www.codeproject.com/KB/dotnet/ezSprinkle.aspx

von Stefan B. (stefan) Benutzerseite


Lesenswert?

@ Der Türke

Was du mit OSEK meinst, verstehe ich nicht.

Die Links oben sind zum Steuern von einfacher Hardware an einem 
Parallelport aus Windows heraus, wobei die Programme mit verschiedenen 
Sprachversionen von Visual Studio geschrieben sind.

von der T. (derturke)


Lesenswert?

@ stefan Mit osek meinte ich das ist ein Betriebssytem das am PC 
simuliert also TASK Interrupts unsw... diese sollen am Druckerport 
sichtbar gemacht werden hoffe konnte das jetzt irgendwie 
beschreiben...!!

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Wenn dein Programm unter einem anderen Betriebssystem (OSEK oder 
emuliertes OSEK) laufen soll, musst du dich ja an die 
Programmierschnittstellen (API) des OSEK halten, d.h. die API von 
Windows bringt dir überhaupt nichts.

Du machst eigentich eine Crosscompilierung von Windows aus für OSEK. Die 
Links oben sind dann softwareseitig "wertlos"; lediglich die Erklärungen 
zur Hardware kannst du dir reinziehen.

Oder du kannst die Sache mit den Links oben erstmal unter Windows 
durchziehen und später versuchen mit dem gewonnenen Verständnis und der 
Windows-Programmlogik das OSEK-Programm zu machen. Das kann die 
Entwicklung beschleunigen oder verzögern; das weiss man im Voraus nicht 
genau.

Reine Neugier: Gibt es einen Emulator für OSEK (und das dazugehörige 
Software Development Kit (SDK)) zum kostenlos Testen/Lernen?

ADD:
Eine "Falle" kann der OSEK Emulator an sich sein.

Bist du sicher, dass der Emulator auch die Hardware (Parallelport) 
ansprechen kann oder ist es ein reiner Softwareemulator, der nur 
virtuelle Hardware anbietet (Beispiel AVR Simulation im AVR Studio)?

Im schlechtesten Fall kommst du nämlich aus dem Emulator 
programmiertechnisch gar nicht raus an den physikalischen Parallelport.

Gibt es Internetseiten, wo der Emulator genauer beschrieben ist?

ADD2:

Die vielen Fragen kommen, weil ich in deiner Frage zum ersten Mal von 
OSEK (genauer OSEK-OS) gelesen habe. Wikipedia oder die Seite des 
Herstellers sind nicht soerklärend, daher direkt die Fragen an den 
Anwender (dich, wenn du schon mal da bist ;-)

von der T. (derturke)


Lesenswert?

also man definerit seine Task Interupts in nem Kleinen Programm ProOsek 
das dann die dazugehörige .C und .H liefert die man in sein Projekt 
einbinden kann.dann hab ich mir halt en demoprogramm geschrieben mit den 
TASK der dann das ganze verhalten von osek emuliert also rein software 
!!! also ich bekomm ein lauflicht hin mit osek aber halt simuliert mit 
nullen auf nem DOS fenster will eigentlich jetzt statt der Nullen das 
so steuern das die led an meiner platine leuchten

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Zumindest gibt es Literatur und eine Demoversion

OSEK. Betriebssystem-Standard für Automotive und Embedded Systems
von Matthias Homann
http://www.mitp.de/vmi/mitp/detail/pWert/1552/titel/OSEK.%20Betriebssystem-Standard%20f%C3%BCr%20Automotive%20und%20Embedded%20Systems

von Stefan B. (stefan) Benutzerseite


Lesenswert?

> Nullen im DOS-Fenster bei Ausgabe innerhalb von OSEK.

Das hört sich fast schon wie ein geschlossener Softwareemulator an, bei 
dem du nicht an die Hardware des drunterliegenden PCs heran kommst. 
Vorausgesetzt du benutzt schon die richtigen API-Funktionen und keine 
einfache Textausgabe.

Ich kann dir ohne genaue Kenntnis der API von OSEK und des Emulators 
nicht weiterhelfen. Vielleicht findest du ja noch Referenzen/Links im 
Netz; ich stöbere auch noch etwas rum (im Fernsehen kommt sowieso 
nichts).

von der T. (derturke)


Lesenswert?

Ja das Buch habe ich ja !!! Die API hab ich vor mir weis aber net was 
ich genau suchen soll :-( das Demo das das lauflicht macht habe ich aus 
diesem Buch...!!!

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Dann kommen wir der Sache schon näher.

Der OSEK Emulator ist also "Auf CD:
Demoversion (zeitlich unbegrenzt) von ProOSEK 4.0 für Windows 2000, NT 
und XP; Beispiele aus dem Buch".

Da brauche ich die anderen 23 OSEK Anbieter nicht mehr abklappern und 
kann mich bei der Recherche auf ProOSEK konzentrieren ;-)

Ich ziehe mir jetzt das Probekapitel und das Inhaltsverzeichnis rein, um 
herauszufinden, ob das Konzept und die Fähigkeiten des Emulators dort 
näher beschrieben sind.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Ziemlich zäh das Ganze.

Proosek gab es vom 3Soft GmbH und war eine bekannte Software. Um 2002 
tauchte dann die Software tresos ecu auf. 2004 wurde 3Soft von 
Elektrobit geschluckt. Elektrobit heisst jetzt EB. Und 2007 findet man 
auf der EB Seite bei der Suche nach Proosek nichts mehr.

ADD:
2004 ist obiges Buch rausgekommen - passt.

ADD2:
In den Bibliotheken in meiner näheren Umgebung ist das Buch leider nicht 
vorhanden.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

In Fulda, Kassel und Giessen ist das Buch ausleihbar. Auch in 
Braunschweig, Bremen, Göttingen, Hamburg, Ilmenau, Jena, Köthen, Lübeck, 
Merseburg, Potsdam, Stralsund. Berlin sowieso und merhfach. Und im 
Wilden Süden auch:  Würzburg, Landshut, Regensburg, Ingolstadt, Coburg, 
Nürnberg, München, Aschaffenburg,   Erlangen-Nürnberg. Auch in der Mitte 
gibt es das Buch: Dresden, Esslingen, Furtwangen, Heidenheim, Heilbronn, 
Karlsruhe, Konstanz, Mannheim, Offenburg, Reutlingen, Tübingen, Ulm. Nur 
nicht hier OK Fernleihe ginge ;-)

von der T. (derturke)


Lesenswert?

ich hatte mal die API auf englisch finde sie aber nicht verdammt...!!!

von der T. (derturke)


Lesenswert?

OK ein lauflicht habe ich jetzt endlich mal hingekriegt versuche es 
jetzt mal mit der Demo version vom ProOesk zu koppeln ob das dann auch 
noch geht!!!
mal sehn!!!

von Oliver D. (highspeed-oliver)


Lesenswert?

Hallo,

gibts denn auch echte C tutorials dazu?


Ich möchte eigentlich nicht mit Visual basic oder c++ anfangen.

Ein Tutorial, welches den Parallel port in C behandelt währe gut.

Wo gibts sowas?

von Compy (Gast)


Lesenswert?

Bei den mir bekannten OS regelt man Parallelport-Zugriffe eigentlich 
direkt auf Registerebene.

Linux
ioperm(), outb() und inb() sind deine Freunde
Guck: http://tldp.org/HOWTO/IO-Port-Programming-6.html#ss6.1

DOS
Gibt's auch ein outb(), aber die Parameter sind vertauscht.

Im Zweifelsfall (und wenn man auf Portabilität verzichtet) tuns 
Assembler-Inlines auch.

von Karl H. (kbuchegg)


Lesenswert?

Oliver D. wrote:
> Hallo,
>
> gibts denn auch echte C tutorials dazu?
>
>
> Ich möchte eigentlich nicht mit Visual basic oder c++ anfangen.
>
> Ein Tutorial, welches den Parallel port in C behandelt währe gut.

Du brauchst für Windows einen Treiber, der den Port
allokiert und dir den Zugriff darauf gestattet.
So was zum Bleistift

http://www.driverlinx.com/DownLoad/DlPortIO.htm

Da sind auch Demos mit dabei. Ist sehr einfach anzusteuern.

von Compy (Gast)


Lesenswert?

Oder versuchs mal mit Windows95, damals gab's nämlich diese Ansätze von 
Zugriffsrechten noch nicht, und man konnte direkt aufm Port rumkritzeln.

Bei WinNT aufwärts (denk ich) hat man diese Versuche mit Restriktionen 
aber halt unternommen, und dann braucht man eben die von  Karl heinz 
Buchegger angesprochenen "Tricksereien".

von Rolf Magnus (Gast)


Lesenswert?

> Bei den mir bekannten OS regelt man Parallelport-Zugriffe eigentlich
> direkt auf Registerebene.
>
> Linux

Da regelt man das "eigentlich" gar nicht so. Es gibt schließlich den 
parport-Treiber, mit dem man sauber über das Betriebssystem auf den 
Parallelport zugreifen kann. Hat den Vorteil, daß man nicht von Hand mit 
irgendwelchen Registern fummeln muß, daß das Programm nicht spezifisch 
auf eine bestimmte Hardware eingeschränkt wird, daß man zum Ausführen 
nicht root sein muß und daß ein Programmfehler nicht gleich das ganze 
System lahmlegen kann.

von der T. (derturke)


Lesenswert?

So jungs hab jetzt ne weile rumgeforscht bis ich was gescheites gefunden 
habe!
Habe nun folgendes Problem:
Ich habe auf der seite http://home.snafu.de/mgrafe/treiber.htm den 
Giveio treiber gefunden und Instaliert so wie es in der anleiteung 
beschrieben ist mein problem ist aber wenn ich einen einfachen code

#include <stdio.h>
#include <conio.h>

#define LPT1 0x378

main(){

_outp(LPT1,0x011);

return 0;
}


eingebe kompailiert er zwar den Code bringt aber folgende fehler 
meldung:

Unbehandelte Ausnahme bei 0x102708ab(msvcr80d.dll) in test.exe:
0xC0000096:Privileged instruction.


der treiber sollte dazu dienen auf das LPT port unter windoes XP 
zuzugreifen aber das macht der nicht??? Hat jemand rat???



MFG
Der_Turk

von der T. (derturke)


Lesenswert?

Ok habs hinbekommen man musste noch eine Funktion giveio schreiben

int giveio(void)
{
   OSVERSIONINFO osvi;
   int ret = 1;

   osvi.dwOSVersionInfoSize = sizeof osvi;
   GetVersionEx(&osvi);
   if (osvi.dwPlatformId == VER_PLATFORM_WIN32_NT)
   {
      HANDLE h;
      h = CreateFileA("\\\\.\\giveio", GENERIC_READ, 0, NULL, 
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
      if (h == INVALID_HANDLE_VALUE)
         ret = 0;
      else
         CloseHandle(h);
   }
   return ret;
}


aber wenn ich jetzt das Programm laufen lass geht es nur 1 wert eingebe 
wie zum BSP :_outp(LPT1,7);

wenn ich es mit ner Forschleife mache kommt immer der fehler
Syntaxfehler:Es fehlt ';'vor 'Typ'
'a':nichtdeklarierter Bezeichner


ich peil gar nix mehr und das ist der Code zudem der Fehler kommt
giveio();
int a;
for (a=0;a<255;a++)
_outp(LPT1,a)


return 0;

}
ich rasste aus was will den der Compiler noch ich seh kein logischen 
fehler??????? HHEEEEEEEEEEEEELLLLPPPPP

von Stefan B. (stefan) Benutzerseite


Lesenswert?

1
int main(void)
2
{
3
  int a;
4
5
  giveio();
6
7
  for (a=0;a<255;a++)
8
    _outp(LPT1,a);     // <== ; nicht vergessen!
9
10
  return 0;
11
}

Beitrag #6650705 wurde von einem Moderator gelöscht.
Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.