Keresés

Új hozzászólás Aktív témák

  • salazol

    őstag

    válasz sonar #21 üzenetére

    Elküldhetem az a procedure-t, ami a párhuzamos porton irást végzi.
    De a legfontosabb, hogy a kijelző, amit kezelni akarsz, milyen felületen irható. Úgy tudom, ezek gyakorlatilag kivétel nélkül egybe vannak építve a vezérlőjükkel, és többnyire sorosan írhatók. Tudni kellene, hogy szinkron vagy aszinkron sorosan, illetve párhuzamosan irható kijelződ van-e, illetve ha párhuzamos, hány vezeték kell a vezérléshez, mik ezek (pl. 8 bit adat + 1 bit write, vagy handshake két vezetéken)?
    Ha ezeket meg tudod adni, akkor néhány perc alatt megirhatom a neked való procedure-t pascal vagy delphihez, C-t még nem tudok annyira.

  • salazol

    őstag

    válasz sonar #21 üzenetére

    Itt egy példa handhake-es párhuzamos kiirásra, primitiv, hibája, hogy ha nem kap választ a hardvertől, akkor végtelen sokáig várakozik (fagy). Mivel állandóan csatlakoztatott kütyühöz van, igy nem foglalkoztam ennek a kiküszöbölésével.
    XP és 2000 alatt ez nem működik.


    unit DMX;
    interface
    type
    TDMX = class
    procedure ByteOut(data : byte) ;
    private
    procedure portout(addr : word; data : byte);
    function portin(addr : word) : byte;
    { Private declarations }
    public
    { Public declarations }
    end;
    const
    PPort : word = $378;
    Implementation
    {$R *.DFM}

    procedure TDMX.portout(addr : word; data : byte);
    asm
    mov al,data
    mov dx,addr
    out dx,al
    end;

    function TDMX.portin(addr : word) : byte;
    var b : byte;
    begin
    asm
    mov dx,addr
    in al,dx
    mov b,al
    end;
    Portin := b;
    end;

    procedure TDMX.ByteOut (data : byte);
    begin
    While (PortIn(PPort + 1) And 64) = 0 Do;
    PortOut(PPort, data);
    PortOut(PPort + 2, 13);
    While (PortIn(PPort + 1) And 64) = 64 Do;
    PortOut(PPort + 2,12);
    end;

    end.

Új hozzászólás Aktív témák