Programowanie centronics

0

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

0

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
  }
}
0

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...

0

Dokładnie chodzi mi o rejestra bazowy! Tylko jakie komendy uzyc zeby ustawic cos na tych pinach??

0

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 :-[

0

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??

0

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.

0

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.

0

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]

0

http://www.beyondlogic.org/porttalk/porttalk.htm
tego uzyj - dziala bardzo dobrze :P

1 użytkowników online, w tym zalogowanych: 0, gości: 1