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

Nie działa komunikator LPT z inpout32.dll - problem z ustawianiem bitów

Djelvis 16 Sty 2006 20:59 2094 8
REKLAMA
  • #1 2188394
    Djelvis
    Poziom 16  
    Posty: 246
    Pomógł: 5
    Ocena: 5
    Witam!!!
    Mam prosbe do fachowcow od LPT.
    Pisze programik pod LPT, prosty komunikator w stylu okna rozmowy GG, wykorzysuje do tego biblioteke inpout32.dll. Program do 2kierunkowej transmisji wykorzystuje zmienny tryb pracy portu directional/bidirectional na liniach danych, kontrola odbywa sie poprzez potwierdzenia i tak, linie sa polaczone nastepujaco nStrobe(out)->PaperOut(in) oraz nInitialize(out)->nAck(in) lecz cos jest nie tak z programem bo nie chce reagowac,tzn wyglada tak jakby nie ustawialy sie bity na na tych liniach i program nie moze wyslac wiadomosci bo czeka na potwierdzenie od 2giego..wydaje mi sie ze jest blad w f-cj UstawBit...prosilbym o wszelka pomoc...Jezeli program bylby niejasny moge napisac/narysowac algorytm dzialania aplikacji.
    Załączniki:
    • main.cpp (10.03 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #2 2188432
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #3 2188467
    Djelvis
    Poziom 16  
    Posty: 246
    Pomógł: 5
    Ocena: 5
    Korzystam z biblioteki inpout32.dll ktora to pozwala na korzystanie z portow pod WIN2000,2003,xp jest to ponoc taka alternatywa do UserPort, mam jedna wersje tego programu gdzie sprawdzanie stanu lini danych odbywa sie poprzez linie danych lecz jest to wolne ale dziala i dlatego musze to zmienic na sprawdzanie na pozostalych liniach...

    www.logix4u.net tu jest opisana ta biblioteka...
  • #4 2188526
    Konto nie istnieje
    Konto nie istnieje  
  • #5 2190180
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #6 2191704
    ko_rex
    Poziom 19  
    Posty: 253
    Pomógł: 38
    Ocena: 2
    Patrze i patrze... i nie widzę tam ustawionej wartości portu (PortAddress nigdzie nie ma przypisanej wartości)...
  • REKLAMA
  • #7 2194316
    Djelvis
    Poziom 16  
    Posty: 246
    Pomógł: 5
    Ocena: 5
    wartosci portow sa w pliku naglowkowym do kazdego z trzech rejestrow..
  • #8 2319235
    pidpawel
    Poziom 26  
    Posty: 1025
    Pomógł: 13
    Ocena: 18
    jeśli chodzi o programowanie to lepiej skontaktować się z kolegą mailsoft
  • #9 2418844
    qran
    Poziom 13  
    Posty: 59
    Pomógł: 2
    Ocena: 6
    Cześć!

    Jeżeli chodzi o LPT i Win Xp to od kilku dni intensywnie się tym zajmuję.
    Mam stary dosowy programik - programator. Odkąd mam Xp korzystanie z programatora stało się uciążliwe. Postanowiłem więc samemu napisać program i przy okazji zmodernizować nieco układ programatora. Jeżeli chodzi o samo Lpt, to stworzyłem klasę CLpt sprowadzającą użytkowanie Lpt do minimum. Całość znajduje się w pliku nagłówkowym LPT.h - dołączamy go do programu, tworzymy obiekt klasy CLpt i reszta jest już banalnie prosta.
    Wszystko napisane w C++. Program korzysta z biblioteki inpout32.dll.
    W najbliższej przyszłości udostępnie pliki wraz z opisami i jakąś mini dokumentacją. Jeżeli zainteresowana będzie większa liczba osób poświęcę trochę czasu i dodam obsługę przerwań i inne.

    Demonstracyjny niby program korzystający z CLpt:

    #include "LPT.h"
    ....
    ...
    ...
    ...

    CLpt Lpt; <- utworzenie obiektu Lpt

    if (Lpt.LptReady == true) <- jeżeli LptReady = 1 dll popr. zaladowana
    {
    Lpt.DataPort.Set.D0(); <- ustawienie bitu D0
    Lpt.DataPort.Clr.D7(); <- zgaszenie bitu D7
    Lpt.DataPort.Write(0x00FF) <- wyslanie FFH do portu danych
    Lpt.ControlPort.Clr.nStrobe() <- ustawienie bitu nStrobe


    if (Lpt.StatusPort.ReadBit.nBusy() == 1) <- jezeli nBusy = 1
    {
    ...
    ...
    }
    }
    ...
    ...


    Pozdrawiam Wszystkich!
    Cezary Kuran

Podsumowanie tematu

✨ Dyskusja dotyczy problemu z komunikacją dwukierunkową przez port LPT przy użyciu biblioteki inpout32.dll na systemach Windows 2000, 2003 i XP. Autor programu napotkał trudności z ustawianiem bitów na liniach sterujących (nStrobe, nInitialize) i odczytem potwierdzeń (PaperOut, nAck), co uniemożliwia wysyłanie wiadomości. Wskazano, że problem może wynikać z braku odblokowania portu LPT lub błędnego przypisania bitów do linii portu. Zalecane jest testowanie fizyczne linii za pomocą miernika lub diody LED, aby zweryfikować reakcję portu na zapisy i odczyty. W dyskusji pojawiły się przykłady asemblerowego dostępu do portu oraz sugestie dotyczące debugowania i analizy kodu. Wspomniano o alternatywach dla inpout32.dll, takich jak UserPort, oraz o klasie CLpt w C++ upraszczającej obsługę portu LPT, która korzysta z inpout32.dll i ma być udostępniona z dokumentacją. Poruszono także kwestie związane z adresowaniem rejestrów portu i koniecznością poprawnego przypisania wartości portów w plikach nagłówkowych.
Wygenerowane przez model językowy.
REKLAMA