[ šuzgas @ 13.10.2002. 15:01 ] @
Znam kako upravljati sa interfejsom na lpt1 preko dll iz c-a ali kako direktno omogućiti komunikaciju?Kako uopće otvoriti port u """VISUAL C++""" kad on ne sadrži "#include<dos.h> i #pc.h " datoteke, naravno stalno mi javlja grešku da nemože kompajlirati, a na netu se stalno objavljuje sa tim predprocesorskim naredbama.To je vjerojatno za borland c, ali mene zanima u Visual ceu.


poruka moderatora :
Ova tema premestena je iz foruma elektronika

[ leka @ 13.10.2002. 18:25 ] @
Ja bih samo da iskomentarisem ovo "To je vjerojatno za borland c" - ne dos.h je jos jedna od velikih Micro$oft domisljatosti. Borland, Watcom, Symantec , svi njihovi kompajleri sa sobom donose i dos.h jer to je bilo nekada standard. Ja mislim zbog povratne kompatibilnosti to jos uvek stoji u svakom kompajleru za Windows.

Tebi to garant ne radi jer nisi u svom projektu dao odgovarajucu putanju (-I fleg), pa on ne zna gde da pronadje dos.h .

P.S. Mogao bi makar dan ovde pejstujes sta ti kaze kompajler kada pokusas da kompajliras, ovako samo mozemo da nagadjamo!
[ headstrong @ 17.10.2002. 18:26 ] @
Što se tiče serijskih portova, u svim savremenim verzijama Windows-a (nisam siguran za one pre Win95) je sve dobro pokriveno API funkcijama. Čini mi se da imaš i solidne OCX-ove za COM portove. Sve što ti treba je MSDN i par sati proučavanja.
S druge strane LPT se može predstaviti kao 3 porta u I/O mapi (ako se radi o SPP-u), i sve zavisi od toga šta želiš da radiš sa njim. Ne postoji drajver ni u jednoj Win verziji koji će ti dozvoliti da se igraš sa bitovima na LPT-u pa shodno tome ni jedna API f-ja ili OCX. U Win9x (uključujući i ME) ti niko ne brani da pristupaš direktno I/O mapi iz korisničkog nivoa, ali na NT sistemima je to zabranjeno (osim ako znaš da pristupiš I/O permision bit-mapi, ali to je opasna rabota, pa se nećemo upuštati baš toliko).
Iz VB-a mislim da nikako ne možeš pristupiti direktno I/O portovima, ali u C-u (baš svi kompajleri) je dozvoljeno malo asemblera, pa samo treba da dodaš:
__asm {
mov dx, port_addr
mov al, port_data
out dx, al
}

ili
__asm {
mov dx, port_addr
in ax, dx // nemoj da te čudi 16-bitna vrednost, brža je instrukcija
mov port_data, al
}