Calculatoare, IASI Proiect CSC Comunicaii n sisteme de conducere Tema nr. 2 Student: Costea DanCristian!"#$% Ursac &arius!"#$% %uldum Ale'andru!"#$% %uldum Andrei!"#$% 0 Cuprins Tema proiectului S(eci)ica*iile de (roiectare, )ormatul mesa+ului, descrierea (roiectului in ansam,lu. Prezentarea resurselor HW i SW utilizate Descrierea (e scurt a resurselor hard-are )olosite de (roiect .microsistemul &icro/ac 0!0C, (orturile de comunica*ie, modem radio1 i a mediului inte2rat de de3voltare .u4ision51 i testare a codului im(lementat .6oIC70!1. Protocolul Master-Slave Descrierea (rotocolului &aster 8 Slave de acces la mediul de comunica*ie i (articularit*ile im(lementrii lui la nivel )i3ic .9S$5$ cu modem radio sau 9S ":0, in )unc*ie de tem1. Programul principal Descrierea (ro2ramului (rinci(al .ini*iali3area resurselor i ,ucla (rinci(al, cu tratarea comunica*iei i a inter)e*ei cu o(eratorul local1. Schema lo2ic a (ro2ramului (rinci(al ;n varianta com,inat &asterSlave. Pregtirea mesa!elor pentru transmisie Descrierea )unc*iei de (re2tire a mesa+ului ;n varianta com,inat &asterSlave, schema lo2ic i descrierea codului im(lementat. Transmisia mesa!elor Descrierea )unc*iei de transmisie a mesa+elor ;n varianta com,inat &aster Slave, schema lo2ic i descrierea codului im(lementat. "ecepia mesa!elor # descriere$ sc%ema logic i implementare Descrierea )unc*iei de rece(*ie a mesa+elor ;n varianta com,inat &asterSlave, schema lo2ic i descrierea codului im(lementat. Concluzii 1 Tema proiectului Folosind microsistemul &icro/ac 0!0C s se im(lemente3e un (rotocol de comunica*ie serial de ti( masterslave, av<nd urmtoarele caracteristici: ! /ort C=&# .9S$5$1 )olosind modemul radio Satel !:>#7 $ /arametri comunica*ie ?@## %aud, : ,i*i de date, (aritate (ar, ! ,it de ST=/ 5 Formatul mesa+ului Adres AB nod destina*ie Cod )unc*ie: # sau ! Destinatia sau sursa mesa+ului, du( ca3 Cun2ime date Date Cod detectare erori 8 C9C .1 " Codi)icare mesa+ %inar &ormatul mesa!elor' Adres AB destina*ie Cod )unc*ie Surs .master1 Destina*ie .slave1 Cun2ime Date Suma de control ! octet ! octet ! octet ! octet Cun2ime ! octet ()s.' C<m(ul adres destinaie va con*ine adresa nodului care va rece(*iona mesa+ul. C<m(ul cod funcie (oate )i, du( ca3: a1 # 8 mesa+ de intero2are .lun2ime date D #1 8 transmis de master ctre un nod slave sau de slave ctre master, ;n li(sa altui mesa+ util ,1 ! 8 mesa+ de date 8 mesa+ care con*ine un te't ASCII C<m(ul surs/destinaie va indica: un mesa+ de ti( ! transmis de nodul master 8 sursa mesa+ului un mesa+ de ti( ! transmis de un nod slave 8 destina*ia )inal a mesa+ului C<m(ul lungime re(re3int numrul de octe*i al c<m(ului de dateE =ctetul din c<m(ul suma de control va )i calculat ca suma modulo $ .F=91 a tuturor octe*ilor 2 din c<m(urile anterioare. &esa+ul va )i transmis ;n )ormat ,inar, octet cu octet, (ortului serial C=&#. Prezentarea resurselor HW i SW utilizate &icro/ac C0!0C este un sistem de de3voltare or2ani3at ;n +urul unui microcontroler *n+ineon C,-,C. /laca (rinci(al a microsistemului este (re3entata in Fi2. !, (rocesorul C0!0C Fi2. $. Fi2. !. /laca sistemului Caracteristici te%nice ale microcontrolerelor ,-,C' variant ;m,unt*it a microcontrolerului SA% :#C0!0A, com(ati,il &CS 0!E memorie (ro2ram intern de (<n la @"Gocte*i .cu e'ce(*ia variantei C,-,C-., utili3at i de sistemele &icro/ac 0!0C din la,orator1E inter)a* (entru memoria (ro2ram de @"Gocte*iE $0@ octe*i de memorie 9A& internE $ Gocte*i de memorie F9A& internE inter)a* (entru memorie de date e'tern de (<n la @"Gocte*iE arhitectur intern com(ati,il &CS 0!, 3 Fi2. $. /rocesorul C0!0C cu : re2istre D/T9 ;n loc de unul sin2urE )recven* de tact de (<n la !#&A3, )r divi3or de )recven* .ciclu main de ! Hs la @ &A3, res(ectiv de @##ns la !#&A3 8 varianta din la,orator1. ":I! linii IJ7 di2itale cvasi,idirec*ionale ,: intrri analo2ice 5 timere de !@ ,i*i .T#, T! i T$, ultimul (rev3ut i cu )acilit*i de com(arare ca(tur1E convertor AJD de !# ,i*i cu autocali,rareE (ort serial UA9T com(ati,il &CS0!, cu 2enerator de tact (ro2rama,ilE (ort serial sincron SSC .com(ati,il S/I 8 Serial /eri(heral Inter)ace1E modul CA6 .Controller Area 6et-orK1 inte2rat com(let im(lementatE !> surse de ;ntreru(ere, or2ani3ate (e " niveluriE ceas de 2ardE " moduri de consum redus .Slo- Do-n, Idle &ode, SB J AB /o-er Do-n1. Caracteristici so+t/are' &emoria (ro2ram 8 varianta C0!0CC, utili3at i de sistemele &icro/ac 0!0C nu are memorie (ro2ram intern, ;ns varianta C0!0C:9 dis(une de @" Gocte*i de 9=&, iar C0!0C:7 are @" Gocteti de memorie =T/ .=ne Time /ro2rammin21. Ca aceste variante, accesul la memoria intern 9=&J=T/ este validat (rin a(licarea unui nivel lo2ic L!M (e linia 7A.7'ternal Access1. &emoria de date 8 sin2ura di)eren* )a* de or2ani3area memoriei la un microcontroler :#0$ este (re3en*a, ;n s(a*iul re3ervat memoriei e'terne de date .FDATA1, a unei memorii interne de date de $ Gocte*i .F9A&1 i a unei (a2ini de $0@ de octe*i de memorie ;n care sunt ma(a*i re2itrii de inter)a* ai modulului CA6. Utili3area acestor )acilit*i su(limentare se (oate selecta e'(licit ;n con)i2ura*ia microcontrolerului .F&A/#D# ;n SF9 SNSC=61. Placa are urmatoarele caracteristici' Inter)e*e de comunica*ie serial asincron: O C=&# .9S$5$1 UA9T C0!0C 8 (ortul serial al microcontrolerului C0!0CE O C=&! .9S$5$1, C=&$ .9S":01 8 un circuit e'tern DUA9T /hili(s SC$@C?$, cu dou canale inde(endente )ull du(le'E O C=&5 .9S$5$1 UA9T AT:?C$#0! (ortul serial al co(rocesorului AT:?C$#0!E 4 O /orturile seriale (ot lucra ;n modul asincron, cu !# sau !! ,i*iJcaracter i cu rate de comunica*ie de (<n la $5#," G,(s. Inter)a* CA6: O C0!0C inte2rea3 (e ci( un modul CA6 .Controller Area 6et-orK1 care im(lementea3 ;n hard-are versiunea $.#% a (rotocolului CA6. IJ7 di2itale O !! linii IJ7 (ro2rama,ile, de nivel TTC O : linii de ieire de curent mare .0##mA1E O " linii de intrare i 5 linii de ieire TTC situate (e circuitul DUA9T /hili(s SC$@C?$. O Ciniile de intrare AJD (ot )i de asemenea )olosite ca intrri di2itale. O Atunci c<nd co(rocesorul AT:?C$#0! nu este instalat, mai rm<n dis(oni,ile ;nc @ linii IJ7 de nivel TTC. Intrri AJD O : intrri multi(le'ate conectate la convertorul intern AJD cu re3olu*ia de !# ,i*iE O durata unei conversii este de ?,@ Hs .!#" Geantionri J sec1. Ieiri DJA O " canale de ieire DJA im(lementate cu un convertor e'tern AD>$$@ cu " canaleE O re3olu*ia ieirilor DJA este de : ,i*i. Inter)a* CCD O (ermite controlul oricrui a)ia+ cu cristale lichide ,a3at (e controlerele AD"">:#, AD@!:5# i com(ati,ile. Conector e'tensie O ma2istralele de adrese i date, liniile de reset i de ;ntreru(ere sunt dis(oni,ile la un conector cu 0# de (ini (entru conectarea unor (eri)erice e'terne. Conectarea dintre placa si calculator Comunicatia intre cele $ ... se reali3ea3a cu a+utorul a $ (ro2rame .6oIC70! si u4ision51. /ro2ramul 0o*C1,-. Acesta este un (ro2ram de inter)a* cu sistemul &icro/ac 0!0C ce (ermite ;ncrcarea i de(anarea sim,olic a a(lica*iilor la distan*, la nivel de cod surs, direct (e sistemul cu microcontroler. 6oIC7 (ermite o de(anare avansat a (ro2ramelor, ;n condi*ii mult mai a(ro(iate de cele ;n care va )unc*iona ;n )inal, )r utili3area unui instrument so)isticat i scum( de ti( IC7 8 InCircuit 7mulator .no IC71. Inter)ata (ro2ramului este (re3entata in Fi2. 5. 5 Fi2. 5. /ro2ramul u2ision3. Cu a+utorul acestuia, vom (utea com(ila si he'edita (ro2rame ce vor )i incarcate ulterior (e (laca cu a+utorul 6oIC7. /entru utili3are, vom creia un (roiect, in care vom introduce ca li,rarii )isierele : m(0!0.c, lcddrv.c, co(drv.c, cirPue.c, mmio.a0! i startu(.a0!, avand ast)el acces la )unctii (rede)inite. Sistemul &icro/ac 0!0C dis(une de " (orturi seriale: O C(M4 /ortul serial 56"T C,-,C 8 echi(at cu un ada(tor de linie 9S O C(M- i C(M2 dou canale seriale )urni3ate de inter)a*a e'tern 756"T P%ilips SC28C92. C=&! este echi(at cu un ada(tor 9S$5$, iar C=&$ este echi(at cu dou ada(toare 9S":0. O C(M3 /ortul serial 56"T 6T:9C24,- 8 (re(ro2ramat i echi(at (entru a asi2ura o inter)a* serial asincron 9S$5$ ,u))eri3at, )ulldu(le', la vite3a de ?@## %aud. Ciniile seriale C=&#, C=&! i C=&5 ale &icro/ac 0!0C sunt accesi,ile la trei conectori D%? av<nd o or2ani3are 9S$5$ modi)icat, (entru a (ermite conectarea lor la /C )olosind un ca,lu cu cone'iuni directe (in la (in, de ti( DT7 DC7 .Data Terminal 7Pui(ment 8 Data Communication 7Pui(ment sau calculatormodem1. Din (unctul de vedere al )lu'ului de date vehiculat, comunica*ia dintre dou noduri interconectate (rintro le2tur serial 9S$5$ (oate )i de 5 ti(uri: simple; 8 comunica*ie ;ntrun sin2ur sens, cu un sin2ur )lu' de date: un nod doar transmite .surs1, iar cellat doar (rimete date .destina*ie1E 6 duple; 8 comunica*ie ;n am,ele sensuri, cu dou )lu'uri de date inde(endente: nodurile (ot transmite i (rimi date simultan .am,ele noduri (ot )i at<t surs c<t i destina*ie1E %al+-duple; comunica*ie ;n am,ele sensuri, cu dou )lu'uri de date ;ntre*esute: nodurile (ot transmite i (rimi date, dar nu simultan .un nod (oate )i la un moment dat )ie surs, )ie destina*ie1. Protocolul Master-Slave In cadrul (roiectului se conectea3a cele 0 noduri &icro/ac0!0C intro retea 9S$5$, (rin canalul C=&#. Qntruc<t standardul 9S$5$ nu su(ort coli3iunile se va utili3a tehnica de control al accesului la mediu masterJ slave. Aceasta tehnic (revede e'istenta unui nod numit master .ar,itru central1 care s controle3e momentele in care celelalte noduri din retea (ot transmite sau rece(tiona date. Dre(tul de acces este acordat de catre master , (e rand, in mod ciclic, )iecarui nod slave , (rintrun mesa+ adresat acestuia. Fiecare mesa+ (e care un nod slave il va transmite va trece mai intai (rin nodul master, a(oi acesta va decide destinatia )inala, in )unctie de adresa indicata in mesa+ . 7'ista $ ti(uri de mesa+e : un mesa+ de intero2are, care va )i transmis de master, (e rand, )iecarui slave (entru a determina daca acesta are un mesa+ in aste(tare. Acesta nu va contine cam(urile de lun2ime si de date. In ca3ul in care nu are mesa+ , slaveul va transmite la randul sau masterului un mesa+ de intero2are. Al doilea ti( de mesa+ este cel care contine date de transmis . 7l (oate a(area ca ras(uns al slaveului la o intero2are din (artea masterului, si trimis mai de(arte slaveului destinatie sau direct de la master, daca acesta a (rimit o comanda de transmisie din (artea utili3atorului. .de la tastatura (ro(rie1 Descrierea )unctionarii (ro2ramului (entru nodul master' Secven*a de ini*iali3are - a)ia+ CCD - co(rocesor tastatura - (ort serial - varia,ilele (ro2ramului .de e'em(lu adresa AB a nodului1 A)iare (arametri (ro2ram: Cinia !: &asterJSlave, Adresa, C=&#JC=&$, ASCIIJ%inar 7 Cinia $: 9'& 8 nod ultimul mesa+ de date rece(*ionat cu succes i care nod la transmis A)iare meniu comen3i: Cinia 5: ! 8 T'& $ 8 Stare Cinia ": utili3at de comen3ile ! i $ &asterul este cel care coordonea3a transmisia mesa+elor in retea. Ale2e un slave initial .slave !1 , a(oi va intra in ,ucla si va urma setul urmator de instructiuni. 4eri)ica daca are un mesa+ de transmis nodului res(ectiv .nodRslaveS.)ullDD# sau! 1. In ca3ul in care este un mesa+ de trimis , masterul il va trimite la adresa indicata (rin )unctia T'&esa+.nod destinatie1 E in ca3 contrar trimite un mesa+ de intero2are ..cod )unctie #1 A(elea3a )unctia 9'&esa+.slave1 cu adresa nodului de la care se astea(ta un ras(uns trimisa ca (arametru. .aste(tarea se va )ace cu timeout o secunda , moment in care se va trece la urmatorul slave1. In ca3ul in care mesa+ul rece(tat este de ti( #, se va trece la urmatorul nod slave. /entru un mesa+ de ti( ! adresat nodului master ,acesta il va a)isa (e ecran .linia a doua a CCDului1. Daca vine un mesa+ de ti( ! (entru destinat altui slave, il va memora (entru o transmitere ulterioara. Du(a terminarea )unctiei 9'&esa+ se veri)ica daca sa a(asat o tasta. /entru valoarea ! .T'&1 va solicita adresa si datele care urmea3a a )i trimise slaveului , iar (entru valoarea $ se va veri)ica si a)isa starea ,u))erului nodului slave indicat. Descrierea )unctionarii (ro2ramului (entru nodul slave' 6odul slave atea(t ;n ,ucl in)init un mesa+ de la master sau o comand de la tastatur. De la master e'ist (osi,ilitatea (rimii un mesa+ de ti( # sau de ti( !. Qn ca3ul (rimirii unui mesa+ de ti( ! atunci acesta este a)iat (e linia $, iar ;n ca3ul mesa+ului de ti( ! este transmis ctre master. Dac nodul slave nu are un mesa+ de ti( ! de transmis atunci transmite ctre master un mesa+ de ti( #. Dac a(are o comand de la tastatur, tratea3 comanda. /entru comanda T'&: solicit adresa destina*ie, (reia adresa destina*ie, solicit mesa+ul, (reia i memorea3 mesa+ul. /entru comanda stare mesa+e: solicit adresa destina*ie, 8 (reia adresa destina*ie, a)iea3 dac e'ist sau nu un mesa+ care atea(t s )ie transmis. Programul principal Qn (ro2ramul (rinci(al sunt ini*iali3ate varia,ile local c<t i ini*iali3area co(rocesorului i comunica*ia cu acesta cu comanda Co(Init.1. De asemenea se ini*iali3ea3 C=&$, timerul # i (entru toate nodurile ,u))erul este 2ol. Cu )unc*ia A)isareTmeniu este a)iat (e lcd ;n ,ucla in)init meniul. Qntro ,ucla -hile ;n (rima eta( se consider ca3ul ;n care nodul (e care rulea3 (ro2ramul este de ti( &AST79 i dac nu e'ist un mesa+ ASCII de transmis ctre slave se )olosete un mesa+ de intero2are retea[i].bufbin.functie=POLL. Tot ;n )unctia main sunt a(elate )unc*iile de transmisie mesa+ i rece(*ie mesa+, )unc*ii care vor )i e'(licitate ;ntrun (ara2ra) ulterior. Dac nodul (e care rulea3 (ro2ramul este slave este a(elat )unc*ia de rece(*ie mesa+ de la master. 6odul slave de asemenea caut dac are ;n ,u))erele de transmisie vreun mesa+ de transmis. Dac nu este transmis nici un mesa+ ctre master atunci se trimite un mesa+ de intero2are ctre master, calculea3 suma de control i a(oi transmite mesa+ul de intero2are. /ro2ramul este conce(ut ;n aa mod ;nc<t (eriodic s )ie veri)icat dac s a a(sat vreo tast. Qntrun cor( s-itch ;n ca3ul ;n care se a(as tasta ! se tratea3 comanda transmisie mesa+ iar ;n ca3ul tastei $ se tratea3 comanda citire stare ,u))er. 9 Reset Initializari: LCD, corocessor, tastat!ra, ort serial, ti"er #0 $aria%ile locale
Fig.4 Schema lo2ic a (ro2ramului (rinci(al ;n varianta com,inat &aster Slave. Pregtirea mesa!elor pentru transmisie 10 lin i&5' i&0 (!nere in %!))er*0+ "esa, (--L re.atire "esa,*i+ trans"ite "esa,*i+ /a e0ista tasta aasata' a/resa %!))er reia a/resa %!))er a)isarte stare %!))er solicita /estinatia reia /estinatia solicita "esa, reia "esa, re)acere "eni! alta n! 122 112 i334 /a re.atire %!))er*i+ trans"ite "esa,*i+ recetie "esa,*i+ a)isare "esa, *entr! "aster+ i334 i&5' n! 5)isare "esa, si s!rsa */aca "esa,6(-LL+ i&0 i334 i:ID i334 %!))er*i+ .ol & 6 n! lin i&1 (!ne "esa, /e intero.are *(-LL+ in %!))er*i+ %!))er*i+ .ol 5)isare "eni! recetie "esa, Dintre cele 5 )unctii ce tre,uiesc com(letate (entru im(lementarea (roiectului, cea mai im(ortanta este cea de (re2atire a mesa+ului. Aceasta are ca tar2het alcatuirea mesa+ului ce va )i trimis (rin retea de la un nod la altul, si tre,uie sa res(ecte anumite re2uli (entru a (utea )i inter(retat si utili3at corect de )unctiile de rece(tie si transmisie. Con)orm schemei ,loc de la Fi2. 0., ce (ute in vedere atri,utiile ce tre,uiesc inde(linite, dealun2ul (re2atirii mesa+ului tre,uie tinut cont de: - ti(ul mesa+ului ce tre,uie (re2atit: o date o intero2are - daca este de intero2are, mesa+ul ce tre,uie (re2atit este suma de control a nodului, ce va )i e2ala cu adresa noduluiE - daca este mesa+ de date, se construieste suma de control, tinand seama de adresa nodului, codul )unctiei, lun2imea datelor si datele ce tre,uie trimise. /e ,a3a acestor re2uli sa im(lementat urmatoarea )unctie, (entru (re2atirea mesa+ului ce va urma sa )ie trimis dealun2ul retelei. void /re2atireTmesa+.int i1U unsi2ned char scE int +E i) .reteaRiS.,u),in.)unctieDD/=CC1 reteaRiS.,u),in.scD reteaRiS.,u),in.adresaE elseU scDreteaRiS.,u),in.adresaE scVDreteaRiS.,u),in.)unctieE scVDreteaRiS.,u),in.destsrcE scVDreteaRiS.,u),in.ln2E )or .+D#E+WreteaRiS.,u),in.ln2E+II1 scVDreteaRiS.,u),in.dateR+SE reteaRiS.,u),in.scDscE XX 11 0 1 (re.atire "esa,*i+ Co/ )!nctie r7i89%!)%in9sc&:%, r7i89%!)%in9sc& r7i89%!)%in9a/r Fi2. 0. Schema ,loc a )unctiei de (re2atire a mesa+ului Transmisia mesa!elor Cea dea doua )unctie ce tre,uie im(lementata, de transmisie a mesa+ului, va )olosi im(licit cuvintele )ormate in )unctia de (re2atire a acestuia. In)ormatiile (reluate ne a+uta (entru a sta,ili o comunicatie intre (laci. /entru im(lementarea al2oritmului, ne vom 2hida du(a schema ,loc din Fi2. @. unde (uteam o,serva (e lar2 atri,utiile acestei )unctii. Ca )el ca in )unctia de (re2atire a mesa+ului, vom avea de controlat $ ti(uti de mesa+e, ce vor )i di)erentiate du(a codul )unctiei: - un mesa+ de date, ce tre,uie trimis (as cu (as, tinand cont de urmatoarea ordine: trimiterea adresei nodului ce va (rimi mesa+ulE trimiterea lun2imii mesa+uluiE trimiterea cuvantului (ro(iu3isE trimitearea sumei de control. - un mesa+ de intero2are, ce va avea ca sco( veri)icarea ,u))erului de date al unui nod oarecare din retea. 9es(ectand aceste re2ului, sa im(lementat )unctia de transmitere a mesa+ului. void T'&esa+.int i1U unsi2ned char +, ch, Y(trE chDreteaRiS.,u),in.adresaE ACCDchE T%:D/E SerTSendT%Zte.C=&#,ch,!1E chDreteaRiS.,u),in.)unctieE ACCDchE T%:D/E SerTSendT%Zte.C=&#,ch,!1E 12 %!)asc;%!)%in4 R<# i) .chDD&7S1U chDreteaRiS.,u),in.destsrcE ACCDchE T%:D/E SerTSendT%Zte.C=&#,ch,!1E chDreteaRiS.,u),in.ln2E ACCDchE T%:D/E SerTSendT%Zte.C=&#,ch,!1E )or .+D#E+WreteaRiS.,u),in.ln2E+II1U chDreteaRiS.,u),in.dateR+SE ACCDchE T%:D/E SerTSendT%Zte.C=&#,ch,!1E X X chDreteaRiS.,u),in.scE ACCDchE T%:D/E SerTSendT%Zte.C=&#,ch,!1E i) .AD9T6=D[D&AST791 reteaRiS.)ullD#E SerTS6DTDone.C=E X 13 #0=esa,*i+ tr & retea7i89%!)asc4 5CC & >tr4 #?8 & (4 @erA@en/A?Bte*C-=0, >tr,1+4 tr33 r7i89)!ll & 04 @erA@en/ADone*C-=0+4 >tr Fig. 6 Schema ,loc a )unctiei de transmisie a unui mesa+ "ecepia mesa!elor # descriere Sc%ema logic i implementare Ultima )unctie ce a ramas de tratat, este cea de rece(tie a mesa+elor. 7a este cea mai com(la'a dintre toate, deoarece are ca res(onsa,ilitati de a decodi)ica mesa+ul (rimit, de a indenti)ica carui ti( de nod .master J slave1 ii este destinat si de a noti)ica utili3atorul le2at de datele (rimite in ,u))er. /entru a im(lementa aceasta )unctie, am urmarit cu atentie schema lo2ica (re3entata in Fi2. >. /e scurt aceasta )unctie, tine mereu seama daca nodul care (rimeste un mesa+ este de ti( master J slave, si va intra in aste(tarea caracterelor corecte. Daca se intam(la ca datele rece(tionate sa )ie eronate, va i2nora acele date .in)ormand utili3atorul1 si va aste(ta in)ormatii corecte. Du(a identi)icarea nodului, )unctia va avea o (arte comuna, cea de recunoastere a mesa+ului (rimit, a(oi va identi)ica iarasi daca nodul este master J slave (entru a vedea ce tre,uie )acut cu mesa+ul (rimit. 9es(ectand schema ,loc (re3entata am alcatuit urmatorul cod, (entru a im(lementa )unctia: void 9'&esa+.int i1U unsi2ned char +, ch, sc, screc, destsrc, ln2, )unctie, Y(trE i) .AD9T6=DDD&AST791U chDSerT9eceiveTT&=.C=&#,!###1E i) .timeout1 U error."Timeout nod "1E CCDT/utchar.iI\#\1E returnE X reteaRiS.)ullD#E i) .ch[DAD9T6=D1 U do SerT9eceiveTT&=.C=&#,01E -hile .timeoutDD#1E error."Adresa 2resita"1E returnE X X else U 14 doU do SerT9eceiveTT&=.C=&#,01E -hile. timeoutDD#1E chDSerT9eceiveT%Zte.C=&#,!1E X-hile.ch[DAD9T6=D1 E X screcDAD9T6=DE )unctieDSerT9eceiveTT&=.C=&#,01E i).timeout1U error."Timeout )unctie "1 returnE X do SerT9eceiveTT&=.C=&#,01E -hile.timeoutDD#1E error."Functie eronata"1E returnE screcVD)unctieE i) .)unctieDD&7S1U destsrcDSerT9eceiveTT&=.C=&#,01E i) .timeout1 U error."Timeout destsrc"1E returnE X screcVD destsrcE i) .AD9T6=DDD&AST791 U i) .reteaRdestsrcS.)ullDD!1 U do SerT9eceiveTT&=.C=&#,01E -hile .timeoutDD#1E error."%u))er (lin"1E returnE X X ln2DSerT9eceiveTT&=.C=&#,01E i).timeout1U error."Timeout ln2"1E returnE X screcVDln2E i) .AD9T6=DDD&AST791 U reteaRdestsrcS.,u),in.destsrcDiE reteaRdestsrcS.,u),in.)unctieD)unctieE reteaRdestsrcS.,u),in.ln2Dln2E X 15 )or .+D#E+WreteaRiS.,u),in.ln2E+II1U screcVD reteaRiS.,u),in.dateR+SDSerT9eceiveTT&=.C=&#,01 i).timeout1U error."Timeout date"1E returnE X X scDSerT9eceiveTT&=.C=&#,01E i) .timeout1 U error."eroare sc"1E returnE X i).scDDscrec1 reteaRiS.)ullD!E i).AD9T6=D[D&AST791 U reteaRAD9T6=DS.,u),in.destsrcDdestsrcE reteaRAD9T6=DS.,u),in.ln2Dln2E )or .+D#E+WreteaRAD9T6=DS.,u),in.ln2E+II1U
screcVDreteaRAD9T6=DS.,u),in.dateR+SDSerT9eceiveTT&=.C=&#,01E i).timeout1U error."Timeout date"1E returnE X X scDSerT9eceiveTT&=.C=&#,01E i) .timeout1 U error."eroare sc"1E returnE X i).scDDscrec1 reteaRAD9T6=DS.)ullD!E else error."eroare sc"1E X X scDSerT9eceiveTT&=.C=&#,01E i) .timeout1 U error."eroare time out"1E returnE X i).sc[DAD9T6=D1U reteaRAD9T6=DS.)ullD!E error."eroare sc"1E 16 X X 17 tr&retea7i89%!)ascii D5 CD cE&F:F retea7i89)!ll&0 G#i"eo!t no/ iF cE&F:F CD R<# G<roare inca/rareF 5stet c! #=-&5"s ri"!l caracter al a/resei HI Recetioneaza si i.nora rest!l "esa,!l!i *LJ+ D5 CD D5 CD 5stet c! #=-&5"s ri"!l caracter al a/resei HI 5stet c! #=-&5"s al /oilea caracter al a/resei HI ConKersie a/resa 5scii-Ee0 in %inar 5stet c! #=- 1000"s ri"!l caracter al ras!ns!l!i /e la slaKe i 5stet )ara #=- ri"!l caracter al "esa,!l!i /e la "aster ti"eo!t R0=esa, *i+ 5DRAC-D && =5@#<R ' 18 > D5 G<roare a/resaF Recetioneaza si i.nora rest!l "esa,!l!i R<# R<# ti"eo!t' 5stet c! #=-&5"s al /oilea caracter al a/resei HI G#i"eo!t no/ iF R<# ConKersie a/resa 5scii-Ee0 in %inar a/resa 5DRAC-D' D5 CD D5 CD a/resa 5DRAC-D' CD 5stet c! #=-&5"s )iecare octet al rest!l!i "esa,!l!i e care il stocEeaza in %!))er!l 5scii @C=C & a/resa: ConKersie co/ )!nctie /in 5scii-Ee0 in %inar )!nctie G<roare co/ )!nctieF R<# L2 M2 Retea7/estsrc89)!ll&1 ' )!nctie ConKersie /estsrc ConKersie @C G<roare @CF @C&&@CR<C' R<# 1 0 CD D5 screc3&/estsrc ConKersie ln. screc3&ln. "aster' D5 CD G<roare s!ra!nereF R<# D5 > "aster @tocEeaza in %!)%in )!nctia, r7/estsrc89%!)%in9/estsrc&i4 @tocEeaza in %!)%in )!nctia, r75DRAC-D89%!)%in9/estsrc&/estsrc 4 CD D5 ConKersie /ate, act!alizare screc ConKersie /ate, act!alizare screc ConKersie @C ConKersie @C @C&&@CR<C' G<roare @CF r75DRAC-D89)!ll&1 CD D5 @C&&@CR<C' G<roare @CF r7/estsrc89)!ll&1 CD D5 Fi2. >. Schema ,loc a )unctiei de rece(tie Concluzii 6odul surs stochea3 datele ;ntrun ,u))er 2estionat (rin (ro2ram cu sco(ul de a )ace )a unor cre teri tem(orare ;n vite3a de (roducere a datelor sau chiar a unor intreru(eri ale )lu'ului de date la nivelul rece(torului. 7ste de tiut )a(tul c vite3a de rece(*ie a datelor nu (oate de(i vite3a medie de consum a acestora, iar creterile )lu'ului de date la nivelul rece(torului nu (ot dura (rea mult din cau3a ca(acit*ii )inite a ,u))erului de rece(*ie. Functionalitatea (ro2ramului a )ost veri)icata (entru toate situatiile (osi,ile: Ymaster Yslave Ytransmisie mesa+ Yrece(tive mesa+ 19 R<# R<#