» »

[C++] parallel porti na PC

[C++] parallel porti na PC

Poldy ::

Da ne bom še enkrat izumljal tople vode, bi prosil tiste, ki imajo s tem že nekaj izkušenj:
Kje na netu bi našel kakšen tutorial, ali pa mi kdo na kratko razloži, kako uporabljati porte (paralelnega) v C++ - npr. zajem in oddaja signalov?

Hvala

Aja, pa če je preveč komplikacij, bom pač delal v win ME ali 98...
  • spremenilo: snow ()

W3by ::

Stric Google ;)

Drugače pa sem se jaz največ navadil iz tega tutoriala.

Če boš hotel delati z XPji oz. drugimi NT osji potrebuješ driverje. Priporočam inpout32.

Poldy ::

Hvala za informacije.

Kot sem do sedaj zasledil, naj bi bil prenos podatkov dvosmeren "naenkrat", torej bi lahko pripeljal na nek pin logično "1" in povozil "0" vhod?
Ali moraš potem že na samem začetku postaviti vse izhode oz. ves data register na logično "0"?

Ali je potem vsa umetnost programiranja v C:

in = inb(0x379);
out = outp(0x379,n);

ali sem mogoče na kaj pozabil?

Programiral bom seveda na starem računalniku (če se bo slučajno kaj kadilo) v win98 okolju.

Zgodovina sprememb…

  • spremenil: Poldy ()

W3by ::

Ne razumem popolnoma tvojega vprašanja, vendar mislim da ti ni veliko za komplicirati.
Izhode je dobro izklopiti (bit 0) ker windowsi lahko vklopijo nekatere, vhodi pa delujejo tako, da povežeš vhod + masa in ti pokaže bit 1. Če ne rabiš veliko izhodov so dovolj izhodni/vhodni data pini (8 pinov, 0x378) in vhodni pini (5 pinov, 0x379). Data pini se lahko rabijo tudi kot vhod, vendar se trenutno se spomnim kako.

Pazi pri vhodu 11 ker je obrnjen!

Glede kode - verjetno imaš typo pri inb in si mislim inp. Če imaš VC++ mislim da je pravilno _inp() in _outp(), borland pa brez '_'.

Če bi hotel npr. nastaviti izhodna pina 2,3 bi uporabil tole:
_outp(0x378, 6);

Za prebrat pin 10 pa:
vhod = _inp(0x379, 32);

Za preračunavanje imam pa tudi eno funkcijo, če jo rabiš povej!

Pa mislim da se ni treba bati da bi kaj skuril :D Jaz se že kar nekaj časa ukvarjam s tem, pa ni bilo še panike ;)

Zgodovina sprememb…

  • spremenil: W3by ()

snow ::

0x378 je data register 8 vhodno izhodnih pinov.
0x379 pa control register, kjer en bit označuje ali je 0x378 vhodni ali izhodni port. Pogooglaj kateri.
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins

W3by ::

Control register je 0x37a naredit pa morš tole (iz zgornjega linka):
To enable Bidirectional data transfer just set the "Bidirectional" bit (bit 5) in control register. This is done by writing 32 to control register.

Poldy ::

Hvala za pomoč.

Ja, mislil sem inp, inb mi je gotovo ušlo od programiranja z mikrokontrolerji (orb, ldab...)

Torej, če hočem pripeljati logično "1" iz zunanjega sistema na PC, dam nek data pin na maso ? Kaj pa je potem logična "0"? Pripeljem na linijo 5V?


Edit:
Že vse jasno, malo preveč kompliciram, port sprejema normalno logične 1 in 0, negirani so le nekateri pini... med tednom skoraj nimam časa, pa nisem še nič sprobal.

Še en link o portu.

Zgodovina sprememb…

  • spremenil: Poldy ()

snow ::

Random mutation plus nonrandom cumulative natural selection - Richard Dawkins

Poldy ::

Hm, končno sem našel čas za programiranje, pa imam že takoj probleme. Ne zazna mi namreč ukazov "inp" in "outp"... izgleda da mi manjka knjižnica - katera?

unistd.h mi sploh ne prime, kot da jo nimam...

Edit:
Evo, sedajle se trudim že cca. 2h, pa brez uspeha. Uporabljam dev-c++, pa mi nobeden ukaz ne prime: inp, _inp, inputb, _inputb... knjižnic imam malo morje, še vedno nič. Ko dam compile mi javi da je spremenljiva inp nedeklarirana...

Pa to nima veze z tisto .dll knjižnico, ker če te nimaš, ti kasneje javi napako...
Kaj delam narobe?

Zgodovina sprememb…

  • spremenil: Poldy ()

snow ::

Dve testni kodi in dll(čisto na dnu je download).
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
!

[C++] Povezave

Oddelek: Programiranje
4260844 (205) DamijanD
»

termometer za PC

Oddelek: Elektrotehnika in elektronika
81951 (1674) snow
»

[C++] Programiranje LPT porta v WinXP - pomoc

Oddelek: Programiranje
51564 (1441) sid_dabster
»

Kako omogočiti LPT port v Windows XP!!!!!

Oddelek: Programiranje
61125 (955) ql000
»

LPT (parallel) porti

Oddelek: Elektrotehnika in elektronika
61062 (967) Wannabi

Več podobnih tem