Search
 
 
  Engleski
 
 
 
Open in this window (click to change)
Forum@DeGiorgi: Početna
Forum za podršku nastavi na PMF-MO
Login Registracija FAQ Smajlići Članstvo Pretražnik Forum@DeGiorgi: Početna

Pitanje u vezi modema...
WWW:

Moja sarma
 
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2
Prethodna tema :: Sljedeća tema  
Autor/ica Poruka
Matko
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 15. 06. 2003. (01:56:38)
Postovi: (57)16
Sarma = la pohva - posuda
= 10 - 2

PostPostano: 18:18 uto, 13. 4. 2004    Naslov: Pitanje u vezi modema... Citirajte i odgovorite

Netko je ovdje negdje nedavno bio postavio pitanje kako ostvariti komunikaciju s modemom direktno iz C-a, i ja lijepo maloprije bio natipkao odgovor offline i sad vise ne mogu naci tu originalnu poruku (zasto li sam uvjeren da je u medjuvremenu nestala?:) ), pa odgovor (da ipak ne propadne) stavljam u zaseban topic.

---

Iz samog ANSI C-a nikako nije moguce uspjeti ostvariti komunikaciju s modemom jer naprosto ne postoje funkcije za port I/O u standardnoj biblioteci.
Ono cemu je u prvom koraku moguce pribjeci jest upotreba funkcija iz <conio.h> koje iako nisu standardizirane, dolaze s gotovo svakim C compilerom.
(Napomena: U <conio.h> se inace nalaze funkcije za console i port I/O, od kojih su neke mozda nekima i poznate - npr. getch(), getche(), kbhit() i sl.)
U svakom slucaju, funkcije koje su potrebne su inp() i outp() za citanje jednog bytea sa, odnosno pisanja jednog bytea na zadani port.
Modem je uredjaj koji je spojen (bilo fizicki bilo virtualno) na serijski port (to su oni portovi koji nose oznaku COM), a cije adrese su obicno poput 02E8, 02F8, 03E8, 03F8,... (naravno ne postoji nikakva garancija da su navedene adrese ovakve i na drugim racunalima).
I uglavnom to je sve sto je potrebno sto se tice C-a.
Naravno, da bi se uopce moglo smisleno upravljati s modemom potrebno je prvo dobro prouciti set AT komandi (koje bi se onda slale na modem byte po byte pomocu outp() funkcije), no, to je nesto sto onda vise nema veze s C-om.

Inace, serijska komunikacija ostvarena pomocu inp() i outp() funkcija je vrlo vrlo rudimentarna. Ne postoji gotovo nikakva mogucnost kontrole transporta podataka i kontrole greske. Opcenito, gledano s malo apstraktnijeg aspekta, ulaz i izlaz na komunikacijskom portu moze biti ostvaren kao asinkroni (overlapped) i sinkroni (nonoverlapped). Za rad s modemom vise bi nas veselio asinkroni mod (kod kojeg funkcije rade u blocking nacinu rada - i/o operacija mora zavrsiti prije nego sto se vrati kontrola pozivatelju funkcije). U svakom slucaju, koji god od ova dva nacina rada da se odabere, trebat ce esencijalno pribjeci koristenju API funkcija iz operacijskog sustava, a to je onda nadasve platform dependent stvar i tu vise nema nikakvog pravila kako se dane funkcije zovu i koja je sintaksa njihove upotrebe, pa je o tome nemoguce opcenito pisati.
Netko je ovdje negdje nedavno bio postavio pitanje kako ostvariti komunikaciju s modemom direktno iz C-a, i ja lijepo maloprije bio natipkao odgovor offline i sad vise ne mogu naci tu originalnu poruku (zasto li sam uvjeren da je u medjuvremenu nestala?Smile ), pa odgovor (da ipak ne propadne) stavljam u zaseban topic.

---

Iz samog ANSI C-a nikako nije moguce uspjeti ostvariti komunikaciju s modemom jer naprosto ne postoje funkcije za port I/O u standardnoj biblioteci.
Ono cemu je u prvom koraku moguce pribjeci jest upotreba funkcija iz <conio.h> koje iako nisu standardizirane, dolaze s gotovo svakim C compilerom.
(Napomena: U <conio.h> se inace nalaze funkcije za console i port I/O, od kojih su neke mozda nekima i poznate - npr. getch(), getche(), kbhit() i sl.)
U svakom slucaju, funkcije koje su potrebne su inp() i outp() za citanje jednog bytea sa, odnosno pisanja jednog bytea na zadani port.
Modem je uredjaj koji je spojen (bilo fizicki bilo virtualno) na serijski port (to su oni portovi koji nose oznaku COM), a cije adrese su obicno poput 02E8, 02F8, 03E8, 03F8,... (naravno ne postoji nikakva garancija da su navedene adrese ovakve i na drugim racunalima).
I uglavnom to je sve sto je potrebno sto se tice C-a.
Naravno, da bi se uopce moglo smisleno upravljati s modemom potrebno je prvo dobro prouciti set AT komandi (koje bi se onda slale na modem byte po byte pomocu outp() funkcije), no, to je nesto sto onda vise nema veze s C-om.

Inace, serijska komunikacija ostvarena pomocu inp() i outp() funkcija je vrlo vrlo rudimentarna. Ne postoji gotovo nikakva mogucnost kontrole transporta podataka i kontrole greske. Opcenito, gledano s malo apstraktnijeg aspekta, ulaz i izlaz na komunikacijskom portu moze biti ostvaren kao asinkroni (overlapped) i sinkroni (nonoverlapped). Za rad s modemom vise bi nas veselio asinkroni mod (kod kojeg funkcije rade u blocking nacinu rada - i/o operacija mora zavrsiti prije nego sto se vrati kontrola pozivatelju funkcije). U svakom slucaju, koji god od ova dva nacina rada da se odabere, trebat ce esencijalno pribjeci koristenju API funkcija iz operacijskog sustava, a to je onda nadasve platform dependent stvar i tu vise nema nikakvog pravila kako se dane funkcije zovu i koja je sintaksa njihove upotrebe, pa je o tome nemoguce opcenito pisati.


[Vrh]
Korisnički profil Pošaljite privatnu poruku
divERgenT
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 04. 03. 2004. (17:41:15)
Postovi: (4B)16
Sarma = la pohva - posuda
= 0 - 0
Lokacija: Tu negdje

PostPostano: 18:51 uto, 13. 4. 2004    Naslov: Citirajte i odgovorite

Puno hvala na odgovoru, sad je lakse
inace nado sam se da postoji neki direktniji pristup pa da i nije nesto previse ansi c, nisam neki c expert pa buduci da je jezik sveobuhvatljiv, u odnosu na ostalo, nadosam se da postoje neke procedure i za ovakve operacije, al hvala budem se ovim pozabavio , odgovor mi je puno reko..

btw sori sta sam ukinuo topic: u meduvremenu sam nasao jednu skriptu( prek 500str ) mislo da je puno konkretna, zapravo je za 4. osnovne(po meni), na kraju nisam naso ni conio.h, a o modemu je bila mala digresija krajnje opcenita, kao i za sve ostalo ... dobro da nisi bacio odgovor
Puno hvala na odgovoru, sad je lakse
inace nado sam se da postoji neki direktniji pristup pa da i nije nesto previse ansi c, nisam neki c expert pa buduci da je jezik sveobuhvatljiv, u odnosu na ostalo, nadosam se da postoje neke procedure i za ovakve operacije, al hvala budem se ovim pozabavio , odgovor mi je puno reko..

btw sori sta sam ukinuo topic: u meduvremenu sam nasao jednu skriptu( prek 500str ) mislo da je puno konkretna, zapravo je za 4. osnovne(po meni), na kraju nisam naso ni conio.h, a o modemu je bila mala digresija krajnje opcenita, kao i za sve ostalo ... dobro da nisi bacio odgovor


[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3562)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 18:56 uto, 13. 4. 2004    Naslov: Citirajte i odgovorite

[color=darkred]Molim, ne brisati topice i postove, osim ako otvorite "duplikate"... :? Hoce ponekad zbuniti... :(

Hvala! 8)[/color]
Molim, ne brisati topice i postove, osim ako otvorite "duplikate"... Confused Hoce ponekad zbuniti... Sad

Hvala! Cool



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
divERgenT
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 04. 03. 2004. (17:41:15)
Postovi: (4B)16
Sarma = la pohva - posuda
= 0 - 0
Lokacija: Tu negdje

PostPostano: 19:01 uto, 13. 4. 2004    Naslov: Citirajte i odgovorite

8-[
sori vsego i matko , necu vise, obecavam,

brijo sam, nije bash iz kolegija, niko se nejavlja, i mislio naso odgovor :roll:


8-[
Anxious
sori vsego i matko , necu vise, obecavam,

brijo sam, nije bash iz kolegija, niko se nejavlja, i mislio naso odgovor Rolling Eyes


Anxious


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Prethodni postovi:   
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2 Vremenska zona: GMT + 01:00.
Stranica 1 / 1.

 
Forum(o)Bir:  
Ne možete otvarati nove teme.
Ne možete odgovarati na postove.
Ne možete uređivati Vaše postove.
Ne možete izbrisati Vaše postove.
Ne možete glasovati u anketama.
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2002 phpBB Group
Theme created by Vjacheslav Trushkin
HR (Cro) by Ančica Sečan