logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak używać portu LPT w Delphi na Windows XP? Szukam wskazówek dla początkujących

smalski 28 Kwi 2004 11:22 3772 21
REKLAMA
  • #1 616473
    smalski
    Poziom 17  
    Posty: 317
    Pomógł: 2
    Ocena: 8
    Heja wszystkim.
    Przegladam i przegladam te posty i w sumie to nie ma zbyt wiele inforamcji na temat LPT w delphi na XP.Prosze o pomoc na ten temat.Przyda sie wszystko,gdyz jestem poczatkujacym...
    Pozdrawiam/smalski
  • REKLAMA
  • #2 616585
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    Tak samo jak na w2k, reszta już była powiedziana.
  • REKLAMA
  • #3 616677
    smalski
    Poziom 17  
    Posty: 317
    Pomógł: 2
    Ocena: 8
    no to ja w takim razie nie potrafie znalesc...
  • REKLAMA
  • #5 617867
    smalski
    Poziom 17  
    Posty: 317
    Pomógł: 2
    Ocena: 8
    Tak zgadzam sie,ze google to kopalnia wiedzy,ale najpierw trzeba wiedziec jakich slow szukac a po wpisaniu samego slowa "delphi" wywala tyle informacji,ze nie wiadomo co wybrac jak sie jest poczatkujacym...
    Pozdro
  • #6 617896
    Vinnic
    Poziom 16  
    Posty: 158
    Pomógł: 18
    Ocena: 20
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    PortOut($378, 0);
    end;

    Procedure Wpisz(PortValue, DataValue: Word);
    begin
    DataValue := (DataValue * 256) + DataValue;
    asm
    Mov ax,DataValue
    Mov dx,DataValue
    Out dx,ax
    end;
    end;

    procedure PortOut(Port:word;Value:Byte);assembler;
    begin
    asm
    mov DX,Port
    mov AL,Value
    out DX,AL
    end;
    end;
  • #7 617948
    smalski
    Poziom 17  
    Posty: 317
    Pomógł: 2
    Ocena: 8
    Cos mi pod XP nie dziala...
    Komunikat
    undeclared indentifier: 'portout'

    ???
  • #8 618281
    Kuba_eM
    Poziom 24  
    Posty: 654
    Pomógł: 36
    Ocena: 77
    Heja!
    Jasne, że Ci nie będzie to działać w 2000/XP. One blokują bezpośrednie odwołania do portów (i w większości przypadków to bardzo dobrze, że tak robią). Z sieci możesz zassać komponenty do obsługi portów w tych systemach (np sadirectport).
    Pozdrawiam,
    Kuba
  • REKLAMA
  • #9 618315
    emj
    Poziom 15  
    Posty: 92
    Pomógł: 6
    Ocena: 5
    kuba_em ma racje nawet w pascalu ci nie zadziala pod winxp, musisz zassac komponenty, poloecam: www.4programmers.net
  • #10 619560
    smalski
    Poziom 17  
    Posty: 317
    Pomógł: 2
    Ocena: 8
    Ok mam juz biblioteke inpout32.
    I co dalej?Opisy wszedzie sa ,albo do visual basica, albo do c+.Pomozcie ludzie bo tak to mi zajmie dwa lata zanim dojde o co chodzi .Potrzebuje tylko wystawiac bajty na porcie rownoleglym.(pod XP).
    Jesli chodzi o komponent 'sadirectport' to nie moge go nigdzie znalesc bo ani google, ani szukacz nie wyswietlaja ani jednego pozytywnego wyniku.I jestem w punkcie wyjscia!!!A na www.4programmers.net jest do wyboru komponentow mnostwo,ale na RS-232 a to mnie nie interesuje.
    Dzieki.
  • #12 619626
    Kuba_eM
    Poziom 24  
    Posty: 654
    Pomógł: 36
    Ocena: 77
    Heja!
    Oto odnośnik do stronki Torry'ego, do części z komponentami dostępu do portów:
    http://www.torry.net/pages.php?id=227
    Komponent: DirectPort v.3.8 z przykładowymi programami, ale może wybierzesz coś innego...
    Pozdrawiam,
    Kuba
  • #13 619930
    smalski
    Poziom 17  
    Posty: 317
    Pomógł: 2
    Ocena: 8
    Ok dzieki jakos doszedlem.
    Uzylem komponentu smallport.
    Wszystko jest ok tylko dlaczego komp wystawia na wyjsciu 3,5V a nie 5V??Przy wlączaniu kompa jest 5V.o co chodzi??
  • #14 619977
    Vinnic
    Poziom 16  
    Posty: 158
    Pomógł: 18
    Ocena: 20
    Może jest tam jakiś zmienny przebieg. Spróbuj zobaczyć oscyloskopem lub innym przyrządem
  • #15 621460
    smalski
    Poziom 17  
    Posty: 317
    Pomógł: 2
    Ocena: 8
    Bedzie mi ciezko bo nie mam oscyloskopu i w sumie nic innego poza multimetrem.....
  • #16 621714
    BoskiDialer
    Poziom 34  
    Posty: 1530
    Pomógł: 353
    Ocena: 42
    smalski: co ci przeszkadza mniejsze napięcie? mikrokontrolery takie napięcie traktują jako 1, a jak podłączasz jakieś inne urządzenia to i tak przez tranzystory, albo bufor.. ja mam na lpt 3,2V - 3,3V i wszystko mi działa picuś glancuś..
  • #17 622019
    smalski
    Poziom 17  
    Posty: 317
    Pomógł: 2
    Ocena: 8
    Ja nie pisalem,ze mi przeszkadza i wiem,ze to jest stan logiczny 1,ale bylem po prostu ciekaw dlaczego, jesli przy wlaczaniu jest 5V.
  • #18 639340
    shivanwk
    Poziom 12  
    Posty: 51
    Czy wie ktos jak obsluzyc za pomoca LPT wiele urzadzen(>20)?
  • #19 639763
    nightman
    Poziom 13  
    Posty: 60
    Pomógł: 2
    Ocena: 7
    shivanwk napisał:
    Czy wie ktos jak obsluzyc za pomoca LPT wiele urzadzen(>20)?


    Spróbuj zewnętrzny koder/dekoder podłączony do portu - powinno wystarczyć bo sterujesz wtedy kombinacjami ustawień bitów D0-D7
  • #20 639815
    shivanwk
    Poziom 12  
    Posty: 51
    a ten koder sie jakos nazywa? bo nie jestem zbytni w temacie elektroniki i tak jak bym mial jakis konkretny model to bym poszukal informacj :-)
  • #21 671637
    blackrage
    Poziom 15  
    Posty: 177
    Pomógł: 10
    Ocena: 13
    Oczja ktos obsługe portu LPT przez WinApi tj. CreateFile itd.? Pod Delphi 3 żaden z tych "wspaniałych" komponentów nie działa...
    I nie mówcie, że wszystko już było powiedziane, bo nic nie było o tym powiedziane.
  • #22 3251492
    blackrage
    Poziom 15  
    Posty: 177
    Pomógł: 10
    Ocena: 13
    Aby sterować LPT w przez WinAPI wystarczy :
    ( działa pod XP, bez żadnych "extra" sterowników )

    var :
    MyLPT : THandle;
    MyData : integer;

    procedure OtworzPortLPT( var pHandle : THandle );
    begin
    pHandle := CreateFile('LPT1', GENERIC_WRITE, 0, nil, OPEN_EXISTING, 0, 0);
    end;

    procedure WystawDane( pData : integer; pHandle : THandle );
    var
    ret : dword;
    begin
    WriteFile( pHandle , pData, 1, ret, nil);
    end;

    procedure ZwolnijUchwyt( pHandle : THandle );
    begin
    CloseHandle( pHandle );
    end;

    begin
    MyData := 129; { pierwszy i ostatni bit }
    OtworzPortLPT( MyLPT );
    WystawDane( MyData, MyLPT );
    ZwolnijUchwyt( MyLPT );
    end;

    Ważne jest, aby we wtyczce piny 10, 11, 12 zewrzeć do masy. ( pin 18 - 25 )
    pinem 10 drukarka informuje, że jest goowa na przyjęcie danych
    pinem 11 drukarka informuje, że jest podłączona i nie ma zajęcia
    pinem 12 drukarka informuje, że ma papier
    także oszukujemy nieco system ...
    Do pinów 2 - 9 podłączamy cokolwiek, najlepiej jednak na początek 8 diód anodami, do nich 8 oporników po 1k a oporniki do masy - żeby zobaczyć czy działa :)

    poniżej:
    * schemat połączeń
    * kod źródłowy programu ( delphi 3 )
    * programik do testów
    Załączniki:
    • Jak używać portu LPT w Delphi na Windows XP? Szukam wskazówek dla początkujących lpt.jpg (26.77 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • LPT_source.rar (12.36 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • LPT_exefile.rar (90.96 KB) Musisz być zalogowany, aby pobrać ten załącznik.

Podsumowanie tematu

LABEL_AI_GENERATED
Dyskusja dotyczy programowania portu LPT w Delphi na systemie Windows XP, ze szczególnym uwzględnieniem problemów początkujących użytkowników. Bezpośredni dostęp do portu LPT za pomocą asemblera lub standardowych funkcji Delphi nie działa w Windows XP ze względu na blokady systemowe. Zalecane jest użycie specjalnych komponentów i bibliotek, takich jak DLPORTIO, inpout32, SmallPort, DirectPort (np. DirectPort v3.8 z Torry.net) lub ZLPortIO, które umożliwiają dostęp do portu równoległego pod XP. Przykładowy kod Delphi pokazuje użycie funkcji WinAPI (CreateFile, WriteFile, CloseHandle) do sterowania portem LPT bez dodatkowych sterowników, z uwzględnieniem konieczności zwarcia pinów 10, 11, 12 do masy w celu symulacji gotowości drukarki. Wskazano także, że napięcie na wyjściu portu LPT może wynosić około 3,3 V zamiast 5 V, co jest normalne i wystarczające do sygnału logicznego „1”. Poruszono również temat obsługi wielu urządzeń (>20) podłączonych do portu LPT za pomocą zewnętrznych koderów/dekoderów sterowanych bitami D0-D7.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA