Fórum témák

» Több friss téma
Fórum » LPT port elérése programból
Lapozás: OK   1 / 2
(#) kekmokus hozzászólása Szept 1, 2008 /
 
Sziasztok!
Remélem nem követtem el hibát, hogy nyitottam ezt az új témát..
Szóval segítségért szeretnék hozzátok fordulni! Nemrégen "nyílt ki a szemem", amikor végigolvastam anton cikksorozatát a számítógép párhuzamos portvezérléséről. eddig nem foglalkoztam vele, most viszont annál többet szeretnék. rettentően érdekes és izgalmas téma
hardverként megépítettem a kis dobozkát 12db LED-del, és a nyomógombokkal. Semmi más nincs vissza, minthogy életre keltsem..
Bár személy szerint PLCprogramozóként dolgozom és így a programozás mint oylan nincs távol tőlem, de rá kellett jönnöm hogy az eddigi pascal, c, c++ ismereteim nem elegendőek ahhoz, hogy az LPT portot elérjem. Rengeteg téma és topic foglalkozik ezzel ,de nem találtam sehol sem megfelelő leírást. programrészletek, példák elérhetőek, de olyan leírás ami részleteiben bemutatná az eljárást, kifejtené a procedúrát nem találtam. itt kérném a segítségeteket! bárki, aki dokumentációval, programmal ,tapasztalatokkal tudna szolgálni, kérem segítsen. nem akarom senki programját ellopni vagy azzal ékeskedni! meg szeretném érteni!

előre is köszönöm!

kekmokus
(#) kobold válasza kekmokus hozzászólására (») Szept 1, 2008 /
 
Volt már azért LPT-s téma errefelé...
Legkönnyebb egy cél-driver alkalmazásával a portot regiszterként elérni, ezt az oldalt tudnám leginkább ajánlani. A dll hívásaival gyakorlatilag azt teszel a porton, amit fizikailag csak lehetséges.
A port regisztereinek, vonalainak egyik leírását csatoltam, de annyi van ebből a neten, hogy fel sem lehetne sorolni.

parallel.pdf
    
(#) kekmokus hozzászólása Szept 1, 2008 /
 
Köszönöm a gyors reakciót!

Ezekkel már mind találkoztam, kész a ledes doboz, átnéztem a hardverspecifikációkat... jópár hete bújom a netet.igazad van fel sem lehet sorolni..
a gondom onnan indul, hogy ha leülök a borland cbuilder vagy a turbopascal elé, onnan hogy tudom érni a portot? mit kell beírni a fejlesztőkörnyezetbe, de a lényeg hogy mit miért kell beírni oda?!?
(#) El_Pinyo válasza kekmokus hozzászólására (») Szept 1, 2008 /
 
Szia!
Van egy magyar nyelven íródott cikksorozat ami teljesen az alapoktól mutatja be az LPT port programozását, főleg hardveroldalról, de van benne néhány szoftveres nyalánkság is. Innen tudod letölteni a folyóirat egyes számait, ezen belül "Az LPT port vezérlése alfától omegáig" című részeket ajánlom figyelmedbe.
Remélem tudtam segíteni.
Üdv
(#) kobold válasza kekmokus hozzászólására (») Szept 1, 2008 /
 
Nem egészen értem a kérdést...
A linkelt io.dll dokumentációja is ott van az oldalon. A programodba include-olod a megfelelő header file-t (vagy deklarálod a hívásokat, ahogy a nyelvnek kell), és vagy az alkalmazás, vagy a rendszer könyvtárába bemásolod a dll-t. Ezután már csak annyi kell, hogy meghívod a szükséges függvényt, a dll (és a benne lévő driver) pedig végrehajtja a kérést.
Többnyire a 0x378-as címen érjük el az LPT1 portot, a pontos címet a BIOS-ból tudod kilesni. Ha a dokumentációkat is átnézed, akkor láthatod, hogy ez a cím (báziscím) az adatregiszterre vonatkozik, vagyis ha egy byte-ot beírsz a báziscímen lévő regiszterbe, akkor annak bitjei szerint állnak majd be a port adatvonalai.
Erről ennél többet beszélni csak időpocséklás, meg kell nyitni a szintén letölthető mintakódot, és az alapján megírni a saját verziódat. Az meg, hogy mit hová miért kell beírni, ritkán érdekli a programozót, a lényeg az, hogy a dokumentációnak megfelelően, jól írja be (egy PLC-nél is mindegy, hogy egy vezérlőbit miért engedélyezi a soros portot, a lényeg az, hogy ha kell a port, be kell írni a bitet).
(#) zenetom válasza kekmokus hozzászólására (») Szept 1, 2008 /
 
Szia!
EZEN a linken van leírás hogyan tudod pascalból elérni az LPT portot dll segítségével, van példaprogram is, és a dll-t is lelehet tölteni (inpout32.dll). Bal oldalt a menünél elektronika=>LPT Port elerese NT alapu rendszereken.
(#) kekmokus hozzászólása Szept 2, 2008 /
 
köszönöm szépen mindenkinek a segítséget. azt hiszem hogy valamit rosszul gondoltam, vagy rosszul akartam csinálni..átnézek mindent amit küldtetek, megpróbálom megfejteni

mégegyszer köszönöm
(#) a1356 hozzászólása Szept 10, 2008 /
 
Hello Mindenkinek! Énis hasonló problémával küzdök, anyi különbséggel,hogy én C# nyelven szeretném megírni a programot+ a legnagyobb gondot az okozza, hogy úgy szeretném megcsinálni a programot, h ha lenyomok egy gombot akkor jelenjen meg egy jel az egyik kimeneten... Az igazat megvallva motorvezérléshez kell... Volt egy belinkelt oldal,amin láttam hasonlót,de azt más írta és előre beprogramozott műveleteket hajtott végre...én azt szeretném h ha a H-hídba befogott motorom akkor menjen előre vagy hátra ha én lenyomom a gombot... Ha tud valaki segíteni azt megköszönném!
(#) kaszarobert hozzászólása Feb 27, 2009 /
 
Sziasztok!

A game port eléréséhez is kell külön dll fájl az xp alól? Nem nagyon találtam ilyet...
(#) kaszarobert válasza kaszarobert hozzászólására (») Feb 28, 2009 /
 
Ok, már megy. Jó hozzá az Io.dll, csak más cím kell!
(#) CoderKevin hozzászólása Ápr 17, 2009 /
 
Hello!

Remélem még nincs elfeledve teljesen ez a téma, és valaki még benéz ide néha!
Tehát nekem is LPT port programozással lenne problémám. Építettem már jónéhány dolgot LPT-re, működik is minden szépen, de most a következő problémába ütköztem:

Az LPT port bemeneteit használom jelen esetben Visual Basic-ben, az egyszerűség kedvéért pl egy nyomógomb állapotának figyelésére.
Ha hozzárendelem valamilyen eseményhez a port bemeneteinek olvasását (pl. egérkattintás) akkor tökéletesen működik. De nekem a lényeg az lenne, hogy a bemenetre érkező jelek megváltoztassák a program futását, vagy egy változót, tehát a portot valahogy folyamatosan figyeltetni kellene.
Erre a problémára keresném a választ, a segítséget nagyon megköszönném!
(#) zenetom válasza CoderKevin hozzászólására (») Ápr 17, 2009 /
 
Csak VB-ben programozol?
(#) Programmer válasza CoderKevin hozzászólására (») Ápr 17, 2009 /
 
DOS alatt át lehetett írni a timerhez tartozó megszakítást, talán az LPT megszakítás függvényét is felül lehet írni. Csak ötlet, egyeltalán nem biztos hogy windoz alól (vagy egyeltalán) működne.
(#) CoderKevin válasza zenetom hozzászólására (») Ápr 18, 2009 /
 
Sajnos csak VB-ben. Meg QB-ben..
(#) kobold válasza CoderKevin hozzászólására (») Ápr 18, 2009 /
 
VB alól ez a lehetetlent súrolja Használhatsz timer-t, ami lekérdezgeti a portot, de 55 ms alá nem nagyon érdemes állítani a ciklusidőt, mert a Win nem tudja lekezelni, ráadásul minél rövidebb az idő, annál nagyobb terhelést jelent a processzornak. Multimédiás timer-ek használatával 1 ms felbontás az elméleti határ, még nagyobb processzorterheléssel, és ehhez már néhány API-hívás is kell.
Mivel interrupt-bemenet csak egy van, normál bemenet pedig több, az összes figyelésére én egy új szálat indítanék el. Erre nem igazán való a VB, C vagy ASM kell, mondjuk egy DLL-t megírva. Basic meghív egy függvényt a DLL-ben, paraméterként átadja az egyik szubrutinjának a címét (keress rá az AddressOf szóra a súgóban, neten). Az elindít egy szálat, ami folyamatosan figyeli a bemeneteket, illetve első híváskor és későbbi változáskor visszahívja a megadott című VB-rutint (lásd callback). Ha pedig egy lekérdezéssel végzett, Sleep(0) hívással felfüggeszti a működését, engedélyezi a processzoridő átadását egy esetleg éppen várakozó szálnak, így elkerülhető a "lefagyás", bár a gép lassulni fog.
Nem túl elegáns megoldás, ráadásul a többszálú (multithreaded) alkalmazásoknak sok buktatója van, és a VB-nek megfelelő DLL-t sem olyan gyerekjáték megírni. De hát sem a VB, sem a számítógép nem ilyen valósidejű feldolgozásokra van kitalálva.
Tetszőleges mikrovezérlőt beépítve megoldható lenne, hogy az figyelje a vonalakat, változás vagy kérés esetén interrupt-ot okoz az LPT-n (az ISR címét ekkor is át kell írni), majd soros / párhuzamos adatcserével átküldi a bemenetek állapotát a programnak. Előnye lenne, hogy a megszakításos kezelésnél jóval kisebb a processzor foglaltsága (csökken az overhead), mert elmarad a polling, ráadásul a kontroller lábszámának megfelelően sokkal több bemenet is feldolgozható. Hátránya a járulékos áramkör, tápigény, leválasztás / szintillesztés.
(#) inborn válasza CoderKevin hozzászólására (») Ápr 18, 2009 /
 
Ha hozzárendelem valamilyen eseményhez a port bemeneteinek olvasását (pl. egérkattintás) akkor tökéletesen működik.

Muszáj eseményhez kötnöd?


(#) inborn válasza kobold hozzászólására (») Ápr 18, 2009 /
 
A hozzászólás, kicsit sem vitt közelebb a megoldáshoz.
Ellenkezőleg!

Az imént próbáltam ki, hogy, hogy igen is meg lehet oldani a problémát VB-ben is.
Egészen annyira, hogy akár eseményt is „írhatunk” a problémához.
Amúgy, szép napot!
(#) CoderKevin válasza inborn hozzászólására (») Ápr 18, 2009 /
 
Idézet:
„Muszáj eseményhez kötnöd?”


Ha nem kötöm eseményhez a port olvasását, mikor olvasná a program a portot?
Kifejtenéd kicsit bővebben hogyan sikerült megoldanod?
(#) inborn válasza CoderKevin hozzászólására (») Ápr 18, 2009 /
 
Mivel, itt többször és többen kifejtették, hogy ez egy számtek oldal, nem mélyednék bele a kérdésbe.
Egy esemény létrehozása sem egyetlen mondatból áll, így kár forszírozni.
Nem volt arról sem szó, hogy milyen gyorsan kell reagálni az általad figyelt eseményre.
Tekintettel arra, hogy kilett hirdetve, hogy nem lehet, így még kötözködésnek is lehetne venne bármit írnék.
Az előzményekre való tekintettel kész receptet nem adok.
Annyit írok le, hogy Sub main()
Innen el lehet indulni.
(#) mayjak hozzászólása Jún 18, 2009 /
 
Sziasztok!

Már egy ideje nézegetem, h. h. kell LPT portot vezérelni, de még nem tudok, az biztos.
Szóval csak azt szeretném kérni, h. valaki fel tudna dobni egy példaprogramot c nyelven, ami mondjuk ha megnyomom az A-t jelet küld a portra, ha a B-t, akkor 0-t. Nem az exe érdekelne, hanem a forráskód (c-ül)
Köszi
(#) zenetom válasza mayjak hozzászólására (») Jún 18, 2009 /
 
Csak C nyelven jó?
(#) mayjak válasza zenetom hozzászólására (») Jún 18, 2009 /
 
Azért gondoltam c-re, mert olyat már láttam, és nem szeretnék teljesen új nyelvet kezdeni.
Amúgy, ha Imagine Logo (suliban tanították) alól lehetne vezérelni annak is nagyon örülnék , csak ebben nem bízok.
(#) icserny válasza mayjak hozzászólására (») Jún 18, 2009 /
 
A tutorial on Parallel port Interfacing

Ha túl szűkszavúnak találod, akkor meglátogathatod a
Parallel Port Central oldalt is.
(#) kobold válasza mayjak hozzászólására (») Jún 18, 2009 /
 
Elhangzott már többször is az io.dll neve ezen a fórumon, én ezt javasolnám. A dokumentációja tiszta, érthető, maga a dll nagyon könnyen kezelhető, és majdhogynem olyan nyelven ír az ember programot hozzá, amilyenen szeretne.
Azért ajánlom ezt, mert a port elérésének régi módja (lásd _inp(), _outp() hívások) a védett mód megszületése óta nem olyan egyszerű, sok régi programnál gyakori is a "Privileged instruction" című hibaüzenet WIN98 utáni rendszereken. A linkelt dll ezt hidalja át, a user program dolga csak a dll függvényeinek hívogatása (mintakódok is vannak).
Az már, hogy "B" karakter után hogyan lesz valami a porton, még kevésbé tartozik erre a fórumra, mint amiket eddig leírtam. Szerintem nézz szét egy célirányosabb fórumon, illetve az MSDN-ben a kbhit(), getch() hívások háza táján.
(#) mayjak válasza icserny hozzászólására (») Jún 18, 2009 /
 
Köszi szépen!
majd átnézem.
(#) Dr.Szomjas hozzászólása Feb 7, 2012 /
 
Sziasztok!
Eléggé halott a fórum, és már a google sem tud segíteni, így maradt a menekülés vékony ösvénye a jó öreg fórumozás...remélem tudtok segíteni! Egy ideje engem is érdekel az LPT port programozása, minden további gond nélkül tudok kapcsolgatni 8 ledet egyesével vagy egyszerre stb. és itt merül ki a tudásom. Hogyan lehetne megoldani ha pl. nem csak 8 ledet szeretnék kapcsolgatni? Hallottam olyasmiről, hogy a bemeneteketet át lehet "fordítani" kimenetnek, de még az is kevés, és az LPT kártya sem igazán járható út...van valami jó ötletetek?
(#) _JANI_ válasza Dr.Szomjas hozzászólására (») Feb 7, 2012 /
 
Szia! Nem igazán új ötlet. De a WINAMP Discolitez 32 Deluxe (Link) áramköre, viszonylag egyszerűen, 32 kimenetté szélesíti 8 kimeneti bitet. Link az áramkör oldalára.
(#) Dr.Szomjas válasza _JANI_ hozzászólására (») Feb 7, 2012 /
 
Köszönöm, megnézem!
(#) Medve válasza Dr.Szomjas hozzászólására (») Feb 7, 2012 /
 
Szia, ha ez sem elég, és végtelen időd van rá, akkor végtelen számú kimenetet használhatsz, ha soros bemenetű és párhuzamos kimenetű shift-regisztereket alkalmazol.
(#) lesliecold hozzászólása Feb 10, 2016 /
 
Sziasztok! Egy kis segítségre lenne szükségem! HD 44780-as vezérlővel ellátott LCD-t szeretnék használni LPT portról. A rajznak megfelelően kötöttem az lpt-re a kijelzőt, letöltöttem az LCD smartie-t, beállítottam, de meg se nyikkan az LCD. Próbáltam már nagyon Sok típus azonos kijelzővel, kizárva a rossz LCD lehetőségét, de továbbra is az eredmény semmi. Egyébként ez egy régi gép a műhelyben, xp van rajta.
A hozzászólás módosítva: Feb 10, 2016
Következő: »»   1 / 2
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem