Sms box - razdvojena diskusija

Rasprava o PIC mikrokontrolerima, PIC projekti i drugo vezano za PIC-eve...

Moderators: pedja089, stojke369, [eDo], trax

Post Reply
User avatar
ShOkRe
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 468
Joined: 10-01-2007, 20:55
Location: Pula

Post by ShOkRe »

abc vidjeo sam ovdje na forumu bar jos dvojcu iz pule, da nisi mozda i ti od tu negdje, pa da skupimo ekipu na kavi.... :D

svidja mi se ovaj forum, u biti jedino mjesto di se nalazi ekipa ovog profila, na našem jeziku, svaka cast onim en.forumima kad imamo i mi pametnih, ljudi to je puno prihvatljivije...

probao sam malo kopati po tom c-u ali mi je dosta apstraktan (vidi primjer koji me ful zanimao pa ga nikako ne uspjevam skuziti, iz njega bih volio malo povaditi taj pdu handling...)

http://www.elektronika.ba/forum/uploadz ... l_V171.zip

i napisat ga u basicu..

isao bih na nekakvu novu verziju onog mog kontrolera, stvar je u biti slicna onoj od traxa, samo sto je njegova univerzalni među-prevoditelj izmedju simensovih telefona i nekakvih drugih uredjaja, a mene vise zanima da si napisem sub za pdu-handling...
u biti program koji sam pisao za ove moje kontrolere ima oko 900 linija basica, tako da nekako nemam volje sve to raditi izpocetka, pogotovo sad kad sve radi i nema vise bug-ova...
prazna mi bat. na lapu. cao...
User avatar
trax
Administrator sajta
Administrator sajta
Posts: 3509
Joined: 08-01-2005, 18:04
Location: 75k, BA
Contact:

Post by trax »

Uz pomoc ove stranice sam napravio svoj PDU dekoder koji dekodira u medjuvremenu dok mu mobitel salje hex string :D To je unutar SMS Box!-a.

http://www.dreamfabric.com/sms/
abc
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 498
Joined: 08-03-2007, 20:19
Location: Hrvatska

Post by abc »

ShOkRe wrote:abc vidjeo sam ovdje na forumu bar jos dvojcu iz pule, da nisi mozda i ti od tu negdje, pa da skupimo ekipu na kavi.... :D

svidja mi se ovaj forum, u biti jedino mjesto di se nalazi ekipa ovog profila, na našem jeziku, svaka cast onim en.forumima kad imamo i mi pametnih, ljudi to je puno prihvatljivije...

probao sam malo kopati po tom c-u ali mi je dosta apstraktan (vidi primjer koji me ful zanimao pa ga nikako ne uspjevam skuziti, iz njega bih volio malo povaditi taj pdu handling...)

http://www.elektronika.ba/forum/uploadz ... l_V171.zip

i napisat ga u basicu..

isao bih na nekakvu novu verziju onog mog kontrolera, stvar je u biti slicna onoj od traxa, samo sto je njegova univerzalni među-prevoditelj izmedju simensovih telefona i nekakvih drugih uredjaja, a mene vise zanima da si napisem sub za pdu-handling...
u biti program koji sam pisao za ove moje kontrolere ima oko 900 linija basica, tako da nekako nemam volje sve to raditi izpocetka, pogotovo sad kad sve radi i nema vise bug-ova...
prazna mi bat. na lapu. cao...
Ne, ja sam na drugoj strani, mi smo provincija za vas:)

Pogledacu malo detaljnije ovaj sors, koliko vidim to su prastare nokie.
Probacu da napisem malo opsirnije komentare u onom djelu gdje se obradjuje sama komunikacija sa mobitelom. Koliko vidim to je nesto slicno sto ti radis lcd, serijska komunikacija sa mobitelom, serijski eeprom i nekoliko releja ,kojima se upravlja preko sms-a.
User avatar
ShOkRe
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 468
Joined: 10-01-2007, 20:55
Location: Pula

Post by ShOkRe »

Ako sam te dobro shvatio trax, ti u real time-u dekodiras dok ti pristizu bitovi ?...

ako je tako moj pbp mora jos palente jesti dok to postignem.. na koliko ti ide rx? 9600.. (mozd bi na 1200 islo sa usart interaptom)

zato ja koristim 452 ima rama, sve povucem u string pa se onda s njim igram.. to mi je ok jer naknadno koristim isti string vise puta, a 452 ici nije bed adresirati 160 bajtova za string (pa jos i eeprom dici u ram), i jos se kasnije razbacivati.... krenuo sam ja u ovo sa 877 pa sam zaplivao.. imam puno specifičnih poruka koje se generiraju i salju, (nikako da razradim jedan subasm za komprimiranje texta.. imam vec segmente gotove samo nikako da ih ubacim)...

u biti full lose stojim sa vremenom za rad na ovim stvarcicama, pa zato hvataam precice.... znas kako je posao,bolovanja(evo bas lezim sa 39' zato sam se i raspisao), beba, zena, fuš itd...

cini mi se ovaj tvoj link nesto ednostavniji nego ovaj...
http://www.embedtronics.com/nokia/fbus.html
bit ce da je taj njokijin protokol malo zaguljeniji iako se svodi na slicno....
the poin is, napraviti univerzalnu krntiju na koju mozes povezati bilo koji telefon (ili bar neku kolicinu sa popisa) setirati u meniu (ako nema autosense) i (evo opet mene) stancati i prodavati takve uredjaje....
meni je trenutno (sad prije ljeta) aktuelno napraviti jednostavni sms alarm, znam da ih ima 100 na trzistu, znam da si i ti to napravio, ali ja sam napravio isti uredjaj sa telitom, i normalno u ovoj je prici cijena bila bitn pa stvar nije "prohodala", naime moj (frend) diler koji je na trzistu jak sa raznm stvarima, postavio je uvjet da se ovaj uredjaj napravi na one jeftine telefone iz simpa pageta i tomata, a kako oni stalno saraju s tim telefonima, implementacija svih tih silnih protokola je misionn imposible...
bio je i uvjet setup na 4 jezika i (najvjerovatnije atest a o tome se nisam ni raspitao)
tako da sam tu utrku bio napustio jos prije 2 god. ali ona je pred svako ljeto aktuelna, (tip prodaje satore i kampersku opremu pa me htio ugurati turistima na moru za sigurnost kam kucica, njima stalno provaljuju... nemojte mi sad upast na trziste... :evil: )

decki hvala vam, stvarno ste poduzetni glede edukacije pučanstva :oops:
abc
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 498
Joined: 08-03-2007, 20:19
Location: Hrvatska

Post by abc »

ShOkRe objasnjenje onog C sorsa(pola) ti je poslano na private ,javi da li si dobio poruku i tekst objasnjenja .
User avatar
trax
Administrator sajta
Administrator sajta
Posts: 3509
Joined: 08-01-2005, 18:04
Location: 75k, BA
Contact:

Post by trax »

ShOkRe wrote:Ako sam te dobro shvatio trax, ti u real time-u dekodiras dok ti pristizu bitovi ?...

ako je tako moj pbp mora jos palente jesti dok to postignem.. na koliko ti ide rx? 9600.. (mozd bi na 1200 islo sa usart interaptom)
Inace ide na 19200 a moze i na 9600 (logicno). Zato sam mu zakacio kristaj 16MHz da moze stici bez ikakvih problema. Za bas ovako rjesavanje problema treba koristiti asembler.
ShOkRe wrote:zato ja koristim 452 ima rama, sve povucem u string pa se onda s njim igram.. to mi je ok jer naknadno koristim isti string vise puta, a 452 ici nije bed adresirati 160 bajtova za string (pa jos i eeprom dici u ram), i jos se kasnije razbacivati.... krenuo sam ja u ovo sa 877 pa sam zaplivao.. imam puno specifičnih poruka koje se generiraju i salju, (nikako da razradim jedan subasm za komprimiranje texta.. imam vec segmente gotove samo nikako da ih ubacim)...
Drzi sve poruke u EEPROM-u. Napravi neku rutinu kojoj ces samo dati indeks poruke u nizu i ona to ukloka u mobitel (telit). To moras uradit vala.

Ja sam ovo svoje odradio na PIC16F877A i za kodiranje i dekodiranje PDU koristim nekih 200 bajta. Koristim ga kao neki "cirkularni" RAM :P . Pamtim adresu pocetka i kraja u nekim rutinama i sve radi super.
abc
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 498
Joined: 08-03-2007, 20:19
Location: Hrvatska

Post by abc »

Koliko vidim u sorsu nisam ga isprobao nemam taj kompajler i onaj C primjer sto ga je shokre okacio radi u C i to na 115200 bita FBUS komunikaciju sa nokiama. Samo sto radi na kristalu cudne frekvencije 11,0592MHz.
Normalno i tu se odredjeni deo primljene poruke mora dekodirati izracunati checksum(crc) u realnom vremenu , ponovo prepraviti izracunati checksum (crc) i poslati da bi se nastavila komunikacija i primila poruka a isto i poslala.

Evo autorova linija gdje setuje uart 16f876
#use rs232(baud=115200,xmit=PIN_C6,rcv=PIN_C7,parity=n,bits=8,errors,STREAM=PHONE_STREAM)
User avatar
ShOkRe
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 468
Joined: 10-01-2007, 20:55
Location: Pula

Post by ShOkRe »

ye trax, dosta ti toga stoji, ali kako nisam htio dodavati vanjski eeprom, ondak, mi nije bilo mjesta. naime eprom mi je organiziran tako da 3x32 bajta programski parametri, 72 bajta tjedni cheduler, 3x12 bajta telefoni korisnika, nekoliko systemskih parametara, mail ito je to za 256 bajta
dakle svi sms dialoški setapi spremaju parametre u taj eeprom...

s druge strane nsam htio nista prepustati gsm-bazi jer ima i to svojih loših strana, tako da sve sms reporte moj program generira interaktivno i onda posalje.

a ono sta sam rekao za komprimiranje zato jer kompajler jednu rečenicu od 160 znakova spremi u 160 wordova, pa sam nasao subrutinu uasembleru koju podvalim unutar basica i zovem je kad mi treba neki tekst
nije bas kompresija ali usteda flash prostora 1:2

u biti opet bih se ponavljao da kazem da me moja primitivna ali dovoljno funkcionalna tehnika zadovoljava kad uspijem projekt staviti u funkciju, izbaciti mu sve bug-ove, i kad isti radi godinu dana u svakakvim uvjetima..
dapače da bh volio da to napravim u asembleru, ali dok bih se dovoljno osamostalio da tečno pišem asembler, i dok bih sličnu stvar napravio, (to bi bilo za par godina (mozda)) do onda češ na kiosku moći kupiti sms boxeve raznih boja i ukusa, za 12.99 sim included :wink:

za ABC: nije mi nista stiglo salji mi na makni_ovo.matokovic@gmail.com
User avatar
trax
Administrator sajta
Administrator sajta
Posts: 3509
Joined: 08-01-2005, 18:04
Location: 75k, BA
Contact:

Post by trax »

Hehe :)

Slusaj poruka od 160 znakova nije 160 wordova nego 160 bytes-a. Word ti je 2 bytes a ti mobitelu salji ASCII string (jednobajtni) znaci 160 bytes, i eto ti ustede 1:2 ne trebas kompresovati nista.

Ovo sto sam ti gore rekao vazi za PICBasic.
abc
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 498
Joined: 08-03-2007, 20:19
Location: Hrvatska

Post by abc »

Shokre poslao sam.
User avatar
ShOkRe
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 468
Joined: 10-01-2007, 20:55
Location: Pula

Post by ShOkRe »

ma trax, pa da ne razlikujem word i byte, sta mislis da bih ista od ovoga sklepao...

nego kad naprimjer u basicu u jednoj liniji upises
hseout "abcd........xyz" kad iskompiliram dobijem nesto kao

OA OO OB OO OC OO OD OO
.......... 22 OO 23 OO 24 OO

ove hexove sam izlupao da skuzis sto mislim (nisam trazio prave asci-je), zasto neko ko j radio pbp nije o tome razmisljao neznam, ali kad u ASM-u stavis DA abcd........xyz on više ne ždere word za bajt

evo ti primjer

String1:
@ da "This is a string",0

AnotherString:
@ da "Here is another string",0

'------------GetAddress Macro - Location insensitive -------------------------
ASM
GetAddress macro Label, Wout ; Returns the Address of a Label as a Word
CHK?RP Wout
movlw low Label
movwf Wout
movlw High Label
movwf Wout + 1
endm
ENDASM


StartLoop ' This loop repeats continuously just as a test.
@ GetAddress _String1, _Addr ' Get address of String
gosub StringOut ' Send the String
hserout [13,10] ' New Line

@ GetAddress _AnotherString, _Addr ' Get address of String
gosub StringOut ' Send the String
hserout [13,10] ' New Line
pause 500
goto StartLoop ' Repeat


StringOut: ' Send the string out via Hserout
Readcode Addr, Char ' Get a character
if Char = 0 then StringDone ' Look for Null char, Stop if found
hserout [Char] ' Send char
Addr = Addr + 1 ' Point to next character
goto StringOut ' Continue with rest of the string
StringDone:
return


end


ali da sad ne tlacim s time puno mi je interesantnija prica o pdu tranformaciji

evo vidi klasicni primjer u basicu

TXT2PDU:
tmp(1)=char(1) << 7
tmp(2)=char(2) << 6
tmp(3)=char(3) << 5
tmp(4)=char(4) << 4
tmp(5)=char(5) << 3
tmp(6)=char(6) << 2
tmp(7)=char(7) << 1

ch(0)=chaR(0)
ch(1)=chaR(1) >> 1
ch(2)=chaR(2) >> 2
ch(3)=chaR(3) >> 3
ch(4)=chaR(4) >> 4
ch(5)=chaR(5) >> 5
ch(6)=chaR(6) >> 6

pdu(0)=tmp(1) + ch(0)
pdu(1)=tmp(2) + ch(1)
pdu(2)=tmp(3) + ch(2)
pdu(3)=tmp(4) + ch(3)
pdu(4)=tmp(5) + ch(4)
pdu(5)=tmp(6) + ch(5)
pdu(6)=tmp(7) + ch(6)
RETURN

;---PDU2TXT--(sms_decoding)---
PDU2TXT:
tmp(0)=pdu(0) >> 7
tmp(1)=pdu(1) >> 6
tmp(2)=pdu(2) >> 5
tmp(3)=pdu(3) >> 4
tmp(4)=pdu(4) >> 3
tmp(5)=pdu(5) >> 2
tmp(6)=pdu(6) >> 1

ch(0)=pdu(0) & $7f
ch(1)=pdu(1) & $3f:CH(1)=CH(1) << 1
ch(2)=pdu(2) & $1f:CH(2)=CH(2) << 2
ch(3)=pdu(3) & $0f:CH(3)=CH(3) << 3
ch(4)=pdu(4) & $07:CH(4)=CH(4) << 4
ch(5)=pdu(5) & $03:CH(5)=CH(5) << 5
ch(6)=pdu(6) & $01:CH(6)=CH(6) << 6

char(0)=ch(0)
char(1)=ch(1) + tmp(0)
char(2)=ch(2) + tmp(1)
char(3)=ch(3) + tmp(2)
char(4)=ch(4) + tmp(3)
char(5)=ch(5) + tmp(4)
char(6)=ch(6) + tmp(5)
char(7)=tmp(6)
RETURN
User avatar
ShOkRe
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 468
Joined: 10-01-2007, 20:55
Location: Pula

Post by ShOkRe »

ej abc nesto nas baš nece... jesi li maknuo onaj "makni_me" sa gmail adrese ? znaš kako danas ide sa spamom....
abc
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 498
Joined: 08-03-2007, 20:19
Location: Hrvatska

Post by abc »

poslao i skinuo ono ispred:)

shokre
pojasni ovaj izraz u bpb

hserout [13,10] ' New Line

Sta znace 13 i 10 ?

inace u C-u recimo string(string cu upotrebljavati ima puno izraza inace za to recimo u prjevodu bi se moglo nazvati i polja) ,zato sto to c tretira kao memorijske lokacije gdje mi ne moramo da im dodjeljujemo adrese to c radi za nas, inace za c je to vrjednost koja je upisana na toj memorijskoj lokaciji i nista vise a mi odredjujemo sta cemo raditi sa njom i kako cemo je interpretirati.

char string[13][10];

Recimo bi bio kao trinaest stringova sa 10 karaktera svaki, znaci 130 bajtova u sram-u mikrokontrolera i to u jednom komadu.

const char[13][10]; bi zauzeo 130 bajtova u programskoj memoriji pic-a.

A recimo int string[13][10]; bi zauzeo 260 bajtova u sram-u.

long [13][10]; mislim da ovo prelazili i vecinu 18-istica koliko treba sram-a, 520bajtova ukupno, znaci svaki karakter bi imao velicinu od 4bajta ili bi se mogla upisati velicina od 2^32, ako se u bajt moze upisati vrjednost od 2^8 =256 ako bi sadrzavao brojeve inace za c je to nesto slicno kao i u asembleru on to tretira kao memorijske lokacije.

Inace u nasoj literaturi to se nazivalo nekada dvodimenzinalna matrica kao one iz matematike:)
User avatar
ShOkRe
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 468
Joined: 10-01-2007, 20:55
Location: Pula

Post by ShOkRe »

ma, neeee glupi pic nebi podnio 2d-jku rasp'o bi se (to me mucilo kad sam sa vb-a prelzio na pbp)
to samo saljes 2 (chr$) bajta na uart 13=cr 10=LineFeed

evo bas citam tvoj komentirani source... pravo skolski si ga odradio, da cak i ja koji sam se uvjek zgrazao na c mogu pratiti (dobrim dijelom :roll: )
malo kontam onaj dio oko crc-a jer xora sve parne i sve neparne pojedinacno. ma da jos ne kuzim, ali mislim da mi jos samo to fali pa da propricam s njokijom...
abc
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 498
Joined: 08-03-2007, 20:19
Location: Hrvatska

Post by abc »

Za racunanje crc imas jako puno objasnjenja na netu sta i kako se racuna, ja sam prije trazio za c i ima vise nacina racunanja, onaj koji se koristi u primjeru je jako brz odnosno jako je kratak u asembleru.

Ako ti nesto nije jasno jer sam tek sada gledao ono sto sam napisao pa neki djelovi su dosta lose objasnjeni (ono gdje sam pisao 3 itd. pa kad citas ispada 3 a trebalo je treci, sesti ali mrzilo me da pisem slovima pa sam brojevima.
Neznam da li basic moze da barata tako sa stringovima kao c, ako moze onda prakticno mozes da prevedes sve u basic.

Mozda ce ti biti jasnije da otvoris i original i ono sto sam ja poslao pa da gledas u original i ono sto sam ti poslao da bi stvorio neku sliku.
Da li tvoj basic ima petlje tipa for, while i mogucnosti definisanja stringova kao u c-u ili nesto slicno.
User avatar
trax
Administrator sajta
Administrator sajta
Posts: 3509
Joined: 08-01-2005, 18:04
Location: 75k, BA
Contact:

Post by trax »

ShOkRe wrote:ma trax, pa da ne razlikujem word i byte, sta mislis da bih ista od ovoga sklepao...

nego kad naprimjer u basicu u jednoj liniji upises
hseout "abcd........xyz" kad iskompiliram dobijem nesto kao

OA OO OB OO OC OO OD OO
.......... 22 OO 23 OO 24 OO

ove hexove sam izlupao da skuzis sto mislim (nisam trazio prave asci-je), zasto neko ko j radio pbp nije o tome razmisljao neznam, ali kad u ASM-u stavis DA abcd........xyz on više ne ždere word za bajt
Majko mila, nisam to znao. Ovo mi izgleda kao UCS-16 encoding ili ti ga UTF-8 dvobajtni, samo naopak!
Pregledaj po netu da li ima neka direktiva kompajleru da on to uradi sa bytes a ne words!
User avatar
ShOkRe
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 468
Joined: 10-01-2007, 20:55
Location: Pula

Post by ShOkRe »

nope, ma nije mi to uopce bitno, kad postane tjesno ubacicu onaj asm dio
a do onda mi ostalo jos koji kilobyte...

ako sam dobro skuzio crc u basicu za parne i neparne
(uz pomoc "abc"-a) bi bilo...

crc1=0
crc2=0
for x=1 to 30 step 2 ' od do sam lupio onako..
crc1 = crc XOR string[x]
crc2 = crc XOR string[x+1]
next x

prejednostavno da bi to bilo to ?
abc
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 498
Joined: 08-03-2007, 20:19
Location: Hrvatska

Post by abc »

Nemam ispred mene c listing.
Ali mislim da bi trebalo ovako ,neznam basic:)

Original c:

//////////////////////////

CRC = 0;

ODD = (STRING_LENGTH-1);
EVEN = (STRING_LENGTH-2);

for (i=0; i < EVEN; i+=2)
CRC ^= RESULT;
RESULT[EVEN] = CRC;

CRC = 0;
for (i=1; i < ODD; i+=2)
CRC ^= RESULT;
RESULT[ODD] = CRC;}

///////////////////////////////

basic:



definisanje varijabli

crc=0
duzina_stringa= (30 moze biti bilo koja vrjednost sada je 30)
string[duzina_stringa]
ODD = duzina_stringa-1
EVEN =duzina_stringa-2

prva for petlja

for x=0 to EVEN step 2
crc = crc XOR string[x]
next x

upis parnog crc-a u string

string[EVEN]=crc

drugi deo for petlje

crc=0
for x=1 to ODD step 2
crc = crc XOR string[x]
next x

upis neparnog crc-a u string koji saljemo na mobitel

string[ODD]=crc



Tako nekako jedino jos prepravi ali to je filozofija na kiju radi.
User avatar
ShOkRe
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 468
Joined: 10-01-2007, 20:55
Location: Pula

Post by ShOkRe »

JEL CEMO MI MORAT MALO DAT PARA NA KRAJU ZA HOSTING KOLIKO NAGOMILASMO... :lol:
User avatar
trax
Administrator sajta
Administrator sajta
Posts: 3509
Joined: 08-01-2005, 18:04
Location: 75k, BA
Contact:

Post by trax »

Samo vi gomilajte nije problem :)
Post Reply