Announcement

Collapse
No announcement yet.

nochmal inp/outp

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • nochmal inp/outp

    Bei NT kommt Error-Message:
    "Privilegierte Anweisung"
    - nichts passiert und bei Win98 kommt kein Fehler, aber es passiert trotzdem nicht.

    Was mache ich falsch ?

    unit Main;

    interface

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

    type
    TForm1 = class(TForm)
    Pin4_aus: TButton;
    Pin4_ein: TButton;
    procedure Pin4_ausClick(Sender: TObject);
    procedure Pin4_einClick(Sender: TObject);
    private
    { Private-Deklarationen}
    public
    { Public-Deklarationen}
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.DFM}
    function InPort(PortAddr: Word): Byte;
    {$IFDEF WIN32}
    assembler; stdcall;
    asm
    mov dx,PortAddr
    in al,dx
    end;
    {$ELSE}
    begin
    Result := Port[PortAddr];
    end;
    {$ENDIF}

    procedure OutPort(PortAddr: Word; DataByte: Byte);
    {$IFDEF WIN32}
    assembler; stdcall;
    asm
    mov al,DataByte
    mov dx,PortAddr
    out dx,al
    end;
    {$ELSE}
    begin
    Port[PortAddr] := DataByte;
    end;
    {$ENDIF}

    // Ende meine Proceduren
    procedure TForm1.Pin4_ausClick(Sender: TObject);
    begin
    OutPort($03F8+4,0);
    end;

    procedure TForm1.Pin4_einClick(Sender: TObject);
    begin
    OutPort($03F8+4,1);
    end;

    end.

  • #2
    <i>> Was mach ich falsch?

    WinNT lässt im Gegensatz zu Win95/98 nun mal keine direkte Zugriffe über die Ports zu, damit alles ganz sicher ist und WinNT nie abstürtz (böse Zungen behaupten es stürze trotzdem ab...)

    Abhilfe schafft nur ein ordentlicher Treiber. Diesen zu entwickeln geht so: Tool bei Microsoft für viel Geld holen, sich durch Kilometer von Dokumentation hangeln und Stunden investieren.

    Bei der Seriellen Schnittstelle lässt sich immerhin noch über das WinAPI zugreifen. Will man aber die Serielle Schnittstelle anders einsetzen, z.B. als Synchone oder als digitale Ein-/Ausgänge, sieht es schlecht aus....

    Gruss
    Andy

    [email protected]

    Comment


    • #3
      danke,

      frohe weihnachten,

      kh

      Comment


      • #4
        In der c't stand glaube ich mal ein Artikel wie man die Ports fuer ein Userprogramm unter NT freigibt. Jemand mit den ct ROMs soll doch mal danach suchen

        Comment


        • #5
          Unter http://software-tools.com/components_dev/Windows_NT_Support/ gibt es ein Stueck Software zur Freigabe des IO-Bereiches fuer User-Mode-Programme, mit dem ich gute Erfahrungen gemacht habe. Der reine Portzugriff funktioniert tadellos. Wenn's zeitkritischen wird helfen evtl. entsprechende Privilegierungen. Kleiner Tip, der Treiber kann nach der Erstinstallation natürlich automatisch vom System geladen und gestartet werden.

          Gruss und guten Rutsch

          Andreas

          [email protected]

          Comment


          • #6
            Danke, ich probiere es aus.

            Guten Rutsch

            kh

            Comment

            Working...
            X