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

Programownie - początki. Jak zaprogramować port LPT, diody?

Adrian_sekowski 19 Lip 2007 23:40 2947 15
  • #1 4097137
    Adrian_sekowski
    Warunkowo odblokowany
    Posty: 272
    Ocena: 6
    Witam
    Mam pytanie czy ktoś mi udzieli jakiś wskazówek jak sie programuje C++czy coś takiego? Przeczytałem parę stron internetowych "niby poradników C++" ale to i tak nic nie wiem o co chodzi? Jak z tego korzystać?

    Po prostu chodzi mi np jak zaprogramować coś takiego pod port LPT lub Com np parę diod LED i żeby sterować zapalenie sie odpowiedniej jakimś programem?

    Już wyjaśniam:
    Mam taki pomysł np żeby rozmieścić w pokoju parę diod LED super jasne które odpowiednio każda coś podświetla... I czy to możliwe żeby coś napisać jakiś program który będzie tym sterował?

    na jakiej zasadzie sie programuje takie cuda?

    proszę o jakieś wskazówki jak zacząć ewentualnie jakiś konkretny dobry link co jest opisane to z głową?

    Adrian_Sekowski
  • #2 4097181
    andrzejlisek
    Poziom 32  
    Posty: 3637
    Pomógł: 82
    Ocena: 707
    Ja programuję w Tubo Pascalu, ale w C++ będzie tak samo.

    Jeśli chodzi o COM, to nie wiem.

    Jeśli chodzi o LPT to sprawa jest stosunkowo prosta:
    Diody podłączasz tak, że minus jest na GND, a plus na piny wyjściowe, jest ich 8, nie pamiętam pinouta LPT, ale znalezienie go to żaden problem.

    To, jak zaimplementować w C++, znajdziesz w każdym lepszym "poradniku" internetowym.

    Robisz to następująco:

    Definiujesz zmienną plikową, np. nazywa się "diody", definiujesz jako plik tekstowy.

    Do tej zmiennej przypisujesz plik. Port lpt1 w Dosie traktowany jest jako plik, który nazywa się "LPT1".

    Otwierasz ten plik do zapisu.

    Każdy znak ma kod ASCII w zakresie od 0 do 255, można przeliczyć na postać binarną i odwrotnie. Przeliczenia dokonasz za pomocą kalkulatora Windows.

    Aby zmienić stan wyjść portu, czyli stanem świecenia diod (na wyjściu masz 0 w stanie niskim lub +5 w stanie wysokim) musisz "druknąć" do pliku "diody" znak o takim kodzie ASCII, że jak go przeliczysz na postać binarną to można odczytać, która dioda ma świecić, która nie ma się świecić.


    Najpierw pomyśl, w jaki sposób chcesz tym sterować, czy ma to zaświecać samoczynnie czy przez naciskanie klawiszy.

    Poprostu musisz zrobić pętlę, która będzie generować znaki o odpowiednich kodach i wprowadzać je pojedynczo do portu. To,jak generuje się znaki zależy od tego, jak chcesz sterować diodami.


    Nie wiem, jak to jest w C++, nie znam żadnego dobrego kompilatora pod DOS. Kiedyś programowałem coś pod LPT w Turbo Pascalu i w Windows XP nie działało (program działał, ale w porcie nie było żadnych zmian), a w czystym DOSie działało prawidłowo.

    Jakbyś chciał, to mogę dać Ci implementację jakiegoś prostego przykładu, ale w Pascalu, bo w C++ w ogóle nie umiem.
  • #3 4097231
    Adrian_sekowski
    Warunkowo odblokowany
    Posty: 272
    Ocena: 6
    Ogólnie mówiąc nie mam pojęcia o programowaniu...

    jeśli masz jakieś pomoce które pomogą to zrozumieć to poprosze na e-maila czy gg jak chcesz z resztą.... jestem dość kumatym gościem i wszystko musi być dla mnie logiczne bo inaczej to porażka :P

    jesli masz czas to możesz mie pokierowac jak pisac program skąd wziąść te dane potrzebne i w końcu dojśc do samego programu....

    no chciałbym takie okienko żeby sie otworzyło no i 8 przycisków kazdy odpowiedni do jednej z diod....
  • #4 4097367
    andrzejlisek
    Poziom 32  
    Posty: 3637
    Pomógł: 82
    Ocena: 707
    Adres to andrzejlisek(_at_)poczta.onet.pl

    Jeśli chodzi o porty w "windzie" to mogą być problemy, szczególnie w 2000,XP,Vista.

    Mogę przygotować i wysłać program w Delphi (jedyny kompilator do Window, jaki posiadam). Nie wiem, czy pomoc taka się przyda, bo chciałeś w C++, a Delphi chodzi w Pascalu.

    Problem może polegać na tym, że port nie będzie reagować na wprowadzane znaki, tzn. program będzie sprawiało wrażenie działającego, ale w porcie nie będą się zmieniać napięcia. Nie wiem, czy to sprawa Windowsa, czy sprawa BIOS. Drukarka podłączona do LPT w Windows działa. Jedynie, jak się wykorzysta Microsoft Virtual PC, a program pracuje wewnątrz tego emulatora, to port też działa z Turbo Pascala. Jednak ten sposób posiada pewne wady:
    - duże wymagania sprzętowe
    - konieczność posiadania instalki DOS lub Win9x (nie wiem, czy na 2k i XP zadziała)
    - możliwe opóźnienia w porcie.

    A programowanie w czystym, najprawdziwszym DOS zainstalowanym na komputerze nie ma powyższych wad, tylko nie na każdym nowoczesnym komputerze da się zainstalować. Na kompie sprzed kilku lat już można.

    Uważam, że nie ma co mówić o programowaniu, jak nie wiemy, czy na danej platformie będzie działać.

    Wejdź na www.w.cz.prv.pl
    To jest strona elektronika, który też zajmuje się programowaniem, programuje także obsługę portów COM i LPT.
    Można się do niego też zgłosić.
  • #5 4097675
    Adrian_sekowski
    Warunkowo odblokowany
    Posty: 272
    Ocena: 6
    Witam
    Ja mam komputer 1,0 GHz i 512 SDRAM... Windows XP Professional...

    A ja nie wiem może być program też w innych niż C++ przecież ja sie na tym nieznam dopiero co przeczytałem kilka stron o tym ...

    Jeśli masz jakieś pragramy do tworzenia programów to przeslij mi adrian.sekowski.seki(małpa)wp.pl

    Bo z tego co wiem too programy sie pisze w notatniku ale jak potem to zamienić na plik programu czy też ikone "nazwa.exe"
  • #6 4097699
    aligatormp
    Poziom 14  
    Posty: 99
    Pomógł: 10
    Ocena: 7
    Z programowaniem pod win Nt,2000,XP nie ma problemów, używasz biblioteki ze sterownikami jak w jednym z temetów wyżj opisanych, zastanawiam się tylko po co do sterowania kilkoma - kilkunastoma diodami led chcesz używać do tego celu PC?
  • #7 4097708
    charm_spider
    Poziom 22  
    Posty: 541
    Pomógł: 39
    Ocena: 13
    Adrian_sekowski napisał:
    Jeśli masz jakieś pragramy do tworzenia programów to przeslij mi adrian.sekowski.seki(małpa)wp.pl

    Bo z tego co wiem too programy sie pisze w notatniku ale jak potem to zamienić na plik programu czy też ikone "nazwa.exe"


    Takich programów w sieci jest na prawdę dużo...
    Słyszałeś o czymś takim jak kompilator?

    I niekoniecznie w notatniku, ale to już zupełnie inna historia ;-)
  • #8 4097980
    andrzejlisek
    Poziom 32  
    Posty: 3637
    Pomógł: 82
    Ocena: 707
    Jeśli chodzi o programy do tworzenia programów, to ja miałem na myśli "Turbo Pascal 7.0".

    Bez żadnego problemu znajdziesz ten program wykorzystując www.google.com

    Przedstawiam taki szkielet programu w TP 7.0:


    
    uses crt;
    
    function Bits2Char(B1,B2,B3,B4,B5,B6,B7,B8:Byte):Char;
    var ChrCode:Byte;
    Begin
     ChrCode:=(128*B1)+(64*B2)+(32*B3)+(16*B4)+(8*B5)+(4*B6)+(2*B7)+(1*B8);
     Bits2Char:=Chr(ChrCode);
    End;
    
    var D1,D2,D3,D4,D5,D6,D7,D8:Byte;
        Lpt:Text; {Nie pamietam, czy 'Text', czy 'File Of Char' bedzie dzialac}
        LptData,InKey:Char;
    
    BEGIN
     Assign(Lpt,'LPT1:');
     Rewrite(Lpt);
    
     Repeat
    
    { Zmienne D1, D2,... D8 okreslaja stan wyjsc portu, moze miec wartosc 0 lub 1
      Potem trzeba obliczyc znak na podstawie wszystkich osmiu zmiennych
      i ten znak wprowadzic do portu.
    }
      InKey=ReadKey;
    
    { Wcisniecie klawisza powoduje przypisanie do InKey znaku o kodzie Ascii
      klawisza. Mozesz zdefiniowac czynnosc wykonywana po wcisnieciu
      okreslonego klawisza.
    
      Robisz to tak:
    
      If InKey=xxx Then
      Begin
       -- czynnosci po nacisnieciu klawisza o kodzie ascii xxx --
      End;
    
      Wcisniecie klawisza ESC przerywa dzialanie petli.
    }
    
      LptData:=Bits2Char(D1,D2,D3,D4,D5,D6,D7,D8);
      Write(Lpt,LptData);
    
    
     Until InKey=Chr(27);
    
     Close(Lpt);
    END.
    



    Moim zdaniem najpierw warto przeczytać jakiś poradnik na temat programowania w danym języku i popróbować podstawowe operacje.
  • #9 4168532
    lenox89
    Poziom 10  
    Posty: 37
    najlepszą aplikacją inaczej zwaną MEGA KOMBAJNEM do programowania w C++ jest: Microsoft Visual Studio.

    Ja obecnie korzystam z Microsoft Visual Studio .NET 2003 ale jest też nowsza wersja 2005.

    Na prawdę warto mieć ten program bo jest w czym pracować...
  • #10 4168814
    charm_spider
    Poziom 22  
    Posty: 541
    Pomógł: 39
    Ocena: 13
    Czy najlepszą? Nie powiedziałabym tego tak pewnie. Na pewno jest mocno rozbudowane, itp.
    Ale po pierwsze jest bardzo drogie (a nie będziemy oczywiście zachęcać do używania nielegalnego oprogramowania, ewentualnie uczelnie często dysponują oprogramowaniem na licencji msdnaa), po drugie, do nauki moim zdaniem lepsze jest coś mniej rozbudowanego - żeby nauczyć się programować, a nie zginąć w gąszczu funkcji....
    Warto mieć Visual Studio, ale jak się umie już programować ;-)
  • #11 4168851
    Konto nie istnieje
    Konto nie istnieje  
  • #12 4168954
    lord_dagoth
    Poziom 25  
    Posty: 860
    Pomógł: 68
    Ocena: 6
    Również polecam Dev-C++

    Jest idealny na początek, niezwykle prosty w obsłudze, intuicyjny ;)
  • #13 4169883
    wiesniak
    Poziom 31  
    Posty: 1006
    Pomógł: 231
    Ocena: 52
    charm_spider -> Visual Studio 2005 w wersji Express można pobrać za darmo ze strony Microsoftu.
    Pierwsze kroki w c / c++ stawiałem właśnie w VS (najpierw wersja 6, później 2005) i w zasadzie nie miałem problemów. Wystarczyło, że pokazano mi "knefelek" kompilujący i tyle. Znajomość np debuggera przyszła z czasem.

    Adrian_sekowski -> Zobacz:
    https://www.elektroda.pl/rtvforum/kb.php?mode=article&k=3937
    https://www.elektroda.pl/rtvforum/topic277744.html
  • #14 4173006
    sawitar
    Poziom 18  
    Posty: 226
    Pomógł: 20
    Ocena: 19
    Masz duże wymagania jak na początek. Nie chce gasic twojego entuzjazmu, ale raczej wątpię aby ci sie to udało, szczegolnie ze nie umiesz programowac.

    Ja polacam na poczatek zapoznanie sie z ksiazka "ANSI C". W prawdzie jest o C, ale to taki elementarz o jezykach C-podobnych. Polecam także ksiązkę "C++ w 24 godziny". Duzo ludzi korzysta także z Symfonii.

    Pozdrawam i życze sukcesów

Podsumowanie tematu

✨ Dyskusja dotyczy programowania portu LPT (równoległego) i COM (szeregowego) w celu sterowania diodami LED za pomocą programów napisanych w C++ lub innych językach. Port LPT można traktować jako plik tekstowy (np. "LPT1") i zapisywać do niego znaki ASCII, które odpowiadają stanom wyjść portu (0 lub +5 V), co pozwala na włączanie i wyłączanie diod podłączonych do poszczególnych pinów. Programowanie w środowisku DOS jest prostsze i bardziej bezpośrednie, natomiast w systemach Windows (2000, XP, Vista) mogą wystąpić problemy z dostępem do portów sprzętowych, co wymaga użycia sterowników lub specjalnych bibliotek. Propozycje narzędzi do nauki i programowania obejmują Turbo Pascal 7.0 (z przykładowym szkieletem programu do sterowania portem LPT), Delphi, a także środowiska C++ takie jak Microsoft Visual Studio (w tym wersje Express dostępne za darmo) oraz Dev-C++ oparte na MinGW. Zalecane jest rozpoczęcie nauki od podstaw programowania w C lub C++ z wykorzystaniem odpowiednich książek i tutoriali, a także zapoznanie się z klasą CSerial z biblioteki MFC do komunikacji przez port szeregowy. Wskazano również na dostępność licznych poradników i przykładów w internecie, które pomagają zrozumieć zasady programowania portów i sterowania diodami LED.
Wygenerowane przez model językowy.
REKLAMA