 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
Djurodrljaca Član

Pridružen-a: Pet 19 Dec 2003 16:31 Prispevkov: 393 Aktiv.: 1.65 Kraj: Mengeš
|
Objavljeno: Pet Mar 02, 2007 10:03 pm Naslov sporočila: Dolžina telefonskih številk |
|
|
Zanima me koliko je dolga najdaljša telefonska številka v mednarodnem formatu(npr. v Sloveniji je nekaj takega 386 31 456 789 - 11 cifer).
Naredil sem eno napravo, ki lahko pošilja alarme in razne meritve preko SMS in tam je potrebno definirati, na katero številko se bo SMS poslal.
V Sloveniji je dolžina številke 11 cifer in smo zato uporabili dolžino številke 11 znakov. Pred nekaj dnevi pa je stranka iz Srbije sporočila, da mu noče pravilno sprejeti vnesene številke in smo ugotovili, da imajo pri njih nekateri ponudniki 12 mestno številko (to sem na srečo lahko dokaj preprosto rešil). Sedaj pa se je pojavil problem, ker ne vem koliko je dolga najdaljša številka v drugih državah.
Ker se mi niti ne sanja na kakšen način bi to lahko poiskal, vas prosim za ta podatek oz namig kako bi lahko ta podatek poiskal. |
|
Nazaj na vrh |
|
 |
GJ Član


Pridružen-a: Čet 02 Nov 2006 15:51 Prispevkov: 946 Aktiv.: 4.16 Kraj: Ljubljana
|
Objavljeno: Pet Mar 02, 2007 10:08 pm Naslov sporočila: |
|
|
Hmm,
In zakaj ne sme biti poljubne dolžine? Recimo do 16 znakov.
LP GJ |
|
Nazaj na vrh |
|
 |
Djurodrljaca Član

Pridružen-a: Pet 19 Dec 2003 16:31 Prispevkov: 393 Aktiv.: 1.65 Kraj: Mengeš
|
Objavljeno: Pet Mar 02, 2007 10:14 pm Naslov sporočila: |
|
|
Največji problem je v tem, ker sem omejen s prostorom na vgrajenem EEPROM-u (PIC 18F2620).
Problem je v tem ker imam vse parametre shranjene v EEPROM-u in teh ni malo, zato hočem izvedeti maksimalno dolžino, da ne bi po nepotrebnem zgubljal prostor. Trenutno številke zapisujem v BCD formatu (6 byte-ov) in s tem dobim do 12 cifer.
Sedaj je narejeno, da je poljubne dolžine do 12 znakov. |
|
Nazaj na vrh |
|
 |
Branez Moderator


Pridružen-a: Pon 14 Apr 2003 7:21 Prispevkov: 7831 Aktiv.: 32.98 Kraj: Koprivnica HR
|
Objavljeno: Pet Mar 02, 2007 10:20 pm Naslov sporočila: |
|
|
Na Hrvaškem GSM = 00385 in 9 (devet) mest. Mogoče pa je oni vstavil tudi številko države. _________________ The true sign of intelligence is not knowledge but imagination.
Creativity is intelligence having fun!
Albert Einstein |
|
Nazaj na vrh |
|
 |
mucek4 Član


Pridružen-a: Sob 18 Jun 2005 20:52 Prispevkov: 2952 Aktiv.: 12.43 Kraj: Tržič - Mesto med gorami
|
Objavljeno: Pet Mar 02, 2007 10:22 pm Naslov sporočila: |
|
|
Moj Siemens sprejme 40 številk
Več ti pa ne vem povedati. |
|
Nazaj na vrh |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.51
|
Objavljeno: Sob Mar 03, 2007 12:32 am Naslov sporočila: |
|
|
Ali to uposteva tudi morebiten extension ? To doda se (vsaj) par mest za stevilko.
BCD ni najbolj ucinkovit nacin zapisa stevila. Ce imas na voljo prost flash (za funkcijo, ki bo odpakirala stevilko pred uporabo - ponavadi je flasha na voljo bistveno vec kot EEPROMa), potem naj bo zapis poln binarni. V 6 bajtov bo tako sla 14-mestna stevilka s poljubno cifro na zacetku oz. 15-mestna s prvo cifro omejeno na 2 celi vrednosti. Ce ni vec prostora, potem stevilka ne bo mogla biti daljsa ... preprosto  _________________ Ka ti bo pa torba ce si kupu kolo ? |
|
Nazaj na vrh |
|
 |
GJ Član


Pridružen-a: Čet 02 Nov 2006 15:51 Prispevkov: 946 Aktiv.: 4.16 Kraj: Ljubljana
|
Objavljeno: Sob Mar 03, 2007 10:56 am Naslov sporočila: |
|
|
Sokrat je napisal/a: |
BCD ni najbolj ucinkovit nacin zapisa stevila. |
To je že res vendar, če nekdo zahteva da se začne klicna št. z devema 0 spredaj ,nekdo pa z eno ali brez, imaš probleme. Tako da je BCD način kar paravi.
Djurodrljaca je napisal/a: |
Največji problem je v tem, ker sem omejen s prostorom na vgrajenem EEPROM-u (PIC 18F2620). |
Dej no... Pri 1024 bajtih EEPROMa boš pa že našel še dva prosta. Vsaj kakšnega lihega...
Lahko pa tudi direktno v FLASH zapisuješ, žal le po 64 bajtov na enkrat.
LP GJ |
|
Nazaj na vrh |
|
 |
Djurodrljaca Član

Pridružen-a: Pet 19 Dec 2003 16:31 Prispevkov: 393 Aktiv.: 1.65 Kraj: Mengeš
|
Objavljeno: Sob Mar 03, 2007 11:02 am Naslov sporočila: |
|
|
No prostora je še nekaj, samo ne bi rad da mi potem, ko bo dodana še kakšna funkcija, zmanjka prostora. Zato me zanima maksimalna dolžina, pač optimizacija.
Problem s flash-om je pa v tem, da bi za shranjevanje parametrov v flash moral spremeniti še bootloader, da ne bi povozil parametrov ob programiranju FW naprave, kar bi znal biti problem, ker je že nekaj naprav pri strankah in bi jih moral sprogramirati ročno preko programatorja.
Drugi večji problem pa je v tem, da če je potrebno več kot 14 cifer, da jih ne morem spraviti v 6B (če shranim št. kot celo število in ne BCD), kar pa pomeni, da bi moral spremeniti naslove vseh parametrov v dokumentaciji in tudi v napravi (ta del ni tako problematičen). Tega pa ne bi rad naredil, ker je teh parametrov ogromno.  |
|
Nazaj na vrh |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.51
|
Objavljeno: Sob Mar 03, 2007 11:57 am Naslov sporočila: |
|
|
GJ je napisal/a: |
Sokrat je napisal/a: |
BCD ni najbolj ucinkovit nacin zapisa stevila. |
To je že res vendar, če nekdo zahteva da se začne klicna št. z devema 0 spredaj ,nekdo pa z eno ali brez, imaš probleme. Tako da je BCD način kar paravi. |
Ce naredis dovolj slabo (= dovolj butasto), jih zagotovo imas, a to velja za vse stvari. Ravno zato bi bil primeren tisti bit (in en drobiz, katerega lahko zanemarimo), ki sem ga omenil. Imas torej 14 mest ter izbiro 0 ali 00 (+) kot prefix. Zapisal bi torej lahko stevilko v obliki
0 123 4567890 1234
ali
00 123 4567890 1234
oz. bolj pravilno (po napotkih operaterja) napisano
+ 123 4567890 1234
To je dovolj npr. za prefix, drzavo, trimestno omrezno, sedemmestno stevilko in stirimestni extension. Najbrz obstaja kaksna drzava, ki ima tako dolgo kodo kot Slovenija in tako dolge omrezne stevilke kot recimo ZDA (v praksi so v obeh omenjenih drzavah celotne stevilke krajse kot 14 mest).
Ce je stevilka krajsa kot 14 mest, vrines nicle na zacetek in jih eliminira funkcija, ki stevilko spremeni v niz znakov za posiljanje na telefon. Primera:
lokalna stevilka
0 00000 041 123 456
ali mednarodna stevilka
+ 000 386 41 123 456
BCD ni najbolj ucinkovit nacin zapisa, pa tudi najbolj primeren najbrz ni za predstavljeni problem. Ce je dejansko tezava s prostorom, potem je zapis bolje spremeniti v bolj kompaktnega. _________________ Ka ti bo pa torba ce si kupu kolo ? |
|
Nazaj na vrh |
|
 |
Djurodrljaca Član

Pridružen-a: Pet 19 Dec 2003 16:31 Prispevkov: 393 Aktiv.: 1.65 Kraj: Mengeš
|
Objavljeno: Sob Mar 03, 2007 12:11 pm Naslov sporočila: |
|
|
GJ je napisal/a: |
Dej no... Pri 1024 bajtih EEPROMa boš pa že našel še dva prosta. Vsaj kakšnega lihega...  |
Imam 8 številk + številka za SMS center, torej 9. Je pa že dokaj zapolnjen EEPROM.
Številke pa vpisujem v EEPROM brez "+" oz "00", torej 386..., ko pa štvilko pošljem na GSM modul pa dodam pred številko znak "+".
Sem pa tudi našel en članek na wikipediji in bo zgleda dovolj 14 cifer (Sokrat hvala za namig s shranjevanjem kot celo število).
Mogoče še razlog zakaj sem shranjeval v BCD formatu: največji razlog je v tem, da je takšen zapis izbral vodja projekta, ko je pisal programske specifikacije, to je pa verjetno izbral zaradi preproste pretvorbe iz BCD v string. |
|
Nazaj na vrh |
|
 |
GJ Član


Pridružen-a: Čet 02 Nov 2006 15:51 Prispevkov: 946 Aktiv.: 4.16 Kraj: Ljubljana
|
Objavljeno: Sob Mar 03, 2007 3:35 pm Naslov sporočila: |
|
|
Sokrat je napisal/a: |
Ce naredis dovolj slabo (= dovolj butasto), jih zagotovo imas, a to velja za vse stvari. Ravno zato bi bil primeren tisti bit (in en drobiz, katerega lahko zanemarimo), ki sem ga omenil. Imas torej 14 mest ter izbiro 0 ali 00 (+) kot prefix. |
Ahh..
Lepota programiranja ni v kompliciranju/tlačenju temveč v pregledni logični preprostosti.
Poleg tega potrebuješ še dve dokaj počasni rutini, ki ti pretvarjata željeni zapis.
Mislim, da bo moral rutini napisati kar sam, ali pa vsaj malo predelati, ker je normalno podprta le 32 bitna aritmetika.
Pa še znak + oziroma ničle moraš stlačiti v zapis.
No ja ne rečem, da se ne da...
Vendar močno dvomim, da ne more najti še dveh EEPROM bytov. Konec koncev to predstavlja le 0.2% MCPU EEPROM resorce-v.
Sokrat je napisal/a: |
BCD ni najbolj ucinkovit nacin zapisa, pa tudi najbolj primeren najbrz ni za predstavljeni problem. Ce je dejansko tezava s prostorom, potem je zapis bolje spremeniti v bolj kompaktnega. |
BCD zapis je programsko veliko bolj preprost, hitrejši in predvsem standarden zapis. Vrednosti posameznega zapisa nad 9 torej od 10..15 ti lahko pomenijo dodatne znake kot naprimer 'neuporabljen znak', 'presledek', 'pauza 1s', 'pauza 2s', '+' itd.
Je pa res, da je BCD zapis nekoliko manj kompakten.
Pri čisto navadnem BCD številčnem zapisu izgubimo (Ln(16)/Ln(10) = 1.2) le 20% prostora v primerjavi z binarnim. Če pa uporabimo še zgoraj omenjene specialne karakterje, ki jih bo slej ko prej rabil, je izguba prostora še manjša.
LP GJ |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 7 dni
Powered by phpBB © 2001, 2005 phpBB Group
|