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

Malo egzotike sa serijskim portom ?

[es] :: C/C++ programiranje :: Malo egzotike sa serijskim portom ?

[ Pregleda: 5692 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Dejan Lozanovic
Dejan Lozanovic
Beograd

Član broj: 691
Poruke: 2325
*.beograd-3.tehnicom.net

Jabber: null@elitesecurity.org
Sajt: speedy-order.com


+75 Profil

icon Malo egzotike sa serijskim portom ? 28.07.2002. u 20:26 - pre 264 meseci
E imam jedan jako egzotican problem, naime treba da napravim komunikaciju preko seriskog potra na dve nestandarde brzine, prva je 5 bauda , a druga je cini mi se na 10400, e kako takvu partizaniju napraviti ? ima li neko ideju ? preporucljivo bi bilo ako moze neki Unix kod.




 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
..ndg-pm4-1.dialup.nethere.net



+6 Profil

icon Re: Malo egzotike sa serijskim portom ? 28.07.2002. u 20:41 - pre 264 meseci
Nemam pojma za Unix, ali za Win32 ima dobar članak sa kodom na

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

anon676

Član broj: 676
Poruke: 759
*.verat.net



Profil

icon Re: Malo egzotike sa serijskim portom ? 28.07.2002. u 23:23 - pre 264 meseci
Redovi ce ti trebati to je definitivno...pa sad ti isfrikombinuj nesto
 
Odgovor na temu

Dejan Lozanovic
Dejan Lozanovic
Beograd

Član broj: 691
Poruke: 2325
*.tehnicom.net

Jabber: null@elitesecurity.org
Sajt: speedy-order.com


+75 Profil

icon Re: Malo egzotike sa serijskim portom ? 29.07.2002. u 13:36 - pre 264 meseci
Citat:
Dragi Tata:
Nemam pojma za Unix, ali za Win32 ima dobar članak sa kodom na

http://www.codeproject.com/system/serial.asp


Hvala na pomoci medjutim, vi ocigledno niste shvatili problem u celosti :))), naime 5 bauda i 10400 nisu standardne brzine komunikacije tu lezi ona rec egzotika, Evo vadim ono parce koda gde se lepo vidi da taj windows kode sto si mi dao ne fercera, sa unixom je slicna muka, 50 bauda je minimum koliko sam video po POSIX-u :)) , e sada nije da sam bubnuo te brzine prenosa, jer su po nekom ISO standardu definisani(verovatno sa razlogom da ne bi ljudi na PC racunaru lako radili diagnostiku automobila :)) )

Code:

 // Baudrate
        typedef enum
        {
                EBaudUnknown = -1,                      // Unknown
                EBaud110     = CBR_110,         // 110 bits/sec
                EBaud300     = CBR_300,         // 300 bits/sec
                EBaud600     = CBR_600,         // 600 bits/sec
                EBaud1200    = CBR_1200,        // 1200 bits/sec
                EBaud2400    = CBR_2400,        // 2400 bits/sec
                EBaud4800    = CBR_4800,        // 4800 bits/sec
                EBaud9600    = CBR_9600,        // 9600 bits/sec
                EBaud14400   = CBR_14400,       // 14400 bits/sec
                EBaud19200   = CBR_19200,       // 19200 bits/sec (default)
                EBaud38400   = CBR_38400,       // 38400 bits/sec
                EBaud56000   = CBR_56000,       // 56000 bits/sec
                EBaud57600   = CBR_57600,       // 57600 bits/sec
                EBaud115200  = CBR_115200,      // 115200 bits/sec
                EBaud128000  = CBR_128000,      // 128000 bits/sec
                EBaud256000  = CBR_256000,      // 256000 bits/sec
        }
        EBaudrate;


 
Odgovor na temu

anon676

Član broj: 676
Poruke: 759
*.verat.net



Profil

icon Re: Malo egzotike sa serijskim portom ? 29.07.2002. u 15:48 - pre 264 meseci
Dejane jedna od upotreba redova je sta, izmedju ostalog i uskladjivanje rada nekih uredjaja cije se brzine 'dosta' razlikuju :)
red ti je stek samo inverzno :)
 
Odgovor na temu

Pera_Anarhista
Autonomija

Član broj: 3473
Poruke: 113
195.252.103.*



Profil

icon Re: Malo egzotike sa serijskim portom ? 05.08.2002. u 20:48 - pre 264 meseci
"Mozda lupetam", ali ajde da probam... :)
Secam se da je u pascalu bila varijabla port[$387] ili tako nesto, koja ti daje trenutno stanje porta, a mogao si i da pises... Mozda tako nekako, pa da ih uskladis ? Doduse, ovo je, ako se dobro secam, bilo za paralelni port, serijski port je malo komplikovaniji, ali mozda upali...
nema mira, nema pravde

http://www.anarchy-serbia.tk
 
Odgovor na temu

Pera_Anarhista
Autonomija

Član broj: 3473
Poruke: 113
195.252.103.*



Profil

icon Re: Malo egzotike sa serijskim portom ? 05.08.2002. u 20:48 - pre 264 meseci
"Mozda lupetam", ali ajde da probam...
Secam se da je u pascalu bila varijabla port[$387] ili tako nesto, koja ti daje trenutno stanje porta, a mogao si i da pises... Mozda tako nekako, pa da ih uskladis ? Doduse, ovo je, ako se dobro secam, bilo za paralelni port, serijski port je malo komplikovaniji, ali mozda upali...
nema mira, nema pravde

http://www.anarchy-serbia.tk
 
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: Malo egzotike sa serijskim portom ? 06.08.2002. u 13:53 - pre 264 meseci
Neko bi rekao "kud si posao s ekserom u glavi" (necu da kazem ko, covek je poznata OpenSource faca u Beogradu i dolazi ovamo :).

Elem Pero AnarKisto jesi li citao http://www.tldp.org/HOWTO/Serial-Programming-HOWTO/ , pa brate ne mozes da pises nesto dok ne steknes potrebno znanje za to. Predlazem da procitas "Advanced programming in UNIX environment" i ovaj HOWTO ciji URL sam ti dao.

Sa druge strane gospodin Michael Sweet (jedan od programera koji stoje iza popularne FLTK biblioteke - www.fltk.org) je napisao izvanredan "Serial Programming Guide for POSIX Operating Systems" ( http://www.easysw.com/~mike/serial/ ) i imas to i u PDF formatu (sasvim normalno jer Michael-ov HTMLDoc eksportuje HTML u PDF :))))).

Eto nakon malo "shvrljanja" po raznim programerskim resursima sam ces naci resenje svog problema...

Puno pozdrava i nek te ne naljuti moja pocetna recenica, to je napisano cisto iz zezanja. :)
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

filmil
Filip Miletić
Oce Technologies B.V., inženjer
hardvera
Arcen, NL

Član broj: 243
Poruke: 2114
*.etf.bg.ac.yu

Jabber: filmil@jabber.org
ICQ: 36601391


+3 Profil

icon Re: Malo egzotike sa serijskim portom ? 18.08.2002. u 19:15 - pre 263 meseci
Citat:
Dejan Lozanovic:

Hvala na pomoci medjutim, vi ocigledno niste shvatili problem u celosti :))), naime 5 bauda i 10400 nisu standardne brzine komunikacije tu lezi ona rec egzotika, Evo vadim ono parce koda gde se lepo vidi da taj windows kode sto si mi dao ne fercera, sa unixom je slicna muka,



Dakle, ni ja ne znam da li sam "u celini i celosti" shvatio problem posto mi ne pada na pamet kako bi se
moglo direktno na PC-ju napraviti to sto ti treba. Sto se PC-ja tice, serijsku komunikaciju vode takozvani standardni
UART cipovi (npr. 16550 i sl.). Na modernim racunarima oni naravno ne postoje kao zasebni sklopovi i necete ih naci kako sede na maticnoj ploci, vec su jednostavno deo programirane logike. To su u sustini jednostavne napravice koje bajtove sa racunara mogu da "iscure" kroz serijsku vezu i da prispele bitove sa serijske veze "upakuju u bajt" pre prosledjivanja na PC.

Problem sa njima je sto se linijski takt dobija deljenjem jedne predefinisane standardne ucestanosti (nesto vise od 1MHz) tako da se brzine prenosa mimo standardnih ne mogu dobiti hardverski. Citaj: problem sa brzinama prenosa nije problem softvera ili operativnog sistema. Ogranicenje je hardver racunara koji prosto ocekuje neku iz skupa predefinisanih brzina. Moze se napraviti eksterni bafer za serijski port koji bi uskladjivao brzine. Ne bi moralo da bude previse skupo a vredi razmisliti o tome s obzirom da ima sanse i da se isplati. :>

f


 
Odgovor na temu

NetworkAdmin

Član broj: 4445
Poruke: 609
217.75.194.*



Profil

icon Re: Malo egzotike sa serijskim portom ? 20.08.2002. u 17:20 - pre 263 meseci
http://www.azstarnet.com/~ymg/software.html

Pogledaj ima li tu nesto interesantno...
 
Odgovor na temu

headstrong
IT Sektor
SCG

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



Profil

icon Re: Malo egzotike sa serijskim portom ? 05.09.2002. u 10:19 - pre 263 meseci
Ovo po meni baš i ne spada u ovaj forum, jer se ne odnosi isključivo na C/C++ programiranje, ali šta je tu je. Predlažem otvaranje novog foruma vezanog za sam hardver PC-ja, ali konkretno za programiranje na "niskom nivou".

RS-232 priča je sledeća:
Dobra vest za tebe je da na PC-ju možeš postići tačno 5 bps-a. Loša je da ne možeš postići tačno 10400. Najpribližnije brzini od 10400 što možeš postići je 10472,73 bps-a što daje grešku od oko 0,7% a to i nije tako mnogo (radio sam asinhrone serijske komunikacije koje su imale i veću grešku u brzini, ali bilo je i slučajeva kada nije bila dozvoljena tolika tolerancija). Svakako sve zavisi od protokola.
Kako to postići? Mogu reći da radim na Windows platformi, i da nemam programerskih iskustava sa Linux-om, a portabilnost aplikacija me nikada nije zanimala. Možda ti da ideju ovo u vezi Windows-a. Windows API svakako obezbeđuje standardne brzine, ali se mogu podesiti i mnoge druge. Prilikom poziva SetCommState(), za BaudRate se stavi npr. 5 ili 10400, što će ti u stvarnosti dati zapravo 5 bps i 10472,73 bps respektivno. E sada ide računanje. Brižni Microsoft programeri su rešili da olakšaju stvar, pa se naknadno obavi jednostavno celobrojno deljenje vrednosti 115200 sa onim što se stavi u BaudRate. Tako da u ovom primeru imaš rezultate 23040 i 11. Ove vrednosti su relevantne za UART, i one se smeštaju u njegove registre 'Divisor Latch' Low i High (Low = bazna adresa porta, High = bazna adresa porta + 1; uz setovan sedmi bit LCR registra čija je lokacija bazna adresa + 3). Divisor Latch registar par u UART-u sadrži 'reload' vrednost brojača koji određuje periodu takta. Kako se osnovni takt UART-a = 1.8432 MHz deli sa 16 dobija se 115200 Hz, što je ujedno i najveći baud rate (kod većine PC konfiguracija, ako ne kod baš svih). Aktuelni baud rate se dobije deljenjem ove maksimalne vrednosti sa sadržajem Divisor Latch registar para (r/w).

Trebalo bi da imaš sličan način podešavanja pod Linux-om, ali ono parče koda koje si priložio ne budi nade. U svakom slučaju ako su sa korisničke strane omogućili samo podešavanje standardnih brzina, možda možeš probati trik da "ručno" podesiš pomenute registre nakon inicijalizacije, ako ikako možeš obezbediti svom procesu ekskluzivni pristup I/O portovima. Ako to moraš na teži način, i ako uspeš, ne zaboravi da sedmi bit LCR registra postaviš na kraju na 0. Ako se ne može učiniti ništa od prethodno pomenutog, ostaje ti pisanje drajvera za UART, a verujem da bi to bio zaista naporan posao.

U slučaju da se greška od 0,7% pokaže kao problem, jedino što ostaje je ili da se baciš na razvoj hardverskog dodataka koji će služiti kao neki relej, ili da se povežeš sa nekim hardverašem (ako je profitabilno, tu sam).
 
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: Malo egzotike sa serijskim portom ? 05.09.2002. u 13:53 - pre 263 meseci
Odnosi se na ovaj forum jer covek zeli da pise C/C++ aplikaciju koja ce da koristi serijski port.
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

Dejan Lozanovic
Dejan Lozanovic
Beograd

Član broj: 691
Poruke: 2325
*.tehnicom.net

Jabber: null@elitesecurity.org
Sajt: speedy-order.com


+75 Profil

icon Re: Malo egzotike sa serijskim portom ? 05.09.2002. u 18:08 - pre 263 meseci
:) e ljudi mislim da sam nasao :)) to sto sam hteo da pisem vec ima do pola uradjeno :)) cim uhvatim malko vremena da pogledam kod otkicu vam tajnu egzotike :)

http://freediag.sourceforge.net/
 
Odgovor na temu

[es] :: C/C++ programiranje :: Malo egzotike sa serijskim portom ?

[ Pregleda: 5692 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

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