Programowanie portu LPT językiem Borland C++ 3.1

Forum dotyczące ogólnie pojętego programowania - algorytmów, struktur danych, narzędzi programistycznych, itp - głównie w kontekście komputerów PC.
ODPOWIEDZ
spark
Użytkownik
Posty: 412
Rejestracja: 25 lis 2004, 15:50
Lokalizacja: Wrocław

Programowanie portu LPT językiem Borland C++ 3.1

Post autor: spark » 10 lut 2006, 20:26

Witam,

Chciałbym się dowiedzieć co nieco na temat programowania Portu drukarki LPT (print port) Borlandem C++ (wersja 3.1).
Posiadam windows XP (nie sugerować się odczytem w rogu postu) i chciałem wysterować port biblioteką <dos.h> i funkcjami outportb(adres,port); oraz inportb(adres,port); (piszę z pamięci).
Odczyt mam zrobiony z diod led podłączonych przez rezystor 1kΩ.
Nio i niestety efektu nie widać mimo iż kompilator nie zgłasza żadnych błędów kompilacji.
Kod programu wygląda mniej więcej tak:

Kod: Zaznacz cały

#include <dos.h>

int main(void)
{
outportb(0x378, 0x01); // powinna się zaświecić tylko dioda D0 00000001 
return 0;
}
(niestety tez piszę z pamięci)
Czy coś robię źle?

Pozdrawiam wszystkich (bez wyjątku) :D
Ivan

tasza
Użytkownik
Posty: 1391
Rejestracja: 21 lut 2005, 15:02

Post autor: tasza » 10 lut 2006, 20:59

teoretycznie kod jest w porządku, ale:
1. czy adres rejestru danych LPT w Twojej maszynie to 0x378 - upewnij się.
2. LED-y podłącz poprzez małe rezystory - kilkaset (np.200) ohm - nic się nie zepsuje.
3. nie wiem co jeszcze, sprawdź p.1 i p.2, jak nie ruszy - to będziemy się martwić
papa,
tasza

ps.
nawiązując do wczorajszej PW...czy port LPT masz w porządku?
to znaczy, czy np. zatrzask wyjściowy czasem nie jest... sprawny inaczej
Ostatnio zmieniony 10 lut 2006, 21:04 przez tasza, łącznie zmieniany 1 raz.

Awatar użytkownika
radzio
Użytkownik
Posty: 573
Rejestracja: 07 gru 2004, 23:06
Lokalizacja: Sosnowiec
Kontakt:

Post autor: radzio » 10 lut 2006, 21:02

Spróbuj zatrzymać program w pętli while, albo chociaż czekaj na naciśnięcie jakiegoś klawisza. Możliwe że po zakończeniu programu system przywraca poprzedni stan portu.

Passage
Użytkownik
Posty: 187
Rejestracja: 16 sie 2005, 22:46
Lokalizacja: Cambridge / UK
Kontakt:

Post autor: Passage » 10 lut 2006, 22:01

Hej,
Niestety w systemie xp bezposrednie odwolanie sie do portow jest zabronione. Tak wiec outportb jak i wstawki asm na nic sie nie zdadza. Wyjsciem bedzie albo skorzystanie z winapi, albo wykorzystanie odpowiedniego sterownika, np DLPortIO.
Pozdrawiam.

Awatar użytkownika
radzio
Użytkownik
Posty: 573
Rejestracja: 07 gru 2004, 23:06
Lokalizacja: Sosnowiec
Kontakt:

Post autor: radzio » 10 lut 2006, 22:05

Passage niestety nie masz racji. Programy DOSowe mają normalny dostęp do portów pod XP (a raczej ma go wirtualna maszyna DOS na której programy są uruchamiane w XP). Sprawdzałem na dosowym Borland Pascalu.

Passage
Użytkownik
Posty: 187
Rejestracja: 16 sie 2005, 22:46
Lokalizacja: Cambridge / UK
Kontakt:

Post autor: Passage » 11 lut 2006, 8:32

radzio pisze:Passage niestety nie masz racji. Programy DOSowe mają normalny dostęp do portów pod XP (a raczej ma go wirtualna maszyna DOS na której programy są uruchamiane w XP). Sprawdzałem na dosowym Borland Pascalu.
Tak wiec przepraszam za moje brednie Obrazek Spowodowane było to tym, ze nie programuje pod dos. Dzieki za uświadomienie :D
Pozdrawiam.

Awatar użytkownika
seweryn
Użytkownik
Posty: 147
Rejestracja: 08 gru 2005, 20:04
Lokalizacja: Praszka
Kontakt:

Post autor: seweryn » 11 lut 2006, 8:56

ja powiem że Passage ma racje bo pod winxp to dzialac nie bedzie jedynie w konsoli dos

spark
Użytkownik
Posty: 412
Rejestracja: 25 lis 2004, 15:50
Lokalizacja: Wrocław

Post autor: spark » 13 lut 2006, 18:03

Dzięki za spore zainteresowanie tematem...
przechodząc do rzeczy:
tasza pisze:(...)czy adres rejestru danych LPT w Twojej maszynie to 0x378 - upewnij się(...)
Mogłem dać odpowiedź wcześniej ale wolałem się jeszcze raz upewnić...
Tak to jest dokładnie ten adres.
tasza pisze:nawiązując do wczorajszej PW...czy port LPT masz w porządku?
to znaczy, czy np. zatrzask wyjściowy czasem nie jest... sprawny inaczej
Dalszy los tej historii był taki, że ściągnąłem sobie odpowiedni program monitorujący stany LPT pod winXP i wszystko działa jak należy, wszystkie diody zapalały się i gasiły w zależności od ustawienia stanu portów.

Program: http://neil.fraser.name/software/lpt/

Wiec morał z tego taki ze LPT mam dobry... :roll:
Wracam do punkt wejścia,
wiec co z ta programalka :| :?:

Razem z Passage (czytaj Passage) radzimy właśnie nad tym jak to zrobić, aby u mnie w Borlandzie poszło sterowanie LPT'em.
Mam nadzieję, że zaowocuje to artykułem na Elportalu.

:arrow: tasza,
Jeszcze do tego PW wroce.
Musze Cię przeprosić bo coś mi się pokaktusiło z ta kostka... to jest dokładnie twoja 74LS125 tylko jakoś wtedy mi się tak napisało inaczej... no sorry...

No i trzeba inaczej pokombinować z tą moją programałką...
Moża jak nikt nie będzie patrzał spróbuję na moim starym poczciwym Windowsie 98...
Ale ciiiii :wink: tajemnica :P

Ciepło,
Ivanek

ODPOWIEDZ