Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Opet Taj Port!!!!

[es] :: C/C++ programiranje :: Opet Taj Port!!!!

[ Pregleda: 3871 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

GOSICA
Niksic

Član broj: 13191
Poruke: 4
*.niksic.cg.yu



Profil

icon Opet Taj Port!!!!21.08.2003. u 09:00 - pre 251 meseci
Vec neko vrijeme onako amaterski se igram sa C++ Borland bilder-om i najvise me je yanimalo upravljanje nekim mojim hardverom (neki robotici, automobilcici, ves masina i tako to jer mi je ipak elektronika bliza nego programiranje) preko paralelnog porta. Slanje komandi i ocitavanje informacija sam vrsio preko pinova porta pomocu funkcija definisanih na sledeci nacin

void outp(short int portid, unsigned char byte_value)

{ asm
{
push ax // upis sadrzaja ax registra na stek
push dx // upis sadrzaja dx registra na stek
mov al,byte_value // upis vrijednosti u al
mov dx,portid // upis adrese porta u dx
out dx,al // upis al (byte_value) na dx (portid)
pop dx // obnavljanje sadrzaja dx sa steka
pop ax // obnavljanje sadrzaja ax sa steka
}
}

int inp(short int portid)
{
unsigned char byte_value;

asm
{
push ax // upis sadrzaja ax registra na stek
push dx // upis sadrzaja dx registra na stek
mov dx,portid // upis adrese porta u dx
in al,dx // upis vrijednosti sa dx (portid) u al
mov byte_value,al // upis al u byte_value
pop dx // obnavljanje sadrzaja dx sa steka
pop ax // obnavljanje sadrzaja ax sa steka
}
return byte_value;

Sta je problem. Sve je to odlicno radilo pod 98-icom ali nakon instalacije XP ova prica ne prolazi. Objasnjenje sam dobio u smislu da XP ne podryava direktan pristup hardweru preko inline asemblerskih funkcija. Vidio sam na forumu i druge koji imaju isti problem ali jos nijesam uspio da shvatim na koji nacin to da prevazidjem. Posto mi je sve ovo relativno novo moguce da je i neko dao resenje ali ja ga nisam jos ukapirao jer ne baratam bas najbolje jos uvijek sa svom ovom tematikom. Zanima me konkretno resenje i ukoliko neko moze da mi pomogne ili me uputi gdje da trazim rjesenje! Yelim samo da mi stari projekti prorade pa makar i mijenjao cijeli kod. Prosto nemogu da vjerujem da je najprostije slanje signala na zeljeni pin pod XP komplikovanije vec se iskreno nadam da je u pitanju samo ukljucivanje neke dodatne biblioteke ili nesto slicno.
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
*.racasse.se

Sajt: dejan.lekic.org


+2 Profil

icon Re: Opet Taj Port!!!!21.08.2003. u 09:25 - pre 251 meseci
Za sva pitanja u vezi razvoja aplikacija pomocu Borland-ovih produkata predlazem Borland Developers Network sajt lociran na http://bdn.borland.com . Jos bolje od toga je da preko nekog news preglednika (Mozilla Thunderbird recimo) odes na news://newsgroups.borland.com .

Na Code Central-u (takodje deo BDN-a) sam davno nabasao na neke primere kako raditi sa paralelnim portom, tako da predlazem i to da pogledas...
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
199.171.112.*



+6 Profil

icon Re: Opet Taj Port!!!!21.08.2003. u 16:19 - pre 251 meseci
NT kernel ti ne dozvoljava da koristiš komande in i out za komunikaciju sa hardverom. Predlažem ti da pročitaš sledeći članak o tome kako se vrši komunikacija sa serijskim portovima na NT sistemima:

http://www.codeproject.com/system/serial_com.asp
 
Odgovor na temu

bogikv
Kraljevo

Član broj: 13446
Poruke: 1
*.tron-inter.net



Profil

icon Re: Opet Taj Port!!!!28.08.2003. u 00:25 - pre 251 meseci
Kao sto ti vec rekose u OS sa kernelom ne mozes direktno da pristupis hardweru vec to radis kroz sam kernel cija je to jedna od uloga u OS.
Kako koristis Borlandov proizvod kao razvojno okruzenje moj predlog je da probas jedan besplatan dodatak od slovenac Dejana Crnila koji je razvio alate za ComPort koji se mogu koristiti u Borland C++, Delphiju i Kylixu. Ovaj alat ti sluzi kao interfejs prema OS tako da te ne interesuje na kojem operativnom sistemu ces da radis (nesto slicno ActivX kontroli samo razvijenoj za Borland).
Ja sam iamo problema sa ocitavanje komuinikacionog porta i upravu platformsku "nezavisnost" pod Win OS-om koju sam resio sa ovim dodatkom.
Nadam se da sam ti sa ovim malo pomogao.
 
Odgovor na temu

Goran Rakić
Beograd

Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: Opet Taj Port!!!!28.08.2003. u 09:10 - pre 251 meseci
Pazi svaki OS mora da ima kernel koji radi mnogo više toga od toga da zabrani pristup hardveru. Samo neki kerneli imaju (to je valjda protected mod) mogućnost da to urade.
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

headstrong
IT Sektor
SCG

Član broj: 5194
Poruke: 40
*.ptt.yu



Profil

icon Re: Opet Taj Port!!!!28.08.2003. u 10:25 - pre 251 meseci
Ono što XP odn. Win NT sistemi ne dozvoljavaju u "User modu" (ring 3), kao npr. direktan pristup I/O portovima, to je dozvoljeno iz "Kernel moda" (ring 0). Za ovo se mora napisati drajver (.sys modul) što se ne može učiniti u BCB-u (ako je neko uspeo neka se javi). Potreban ti je Win XP DDK koji dolazi sa Visual C kompajlerom.
Pisanje drajvera je sasvim druga tema, i o tome se mora pročitati dosta literature ali i MSDN ti može dosta pomoći.
Trenutno radim na drajveru preko koga možeš vršiti operacije nad I/O portovima na sistemu. Kako želiš da radiš sa LPT portom, postoji još jedan problem koji se zove parport.sys koji stalno očitava port u pokušaju da pronađe neki PnP uređaj i ume da smeta, u zavisnosti od logičkih stanja registara porta. Rešenje za ovo je zauzimanje porta iz našeg drajvera, zatim operacije nad njim i na kraju oslobađanje porta. Implementacija ovog rešenja je u toku pa ako možeš sačekati jedno par nedelja, dobićeš gotovo rešenje (normalno i DLL veznik uz drajver).
Što se COM portova tiče, oni su u potpunosti podržani u od strane API-ja i sve što ti je potrebno od literature je MSDN.
 
Odgovor na temu

Beban
Beograd

Član broj: 6351
Poruke: 39
*.ptt.yu



Profil

icon Re: Opet Taj Port!!!!14.09.2003. u 23:06 - pre 250 meseci
I mene su sliccne stvari muccile jedno vrijeme - samo je meni bio potreban pristup fizicckoj memoriji. Portovi se nalaze u IO mapi, pa je onemoguccen pristup i njima. Ukratko - potreban ti je kernel drajver koji cce ti to omogucciti.

Ja sam na net-u pronalazio razna rjessenja - od besplatnih (sa source kodom) do komercijalnih. Medjutim ni jednim nisam bio u potpunosti zadovoljan, pa sam iskoristio neke od njih, nessto ispravljao, dodavao svoj kod i na kraju sam dobio jednu "budzevinu" koja mi je odradila posao. Planirao sam ovih dana da to joss jednom pregledam, nessto ispravim, prekompajliram, i da konaccno jednom za uvijek rijessim taj problem.

Ukoliko si zainteresovan - poslaccu ti to na e-mail (jedan .sys i jedan .dll fajl), samo cce mi trebati nedjelja ili dvije da zavrssim ono ssto sam naumio.
Taj drajver omoguccava direktan pristup portovima, kao i svim hardverskim uredjajima i fizicckoj memoriji pod Win XP. Trebalo bi da radi i u Win NT/2000, samo ssto ga pod njima joss nisam isprobao.
 
Odgovor na temu

[es] :: C/C++ programiranje :: Opet Taj Port!!!!

[ Pregleda: 3871 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.