Fórum témák

» Több friss téma
Fórum » Programozás mikéntjei
Lapozás: OK   1 / 9
(#) Algee hozzászólása Nov 14, 2005 /
 
PCI portról szeretnék adatokat beolvasni. Melyik programozó sw-rel tudom a legegyszerűbben ezt, én a TurboPascalt ismerem, ezzel el tudom e érni?
(#) hilbi válasza Algee hozzászólására (») Nov 14, 2005 /
 
PCI ? Tehát pl egy kártyához szertnél hozzáférni??

valahogy nem értem.
Kérlek bővebben.
(#) Algee válasza hilbi hozzászólására (») Nov 14, 2005 /
 
készíteni akarok egy kártyát, melyen egy mikrovezérlő kérésre, vagy címzéssel - ha egyezik a cím és a kártya címe - , a kártya által szolgáltatott adatokat szeretném beolvasni és feldolgozni. Az adatok szélessége 8, 16, 32 bit.
(#) Gigabb válasza Algee hozzászólására (») Nov 16, 2005 /
 
Hali.
Ha windows xp alól próbálsz közvetlenül akármilyen portot megcímezni nem fogja hagyni (azonnali "KÉK HALÁL"), csak xp alapú diveren keresztűl fog sikerülni, vagyis amit az oprendszerenk és egy kártyához megírt drivernek is támogatnia kell parancsot.

Én ugyanis LPT-re szeretnék közvetlenűl írni eddig nem túl sok sikerrel.

Szerintem TP-ből elérni csak assembleren keresztül tudod.

(#) Algee válasza Gigabb hozzászólására (») Nov 17, 2005 /
 
xp alatt LPT portot nem sok sikerrel fogsz írni, eddigi tapasztalataim szerint. Volt egy progi, amire azt mondták, hogy azzal menni fog, de nem ment.
Portokat Én alapból nem próbálok xp alatt programozni. Próbáld Windows Millenium vagy korábbi verziók alatt
(#) Gigabb válasza Algee hozzászólására (») Nov 17, 2005 /
 
Sejtem, hogy nem nagyon fog menni, de már volt 1-2 sikerélményem - DOS alapú nyomtatódrivereken keresztűl PL: tűs epsonok . Ha ez sikerülne az nagy áttörést jelentene számomra. Te az assemblerhez, hogy viszonyulsz, mert én iszonyulok tőle
(#) mspike válasza Gigabb hozzászólására (») Nov 17, 2005 /
 
nekem mentek a port vezérlések, delphi, vagy c++ builder és egy componens ami megvalósítja nekünk a Com vagy LTP kommunikációt, egyébbként minden ilyen dolog rendesen windows API-n kersztül működne... ne...
(#) Gigabb válasza mspike hozzászólására (») Nov 17, 2005 /
 
Ah!

Mi lenne az a komponens (delphi ha lehetséges), mert ha már megvan minek izzadjak vért.

Én még az USB-n keresztül is gondolkodtam mert elvégre az is soros port Mi erről a véleményed?
(#) Gigabb válasza Gigabb hozzászólására (») Nov 17, 2005 /
 
Algee

Gondolkoztam a problémádon és azt hiszem ha a kártyát megtudnád úgy csinálni, hogy amikor bekapcsolod a gépedet akkor a kártyádnak bekéne jelentkeznie a BIOS-ba, és ami alapján lenne egy fizikai címe, és kapna megszakítást, - (szerintem ez egy kicsit olyan mintha PLUG & PLAY kártyát csinálnál). Ha ez meglenne akkor asm nélkül is eltudnád érni portcímzéssel a kártyát.
(#) Algee válasza Gigabb hozzászólására (») Nov 18, 2005 /
 
Hogy működik ez a bejelentkezés a BIOS-ba?
van erre egy protokol? Ha igen, akkor a címet ez alapján kapja az eszközöm? Ezígy nagyban megkönnyítené a dolgot.
Megszakításkérésre nincs szükségem, Csak I/O írás és olvasást akarok.
(#) Gigabb válasza Algee hozzászólására (») Nov 18, 2005 /
 
Hali.
Utánanéztem a dolognak, nem olyan egyszerű a dolog. Ha PCI kártyát szeretnél csinálni akkor csak GENERIC PCI interfésszel lehet megcsinálni a vezérlést, úgy, hogy az interfészt is fel kell programozni mint egy PCI-et. Ekkor lessz neki egy ID száma amit a BIOS lekérdez, és ad neki egy fizikai címet -! de vigyázz, hogy ne legyen olyan ID-je amit már más gyártó használ mert a Windows ez alapján azonosítja a kártyákat és a megfelelő drivert (összeakad a másikkal), és PCI-nél kap automatikusan megszakítást is. ISA esetén csak ID alapján lesz fizikai címe, megszakítása nem.
(#) kardi válasza Algee hozzászólására (») Dec 28, 2005 /
 
Sziasztok!

Szükségem lenne egy programátorra amivel lehet 16F628 PICet programozni.
Tudna esetleg valaki segiteni. Kapcs. rajz, szoftver vagy egy link is elég lenne.

Előre is köszönöm!
Kardi
(#) mspike válasza kardi hozzászólására (») Dec 28, 2005 /
 
ICD2 vagy JDM, mind kettőt megtalálod itt a kapcsolások között, Csak a lábakat kell megkeresned a picen és ezekre máris kötheted. a JDM jóval olcsóbb megoldás, az ICD2 megjóval komplexebb tudású.
A port progizóknak meg azt ajánlom guglin keressenek rá, com component, vagy LTP component és akkor találnak egyrakást, aztán válasszák ki a megfelelőt, érdemes még a www.prog.hu fórumjában nézelődni, mindig van ilyen topik...
(#) Barbár válasza mspike hozzászólására (») Okt 3, 2007 /
 
Hi!

Én azügyben szeretnék segítséget kérni, hogy LTP port 2. 3. 4. 5. 6. 7. 8. 9. lábára szeretnék logikai igen (1) és logikai nem (0) jelet küldeni, és mindezt Delphiből kellene megcsinálnom Xp alatt.

Ehhez kellene nekem megfelelő komponens a Delphihez, meg (ha lehet) akkor 1 kis segítség is kérnék a megfelelő eljárás elkészítéséhez.

Előre is köszi!!!

Üdv!

Barbár
(#) zsoltee0001 válasza Barbár hozzászólására (») Okt 3, 2007 /
 
hi
ez az, de valamiért most nekem nem működik, nézd meg, hátha neked nagyobb szerencséd lesz vele

delphi.rar
    
(#) Stadi válasza Barbár hozzászólására (») Okt 3, 2007 /
 
A következők kellenek:

1. Kernel módú I/O driver.
2. Portot kezelő komponens Delphi-hez vagy DLL. Ebből sokféle létezik.
3. Némi alapvető programozói tudás Pascal vagy Delphi nyelven.

Az első 2-t megtalálod az oldalamon, a Letöltés alatt.

Mint láthatod, én az io.dll-t választottam. Ennek használatához a következő sorokat kell beírni (pl.) a főprogram deklarációs részébe:

procedure PortOut(Port: Word; Data: Byte); stdcall; external 'io.dll';
function PortIn(Port: Word): Byte; stdcall; external 'io.dll';
function IsDriverInstalled: Boolean; stdcall; external 'io.dll';

Innentől már csak a párhuzamos port regisztercímeit kell ismerni. Neked elég lesz az adatregiszter is, ami a báziscímen van. A Google segít, ha nem vagy tisztában ezekkel.
(#) Barbár válasza Stadi hozzászólására (») Okt 3, 2007 /
 
Köszi az edigi segítséget!

leszedtem azt a DLL-t amit mondtál, ezt hova kell bemásolnom?

Előre is köszi!

Barbár
(#) Stadi válasza Barbár hozzászólására (») Okt 3, 2007 /
 
Minden le van írva a lapomon... Mit, hova, miért, ... Ugyanúgy kell eljárnod, mintha az LPT Debuggert telepítenéd.
(#) Barbár válasza Stadi hozzászólására (») Okt 3, 2007 /
 
Köszi, már látom. Este áttanulmányozom, ha hazaértem, próbálkozom, aztán ha nem meggy akkor még jövök a hülye kérdéseimmel ok?

Köszi szépen!

Üdv! Barbár
(#) fenolftalein hozzászólása Okt 3, 2007 /
 
azért nem mindegy, hogy hol deklaráljuk:

implementation

{$R *.dfm}
{Io.dll fügvények deklarációja}
procedure PortOut(Port: Word; Data : Byte); stdcall; external 'Io.dll'
function PortIn(Port: Word): Byte; stdcall; external 'Io.dll'
procedure SetPortBit(Port: Word; Bit: Byte); stdcall; external 'Io.dll'
procedure ClrPortBit(Port: Word; Bit: Byte); stdcall; external 'Io.dll'


és egy példa, egy gombnyomásra 0F-et ír az LPT adatbuszára:

procedure TForm1.Button1Click(Sender: TObject);
begin
PortOut($378,$0F);
end;

(#) Barbár válasza fenolftalein hozzászólására (») Okt 3, 2007 /
 
NA EZT NEVEZEM CÉLRATÖRŐ SEGÍTSÉGNEK!!!!!!!!!!
Köszi!

Most / pill 2 kérdésem lenne ezzel kapcsolatban:

1# Hogy tudom eghatározni h pl a 2. 3. 4. 5. 6. 7. 8. 9. lábak közül melyikre szeretnék éppen 0-t vagy 1-et írni?

2# Mit jelent az általad írt F betü a 0 mögött???

Köszi!

Üdv!

Barbár
(#) Stadi válasza Barbár hozzászólására (») Okt 3, 2007 /
 
1: Vagy 1 byte-ot írsz ki (PortOut): ebben az esetben összeadod a bitek és a helyiértékeik szorzatát és azt írod ki; vagy a SetPortBit és ClrPortBit eljárást használod, előbbi a 2. paraméterben adott bitet 1-re, utóbbi 0-ra állítja. Bár én ez utóbbi 2-t sose használtam.

2: Inkább azt kérdezed, mi az a $, nem? Hexa kód megadása, amit a fordító automatikusan helyettesít a decimális értékével.
(#) fenolftalein hozzászólása Okt 3, 2007 /
 
ja itt kezdődnek a gondok egy kicsit utánna kellene nézni a számrendszereknek. amit te lábaknak nevezel az valójában a port adatbusza talán először tisztázni kellene mi az a bit és mi az a byte nézd meg a kettes számrendszert amit én írtam 0F-et az tizenhatos számrendszerben van itt a byte-ot két 4 bit-es részre kell osztani így kell értelmezni a számot a felső 4 bit a 0 az alsó 4 bit az F. ezt jó hülyén magyaráztam el de talán érted mindegy ha nem vagy tisztában ezekkel a számrendszerekkel akkor talán PIC-et sem kellene még programoznod. pedig ezekkel a dolgokkal egy olyan magas szintű nyelvnél mint a Delphi is illik tisztában lenni...
(#) fenolftalein hozzászólása Okt 3, 2007 /
 
ezt nézd meg egy kis fogalom port ról ábrákkal ilusztrálva
(#) Moderátor hozzászólása Barbár hozzászólására (») Okt 3, 2007
 
Feltétlenül muszáj ennyi szmájlit berakni egy hozzászólásba? Én nem vágom ezt a dolgot...
(#) Barbár válasza (») Okt 3, 2007 /
 
Értem, csak épp eléggé örültem annak h már ennyi helpet kaptam, de akkor moderálom magam, és leredukálom a smile-k számát.

Üdv!

Barbár
(#) Barbár válasza Stadi hozzászólására (») Okt 3, 2007 /
 
Asszem kezdem kapizsgálni (szó szerint még csak kapizsgálni).

A kérdésem az lenne, hogy hogy tudom megcsinálni, hogy pl a 2. adatbusz 1-es jelet adjon (tehát ha pl ledet kötök rá akkor világítson, és akkor aludjon el amikor én szeretném.
Vagy most teljesen hülyeséget mondtam és az adatbuszokra küldök egy logikai igen (1) jelet akkor az csak egy bizonyos ideig fog áramot adni és utána nem?

Ja és amit fenolftalein írt h nem kéne PIC -programozásal foglalkoznom...
hallotta már 1-2 dolgot a PIC programozásról és azok alapján én is úgy terveztem, hogy ha 1 mód van rá megkerülném a PIC -programozást, és megpróbálom majd megoldani a dolgokat anélkül.

Üdv!

Barbár
(#) Stadi válasza Barbár hozzászólására (») Okt 3, 2007 /
 
98765432 : LPT lábak

00000001 : bináris érték

16318421 : helyiértékek (függőlegesen olvasd)
2426
8

76543210 : 2 kitevői a helyiértékekhez (lehet, hogy egyszerűbb ezt megjegyezni és ez alapján számolni a helyiértékeket)

Így működik:

- eldöntöd, melyik lábon legyen 5V és melyiken 0V,
- felírod binárisan úgy, ahogy itt fent írtam (1=5V, 0=0V),
- minden bitet összeszorzol az alatta levő helyiértékével,
- majd a kapott szorzatokat összeadod,
- az összeget kiküldöd a báziscímre a PortOut eljárással.

SetPortBit egyszerűbb, de ott egyszerre csak 1 bitet állíthatsz (ha jól sejtem), a fenti módszerrel viszont az összeset. De azért nézz bele az io.dll leírásába.

A port kimeneteit 10mA-nél nagyobb árammal ne terheld! A programod működését az oldalamon található tesztáramkörrel vagy voltmérővel ellenőrizheted.
(#) Barbár válasza Stadi hozzászólására (») Okt 4, 2007 /
 
Kezdem érteni a dolgot...

Tehát felíro hsorban h ha pl a 7. adatbuszon szeretnék 5V-ot akkor feírom h 00000100, és ezt hogy számolom át arra a számra amit ki akarok küldnei a báziscímre?

(a matek bizozonyos részeihez nagyon hülye vagyok... ) és ha megvan ez a szám akkor konkrétan hogy írom le az utasítást amivel a gép kiküldi a báziscímre?

A "PortOut($378,$xx);" utasításban gondolom a xx helyére kell beirnom valahogy, de hogy?

Előre is köszi! Meg köszi az eddigi segítséget is!

Üdv!

Barbár
(#) Stadi válasza Barbár hozzászólására (») Okt 4, 2007 /
 
Idézet:
„7. adatbuszon”


Tegyük tisztába a fogalmi zavart. Adatbuszból jelen esetben 1 db. van, és az nem más, mint egy 8 vezetékből álló csoport, amely a párhuzamos port 2-9. lábaira van kivezetve és általában D0..D7-nek szoktuk nevezni az egyes kivezetéseket. Tehát az idézett megfogalmazás számomra értelmezhetetlen.

A számolást illetően szerintem mindent érthetően leírtam. Olvasgasd, míg meg nem érted. (Ha van konkrét kérdésed, hogy valahol elakadtál a számolásban, és pl. nem tudod, mit mihez adj, akkor azt azért kérdezd meg nyugodtan.) Egyszerűen binárisból decimálisba kell átszámolnod az értéket.

Az eredményt decimálisan fogod kapni, így a $ sem kell elé.
Következő: »»   1 / 9
Bejelentkezés

Belépés

Hirdetés
XDT.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