Parallelport ansteuern

Rund um die LCL und andere Komponenten
chickendev
Beiträge: 37
Registriert: Do 23. Feb 2012, 03:41

Parallelport ansteuern

Beitrag von chickendev »

Hi und guten morgen :-)

hat zufällig jemand ein Beispielprogramm wie mit Hilfe von Lazarus Bits von einem Parallelport ansteuern und auslesen kann?

Ich hab leider nichts passendes gefunden, wenn es sowas nicht gibt dann würde ich mich freuen wenn mir Jemand ein Tipp geben kann wie ich das umsetzen kann.

Vielen Dank :-)

schnullerbacke
Beiträge: 1187
Registriert: Mi 13. Dez 2006, 10:58
OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
CPU-Target: AMD A4-6400 APU
Wohnort: Hamburg

Re: Parpot ansteuern

Beitrag von schnullerbacke »

Gibt es denn derlei überhaupt noch? :roll:
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.

(Ringelnatz)

chickendev
Beiträge: 37
Registriert: Do 23. Feb 2012, 03:41

Re: Parpot ansteuern

Beitrag von chickendev »

schnullerbacke hat geschrieben:Gibt es denn derlei überhaupt noch? :roll:
Ja das gibt es noch:
http://wiki.lazarus.freepascal.org/Hardware_Access/de" onclick="window.open(this.href);return false;

Das Problem ist nur das ich kein funktionierendes Beispiel dafür finde :roll: Ansonsten müsste ich das dann wohl in C machen :(

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Parpot ansteuern

Beitrag von mschnell »

Ein User-Programm kann keine Hardware ansprechen, weder in Pascal noch in C. Du brauchst immer die Unterstützung des Betriebssystems.

Das ist in dem Link erklärt.

-Michael

schnullerbacke
Beiträge: 1187
Registriert: Mi 13. Dez 2006, 10:58
OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
CPU-Target: AMD A4-6400 APU
Wohnort: Hamburg

Re: Parpot ansteuern

Beitrag von schnullerbacke »

chickendev hat geschrieben: Das Problem ist nur das ich kein funktionierendes Beispiel dafür finde :roll: Ansonsten müsste ich das dann wohl in C machen :(
Das ist doch schon die halbe Miete, nun muss man nur noch wissen, dass man mit write(f, textvar) oder writeln(f, textvar) die Ausgabe auf den Port vornehmen kann. Der Parameter f = "file" nimmt als Handle auch die parPort an. Das Handle parPort bietet sich denn auch geradezu an, du kannst aber auch noch mal LPT versuchen, das war in PASCAL früher mal der standardmäßige Port für den Drucker und meinte eben den Paralellport. Also:

Code: Alles auswählen

write(LPT, textvar);
Aber dir ist schon klar, dass man da nur wenig Antworten bekommt? Die Schnittstelle war immer schon für einseitige Kommunikation gedacht.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.

(Ringelnatz)

DiBo33
Beiträge: 334
Registriert: Do 11. Okt 2007, 18:01

Re: Parpot ansteuern

Beitrag von DiBo33 »

Die Schnittstelle war immer schon für einseitige Kommunikation gedacht.


Scanner, Drucker (bidirektional), Datenübertragung zeugen alle von beidseitige Kommunikation.

Eb
Lazarusforum e. V.
Beiträge: 240
Registriert: Di 5. Feb 2008, 15:32
OS, Lazarus, FPC: Linux Mint - Laz 2.2.0
CPU-Target: 64Bit
Wohnort: Stuttgart

Re: Parpot ansteuern

Beitrag von Eb »

Hallo,

Ich habe kein komplettes Beispielprogramm, aber ich lese den Parallelport folgendermassen aus:
(geht unter Linux aber nur als root)

Code: Alles auswählen

uses
  ....
  {$IFDEF WIN32}
   Windows;
 {$ENDIF}
 
 {$IFDEF Linux}
  ports;
 {$ENDIF}
 
 
implementation
  {$IFDEF WIN32}
    function Inp32(wAddr:integer):integer; stdcall; external 'inpout32.dll';
 {$ENDIF}
 
{$IFDEF Linux}
        function ioperm(from: Cardinal; num: Cardinal; turn_on: Integer): Integer; cdecl; external 'libc';
{$ENDIF}
{ Tfrm_main }
 
....


vor dem Auslesen einmalig initalisieren:

Code: Alles auswählen

procedure parallelport_initialisieren(adresse : integer);
var dummy : integer;
 
begin
  try
    {$IFDEF Linux}
       dummy := ioperm(adresse, 8, 1);
    {$ENDIF}
  except
     showmessage('Fehler beim Initialisieren des Parallelports. Adresse: ' + inttostr(adresse))
  end;
 
end;
dann auslesen mit:

Code: Alles auswählen

function parport_wert(parport_adresse : integer) : integer;
begin
  try
      {$IFDEF WIN32}
         result := inp32(parport_adresse);    // 'parallel'
      {$ENDIF}
 
      {$IFDEF Linux}
         port[parport_adresse] := $00;
         result :=  Integer(port[parport_adresse]);
 
      {$ENDIF}
   except
       showmessage('Fehler beim Abfragen des Parallelports in function parport_wert. Adresse: ' + inttostr(parport_adresse));
 
   end;
end;
Vermutlich ist es nicht besonders elegant, tut aber ;-)
Eb

chickendev
Beiträge: 37
Registriert: Do 23. Feb 2012, 03:41

Re: Parpot ansteuern

Beitrag von chickendev »

Cool das hat mir sehe geholfen, dann mache ich das eben mit Linux ist sowieso viel einfacher :-)

wega
Beiträge: 57
Registriert: Di 6. Dez 2011, 15:36

Re: Parallelport ansteuern

Beitrag von wega »

Hallo chickendev,

ich habe noch eine 8-Port-Parallel-Karte RTA100 mit der ich unter Windows vor Zeiten meine Außenbeleuchtung gesteuert habe.
Wenn Du den Parallelport ansprechen kannst, dann stell doch bitte Dein Projekt zum Nachempfinden bitte hier ein.

Gruß Werner

chickendev
Beiträge: 37
Registriert: Do 23. Feb 2012, 03:41

Re: Parallelport ansteuern

Beitrag von chickendev »

wega hat geschrieben:Hallo chickendev,

ich habe noch eine 8-Port-Parallel-Karte RTA100 mit der ich unter Windows vor Zeiten meine Außenbeleuchtung gesteuert habe.
Wenn Du den Parallelport ansprechen kannst, dann stell doch bitte Dein Projekt zum Nachempfinden bitte hier ein.

Gruß Werner
Ach sowas gibt es 8x ParPort? :D - Ist die ISA oder PCI ?


Hallo, vielen Dank für die nette Hilfe und die ganzen Antworten. Ich habe Hardwaremäßig bereits geschafft einzelne Schaltmodule für den Parport zu bauen (2 von 8). Geschaltet wird mit Mosfets anstelle von Relais, aber das ist uninteressant.

Zu meinem eigentlichen Projekt, ich wohne im Landwirtschaftlichen Bereich und wollte eine vollautomatische Computergesteuerte Brutmaschine für Hühner bauen, da die im Handel erhältlichen zum einen teuer,ungenau und nicht anpassbar sind. So werden dann mit Hilfe von Tempratur und Feuchtigkeitssensoren Belüftung, Befeuchtung etc. per Programm gesteuert. Ich könnte das natürlich auch über ein embedded System machen, gefällt, ist aber am PC einfacher.

Ein Hardwaretechnisches Problem steht noch mit dem Eingängen offen, da muss ich mich aber ein wenig noch einlesen. So wie ich verstanden habe werden bei dem LPT auch noch 5 Inputs bzw. Flags aus dem Druckerbereich zu Verfügung gestellt, hat jemand zufällig so etwas schon praktisch verwendet?

Im Moment benutze ich einfaches VisualBasic Programm für das schalten der Bits - zum testen meiner Arbeit.

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Parallelport ansteuern

Beitrag von mschnell »

Eine "Professionelle" Lösung wäre so etwas:

http://www.wut.de/e-57634-ww-dade-000.php?pf=249" onclick="window.open(this.href);return false;

Hier sieht der PC und die Software nur TCP/IP/Ethernet und ist damit Hardware- und Standort unabhängig, "Im Stall" stehen dann nur noch solche kleinen Kisten.
Gibts natürlich auch als Input für die Messwerte oder auch direkt als Temperatur-Regler: http://www.wut.de/e-57616-ww-dade-000.php?pf=327" onclick="window.open(this.href);return false; ).

-Michael

schnullerbacke
Beiträge: 1187
Registriert: Mi 13. Dez 2006, 10:58
OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
CPU-Target: AMD A4-6400 APU
Wohnort: Hamburg

Re: Parallelport ansteuern

Beitrag von schnullerbacke »

chickendev hat geschrieben:
Zu meinem eigentlichen Projekt, ich wohne im Landwirtschaftlichen Bereich und wollte eine vollautomatische Computergesteuerte Brutmaschine für Hühner bauen, da die im Handel erhältlichen zum einen teuer,ungenau und nicht anpassbar sind. So werden dann mit Hilfe von Tempratur und Feuchtigkeitssensoren Belüftung, Befeuchtung etc. per Programm gesteuert. Ich könnte das natürlich auch über ein embedded System machen, gefällt, ist aber am PC einfacher.
Im Moment benutze ich einfaches VisualBasic Programm für das schalten der Bits - zum testen meiner Arbeit.
Wäre da nicht die ne serielle oder USB Schnittstelle geeigneter? Bei den parPorts sollte man keine Leitungslänge > 0,7m haben, sonst gibt es satte Verluste und das ganze wird langsam. Abgesehn davon, das man mit MC-gesteuerten Systemen viel mehr möglichkeiten hat. Guck mal bei Franzis, da gibt es ne Karte mit MC für um die € 30,- mit nem 16-Bit Controler und Programmier-System, das ganze läuft über die USB-Schnittstelle.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.

(Ringelnatz)

chickendev
Beiträge: 37
Registriert: Do 23. Feb 2012, 03:41

Re: Parallelport ansteuern

Beitrag von chickendev »

Hi,

die TCP/IP Lösung ist natürlich nicht schlecht. Das Gerät wird in der Wohnung unmittelbar neben einem MicroPC stehen. Ich könnte das natürlich auch anders machen aber im Moment muss ich mich erst einmal an die Mechanik und den Steuerprozess kümmern. Danach könnte man das beliebig weit positionieren.

Wieso ist ein serieller Port besser geeignet (also unabhängig des Entfernungsvorteils)?

Da ich das Ganze zu Testzwecken so kostengünstig wie möglich bauen wollte hatte ich noch die Idee gehabt danach noch von dem seriellen Port gebrauch zu machen.

schnullerbacke
Beiträge: 1187
Registriert: Mi 13. Dez 2006, 10:58
OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
CPU-Target: AMD A4-6400 APU
Wohnort: Hamburg

Re: Parallelport ansteuern

Beitrag von schnullerbacke »

chickendev hat geschrieben:Hi,
Wieso ist ein serieller Port besser geeignet (also unabhängig des Entfernungsvorteils)?
Deutlich höhere Übertragungsgeschwindigkeiten und im Prinzip unendlich grosse Datenpakete. Man kann sich sein Protokoll leicht selbst entwickeln und damit dann im Normalfall schon bis 30m Kabel verwenden. Bei USB können es, entsprechende Maßnahmen vorausgesetzt, bis zu 100m sein.
Du könntest einen Teil der Steuerung automatisieren und direkt vom MC-System erledigen lassen und nur noch die jeweiligen Aktionen an den PC melden, der könnte dann per Programm eingreifen oder eine lautstarke Warnung erzeugen.
Das MC-System bei Franzis war früher mal unter einem anderen Namen bekannt und ich hatte das in der Technikerschule als Grundlage für solche Systeme. Ist sehr leistungsfähig und sehr flexibel, also genau das richtige für solche Aufgaben. Dazu gibt es ein Programmiersystem in verschiedenen Sprachen, unter anderem auch C.

Man kann das später sogar als Systemlösung verkaufen.

Schau dir mal diese Links an:

http://en.wikipedia.org/wiki/Arduino

http://www.amazon.de/dp/3645650644/ref= ... 3645650644

und hier noch was für's Netzwerk:

http://www.pollin.de/shop/dt/MTQ5OTgxOT ... ET_IO.html

von da kannst du dich weiterhangel, bei Conrad gibt es das auch, aber Conrad ist ne Apotheke.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.

(Ringelnatz)

chickendev
Beiträge: 37
Registriert: Do 23. Feb 2012, 03:41

Re: Parallelport ansteuern

Beitrag von chickendev »

das ist ja cool!

http://www.pollin.de/shop/dt/MTQ5OTgxOT ... ET_IO.html" onclick="window.open(this.href);return false;

Ist das genauso einfach zu benutzen wie der LPT ? (wegen den digitalen Ausgängen)?
Ich habe von Elektronik nicht so viel Ahnung.

Antworten