Witam potrzebuje funkcji w c++ dzieki ktorej bede mial mozliwosc odpowiedniego programowania poszczegolnych bitow na wyjsciach portu. Podkreslam ze jestem w portach kompletnie zielony. Chodzi mi zeby bylo cos takiego ze podaj adres portu i liczbe ktora chce wyslac na wyjscie. Pomozcie
Tylko w trybie rzeczywistym (pod DOSem):
możesz wykorzystać wstawkę w Assemblerze - nie pamiętam, jak w C++ ustawiało się porty - pod DOSem bawiłem się tylko Pascalem i Assemblerem.
void set_port(unsigned char value)
{asm
{mov dx,378h
mov al,value
out dx,al
}
}
Po pierwsze LPT a nie centronics bo to tylko wtyczka :P
Po drugie teoria:
port lpt sklada sie z trzech rejestrow - rejestr bazowy (czyli piny D0-D7)
rejestr kontrolny i rejestr statusu.
Wiecej bedziesz mial w necie
a w skrocie to wyglada tak ze jak chcesz pobrac lub ustawic cos na danym dowolnym pinie to robisz to wysylajac odpowiedni bajt na dany port (np 0x378) powiekszony o numer rejestru:
bazowy: 0x378 + 0
a te dwa drugie to już nie pamietam ale bedzie w jednym 1 a w drugim 2...
Dokładnie chodzi mi o rejestra bazowy! Tylko jakie komendy uzyc zeby ustawic cos na tych pinach??
Dokładnie chodzi mi o rejestra bazowy! Tylko jakie komendy uzyc zeby ustawic cos na tych pinach??
No toż Ci napisałem! Pytasz się i nie czytasz odpowiedzi??
Przez takich jak Ty odechciewa mi się odpowiadać na forum :-[
Dokładnie chodzi mi o rejestra bazowy! Tylko jakie komendy uzyc zeby ustawic cos na tych pinach??
No toż Ci napisałem! Pytasz się i nie czytasz odpowiedzi??
Przez takich jak Ty odechciewa mi się odpowiadać na forum :-[
Tak ale mi chodzi o funkcje w C++ a nie o wstawke w asm bo jak ja to wykorzystam pozniej pod windowsem??
Po pierwsze:
Wstawki pod Windows działają tak samo - przecież i tak kod C++ jest zamieniany na Assemblera (dokładniej - na kod maszynowy).
Po drugie:
Trzeba było od razu napisać, że chodzi o tryb chroniony a nie o rzeczywisty. Twój program będzie działał w ring3 i nie ma on możliwości dostępu do portów.
Możesz skorzystać z komponentów z własnym sterownikiem w ring0. Było o tym na forum parę razy - poszukaj. Nazwa komponentu ma "ports" w nazwie - nie pamiętam całej.
Jak windows to nie stosuj wsatawek lub inb outb tylko poszukaj darmowych libow do tego opierajacych sie na winapi
bo bedziesz mial rpoblemy pod nt/xp.
Same cwaniaki, "experci" od programowania, ale jak to zrobić - żaden nie wie... ehhhh...
Ja wiem niewiele, takze tego szukam, z tym że mi to potrzebne pod Delphim, ale faktycznie w WinApi jest funkja CreateFile i w niej jako parametr podajemy nazwę portu np. COM1, LPT - i tyle wiem, tam do niej są jeszcze potrzebne inne parametry, o których nie bardzo wiem.
Tą procką otwiera się tylko port, dane wysyła się już inną.
Właśnie przez WinApi - najlepiej to zrobić pod NT/XP, ew. można użyć gotowych komponentów, o których wszyscy piszą - ja szukałem tych komponentów i owsdzem znalazłem, ale albo złe, albo nie dały się skompilować pod Delphi 3...
Jakby ktoś mógł udzielić mi info, jak obsłużyć LPT z WinApi - to proszę o kontakt: [email protected]
http://www.beyondlogic.org/porttalk/porttalk.htm
tego uzyj - dziala bardzo dobrze :P