[Delphi 5] Parallelle poort aanroepen ?

Pagina: 1
Acties:

  • Mephix
  • Registratie: Augustus 2001
  • Laatst online: 25-11-2025
8 leds aangesloten op parallelle poort, wil ze nu zelf aan de praat krijgen.

Ben al paar dagen druk op het internet aan zoeken, maar kom er steeds niet uit. Of ik stuit op source codes waar voor betaald moet worden. Kan dit niet op een simpele manier? Ben wel beetje noob.. take it easy ;)

  • Fuzzillogic
  • Registratie: November 2001
  • Laatst online: 01-07-2025
Zie WinIO op http://www.internals.com

De voorbeelden zijn in C en VB, maar het is zo loeisimpel dat iemand met een beetje Win32-kennis het toch ook wel in Delphi aan de praat moet krijgen :)

  • Mephix
  • Registratie: Augustus 2001
  • Laatst online: 25-11-2025
voor jou ongetwijfeld simpel.. ik krijg zo'n dll niet eens in delphi aangroepen.
code:
1
2
3
4
procedure TForm1.Button1Click(Sender: TObject); external 'WinIo.dll';
begin
  // En nu... 
end;

Ik snap de vb code wel redelijk, maar daarmee heb ik het in delphi niet aan de gang natuurlijk

Verwijderd

dlportio is ook gratis en werkt prima onder delphi.

  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 06:09

Tomatoman

Fulltime prutser

voor jou ongetwijfeld simpel.. ik krijg zo'n dll niet eens in delphi aangroepen.
Begin dan daar maar eens mee. Waarschijnlijk ontkom je hier niet aan.

Een goede grap mag vrienden kosten.


  • pasz
  • Registratie: Februari 2000
  • Laatst online: 16-08 23:04

woei!


Verwijderd

tja je moet schrijven naar de processor poort van lpt1, adres staat in je BIOS. Schrijven naar zo'n poort kan simpel genoeg als het alleen onder 9x/ME hoeft te draaien. Wat je erheen moet schrijven weet ik ook niet (een excerpt van HelpPC staat onderaan) maar zo moet het:

(n.b. dit 'mag' dus niet heh, maar we doen het toch)

--[ delphi code ]--

Procedure PortOut(Port: Word; Value: Byte); assembler;
asm
mov dx, Port
mov al, Value
out dx, al
end;

Procedure PortOutW(Port: Word; Value: Word); assembler;
asm
mov dx, Port
mov ax, Value
out dx, ax
end;

Procedure PortOutDW(Port: Word; Value: DWord); assembler;
asm
mov dx, Port
mov eax, Value
out dx, eax
end;

Function PortIn(Port: Word): Byte; assembler;
asm
mov dx, Port
in al, dx
mov Result, al
end;

Function PortInW(Port: Word): Word; assembler;
asm
mov dx, Port
in ax, dx
mov Result, ax
end;

Function PortInDW(Port: Word): DWORD; assembler;
asm
mov dx, Port
in eax, dx
mov Result, eax
end;

--[ einde delphi code ]--

HelpPC had het volgende over de paralelle poort (data) te melden:


Port 278/378/3BC printer data output (readable)

Bit:
0: data bit 0, hardware pin 2
1: data bit 1, hardware pin 3
2: data bit 2, hardware pin 4
3: data bit 3, hardware pin 5
4: data bit 4, hardware pin 6
5: data bit 5, hardware pin 7
6: data bit 6, hardware pin 8
7: data bit 7, hardware pin 9

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:25

Creepy

Tactical Espionage Splatterer

Op maandag 22 april 2002 22:14 schreef Mephix het volgende:
voor jou ongetwijfeld simpel.. ik krijg zo'n dll niet eens in delphi aangroepen.
code:
1
2
3
4
procedure TForm1.Button1Click(Sender: TObject); external 'WinIo.dll';
begin
  // En nu... 
end;

Ik snap de vb code wel redelijk, maar daarmee heb ik het in delphi niet aan de gang natuurlijk
De functies eerst los declareren. Een functie uit een DLL kan je niet zomaar aan je buttonklik o.i.d. hangen
code:
1
2
3
4
5
6
7
8
9
10
procedure OutPort(out,port: byte); stdcall; external 'WinIO.dll'
// De stdcall niet vergeten, Delphi geeft de paramters anders door dan bijv C.


procedure TFOrm1.Button1Click;
begin
     // code hiero
     OutPort(16,$378);
     // meer code hiero
end;

Dit is maar een voorbeeld he, ik heb geen idee wat er in die WinIO.dll zit. Zelf gebruik ik DLPortI/O hiervoor (in Delphi..)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Mephix
  • Registratie: Augustus 2001
  • Laatst online: 25-11-2025
Op dinsdag 23 april 2002 01:24 schreef AEJT het volgende:
tja je moet schrijven naar de processor poort van lpt1, adres staat in je BIOS. Schrijven naar zo'n poort kan simpel genoeg als het alleen onder 9x/ME hoeft te draaien. Wat je erheen moet schrijven weet ik ook niet (een excerpt van HelpPC staat onderaan) maar zo moet het:

(n.b. dit 'mag' dus niet heh, maar we doen het toch)

[..]
Privileged instruction.. werkt niet onder W2K.. was wel te verwachten overigens. Overigens lijkt dit wel veel op de VB code. En ook op die van de c code van een ander programma.

Naja, ik schuif voorlopig dit probeersel op de lange baan, ik heb gewoon te weinig kennis over programmeren in Delphi om er mee uit de voeten te kunnen. Thnx iig

  • Mephix
  • Registratie: Augustus 2001
  • Laatst online: 25-11-2025
WHAAAHOOOEEE !!! omg..

http://home.pacifier.com/~jgibbon/program_tip_1.htm

hiermee heb ik um aan de praat! DLportI/O. 2e unit aangemaakt (das al heel wat voor mij haha) en daar die volledige Delphi code in gezet. Dan deze code in Unit1:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, DlPortIO_INTF;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
  DlPortWritePortUchar(888,1);
end;
end.

en het werkt ook nog.. dank is groot
Pagina: 1