Përmbajtje:

Dërgoni të dhëna numerike nga një Arduino në tjetrin: 16 hapa
Dërgoni të dhëna numerike nga një Arduino në tjetrin: 16 hapa

Video: Dërgoni të dhëna numerike nga një Arduino në tjetrin: 16 hapa

Video: Dërgoni të dhëna numerike nga një Arduino në tjetrin: 16 hapa
Video: Si matni Voldo tension DC me Arduino ARDVC-01 2024, Korrik
Anonim
Dërgoni të dhëna numerike nga një Arduino në tjetrin
Dërgoni të dhëna numerike nga një Arduino në tjetrin

Prezantimi

nga David Palmer, CDIO Tech. në Universitetin Aston.

A keni pasur ndonjëherë nevojë të dërgoni disa numra nga njëri Arduino në tjetrin? Ky udhëzues tregon se si.

Ju mund ta provoni me lehtësi se funksionon thjesht duke shtypur një varg numrash për t'u dërguar në terminalin Serial Monitor dhe shihni që numrat të dalin në një monitor serial të dytë të lidhur me Arduino -n e dytë. Ju madje mund të përdorni një lidhje Bluetooth.

Çfarë bën

Dy programe Arduino (skica në Arduino flasin) duhet të zhvillohen, një program Master për t'u lidhur me kompjuterin pritës që drejton Arduino Serial Monitor, një për të vepruar si Skllav për të marrë mesazhin serik nga Masteri, për ta deshifruar atë dhe për ta kthyer atë përsëri. Skllavi është opsionalisht i aftë të shfaqë numrat me të cilët merret në Monitorin Serial të dytë të IDE - vetëm në rast se dëshironi ta përdorni këtë. Mund të ndihmojë që gjërat të funksionojnë në radhë të parë dhe t'ju ndihmojë nëse vendosni të bëni ndonjë ndryshim në programet që i përshtaten kërkesave tuaja.

Pajisjet

  • 2 të Arduinos
  • 2 kabllo USB
  • rregulloni telat (sipas kërkesës)
  • 1 kompjuter/laptop i ngarkuar me Arduino IDE (i disponueshëm si shkarkim falas nga faqja e internetit Arduino.cc)

Hapi 1: Konfigurimi - Para së gjithash, vendosni pajisjen tuaj

Konfigurimi - Para së gjithash, vendosni pajisjen tuaj
Konfigurimi - Para së gjithash, vendosni pajisjen tuaj
Konfigurimi - Para së gjithash, vendosni pajisjen tuaj
Konfigurimi - Para së gjithash, vendosni pajisjen tuaj

Lidhni 2 Arduinos në 2 porta USB në kompjuterin tuaj.

Këshillë, është një ide e mirë t'i etiketoni si M dhe S (mjeshtër dhe skllav) në mënyrë që të mos futeni në një ngatërresë më vonë (siç tregohet në 2 fotot këtu.)

Hapi 2: Konfigurimi - Vendosni ekranin tuaj

Konfigurimi - Vendosni ekranin tuaj
Konfigurimi - Vendosni ekranin tuaj

Gjëja më e mirë është të vendosni ekranin tuaj në mënyrë që të keni

  • IDE e ngarkuar me programin Master në të majtë dhe
  • atë me Skllavin në të djathtë.

Mbani Vëzhguesit Serialë për Maser dhe Slave në të majtë dhe të djathtë gjithashtu siç tregohet në pamjen e ekranit këtu.

Hapi 3: Konfiguroni Master Fundin, Pastaj Lidhuni së bashku - Pjesa 1

Vendosni Master Fundin, Pastaj Lidhuni së bashku - Pjesa 1
Vendosni Master Fundin, Pastaj Lidhuni së bashku - Pjesa 1

Kur konfiguroni Master End Serial Monitor për të dërguar dy numra, duhet të përdorni gjithmonë karakteret e kufirit të fillimit dhe mbarimit dhe karakterin ndarës me presje siç shihni këtu.

Tani ju duhet të lidhni 2 Arduino së bashku në seri. Kjo bëhet me dy tela patch.

Kam përdorur jeshile dhe të verdhë

  • Merrni së pari të verdhë, kjo duhet të futet në D6 në një Arduino dhe D7 në të dytin
  • Pastaj e kundërta për tela të gjelbër, D7 në të parin dhe D6 në Arduino -n e dytë.

Përndryshe, nëse keni diçka në dispozicion si një palë module Bluetooth - si HC -05 - këto gjithashtu do të funksionojnë për t'ju dhënë saktësisht të njëjtin efekt si telat e mësipërm.

Hapi 4: Konfiguroni Master Fundin, Pastaj Lidhuni së bashku - Pjesa 2

Vendosni Master Fundin, Pastaj Lidhuni së bashku - Pjesa 2
Vendosni Master Fundin, Pastaj Lidhuni së bashku - Pjesa 2
Vendosni Master Fundin, Pastaj Lidhuni së bashku - Pjesa 2
Vendosni Master Fundin, Pastaj Lidhuni së bashku - Pjesa 2

Ne po përdorim bibliotekën Seriale të Softuerit. Informacione të mëtejshme janë në dispozicion me këtë lidhje

Mund ta shihni të thirrur në linjën 7 të secilit prej programeve. Konfiguron kunjat dixhitale 7 dhe 6 si TX dhe RX (transmetoni dhe merrni). Kjo është mënyra se si të dhënat do të udhëtojnë jashtë Master Arduino përmes telit të gjelbër në Slave, dhe, kur programi Slave në Arduino -n e dytë të ketë përfunduar punën e tij, përsëri përmes telit të verdhë. Në fund të të njëjtit ilustrim (në dritaren Serial Monitor) mund të shihni që të dhënat që kemi transmetuar tani kanë kaluar me sukses rreth lakut të përshkruar këtu, dhe të kthehen në PC pasi dyshja e numrave të plotë të ndara bukur.

Hapi 5: Pasqyrë e Skicave / Programeve - Struktura e Programit

Pasqyrë e Skicave / Programeve - Struktura e Programit
Pasqyrë e Skicave / Programeve - Struktura e Programit
Pasqyrë e Skicave / Programeve - Struktura e Programit
Pasqyrë e Skicave / Programeve - Struktura e Programit

Paraqitja Ashtu si në të gjitha skicat Arduino ka 3 pjesë themelore:

  • Deklaratat
  • Konfigurimi
  • Rrethi kryesor

Siç ndodh shpesh, ne kemi përdorur këtu një seksion të 4 -të që është shtimi i 'Funksioneve'. Nëse nuk jeni njohur me përdorimin e Funksioneve, mund të kërkoni në Google për "Funksionet Arduino" dhe do të gjeni faqe shpjegimi si shembulli në këtë lidhje: www.tutorialspoint.com/arduino/arduino_functions…. Me

Ne gjithashtu kemi përdorur skedat për ta ndarë programin në blloqe më të menaxhueshme.

Tre blloqet që kemi përdorur mund të shihen në krye të çdo ilustrimi të dritareve IDE më sipër:

  • simpleRxTx0330Mjeshtër
  • i zakonshëm
  • shënime

Këto janë në të vërtetë skedarë të veçantë brenda dosjes së programit, siç mund të shihni në këtë pamje të Windows Explorer të skedarëve të programit Slave.

Ka një arsye shumë të mirë pse e kemi bërë këtë.

  • Ndërsa po ndërtonim programin, kuptuam se shumica e programit për Masterin ishte i njëjtë me atë të Skllavit.
  • Ne përfunduam duke tërhequr të gjitha pjesët e zakonshme në një skedë, të cilën ne e quajtëm "të zakonshme", dhe pastaj çdo herë që kishim korrigjuar një pjesë (e testuam atë, dhe ishim të kënaqur që funksionoi mirë) thjesht kopjuam dhe ngjitëm të gjithë skedën përballë Masterit në Skllav, ose viza anasjelltas.
  • Skedat e shënimeve gjithashtu ndodhin të jenë identike, pasi dizajni është i përgjithshëm.

Asnjë nga funksionet nuk thirret nga konfigurimi, të gjitha quhen nga lak, kështu që ne i kemi krijuar ato pas konfigurimit, por para lakut.

Hapi 6: Dizajni nga lart poshtë

Ideashtë një ide e mirë të hartoni skicën tuaj duke filluar me një përkufizim të asaj që dëshironi të bëni.

Pasi ta keni këtë, mund të filloni ta bëni skicën të bëjë ato gjëra. Në përgjithësi, nëse ka një detaj që nuk dini ta bëni akoma, thjesht bëjeni atë një funksion dhe lërini krijimin e funksionit deri më vonë.

Kjo ndjek filozofinë e mirë të projektimit, të mësuar në shumë Universitete, të quajtur CDIO (Nëse nuk e njihni tashmë këtë, mund ta kërkoni në Google dhe gjeni faqe për ta shpjeguar si: https://www.cdio.org/s.) Kjo në thelb thotë: Mos e filloni Dizajnin para se ta keni të qartë Konceptin. Mos e filloni Zbatimin derisa ta keni të qartë Dizajnin. Mos prisni që të funksionojë para se ta keni të qartë Zbatimin. C së pari, pastaj D, I dhe O. Në secilën fazë të mëvonshme përsërisni (kthehuni rreth lakut), kështu që sapo të jeni të kënaqur me lakun tuaj fillestar të Dizajnit dhe kontrolloni që akoma plotëson Konceptin dhe përditësoni C nëse keni nevojë. Dhe kështu me radhë, kështu që edhe kur të arrini në Operacion, kthehuni deri në majë dhe përsëri shihni se si duket C tani, pastaj D dhe unë, dhe bëni dhe kontrolloni të gjitha ndryshon sipas nevojës. Me skicat e programimit kjo funksionon njësoj nëse dizajnoni nga lart-poshtë.

Hapi 7: Koncepti dhe Dizajni - Pjesa 1

Koncepti dhe Dizajni - Pjesa 1
Koncepti dhe Dizajni - Pjesa 1
Koncepti dhe Dizajni - Pjesa 1
Koncepti dhe Dizajni - Pjesa 1

Koncepti këtu duket si kërkesat e përshkruara të përcaktuara në skedën "shënime". '

Dizajni mund të duket si një version i hershëm i lakut, i cili përputhet me skedën e shënimeve dhe mund të duket diçka si ju shihni në këtë figurë

Shihni se si më pëlqen të filloj duke kopjuar CTRL-C në fillim të komenteve në kokën e lakut, dhe pastaj filloni të plotësoni vendet bosh me komanda që do t'i bëjnë ato gjëra.

Kjo në të vërtetë përpilon OK siç mund ta shihni në fund të ekranit në figurë. Kjo është duke arritur nga faza CDIO D në I, dhe ndërsa zhvillojmë kodin, është një ide e mirë të vazhdojmë me këtë lak D-I.

Tani është koha për të shkuar në fazën tjetër, ka një koment atje që thotë se do të: // marrim diçka nga USB -ja e harduerit, atëherë do ta transmetojmë atë në kanalin serial të softuerit. Ne e shkruajmë këtë kod për ta bërë atë të ndodhë - rreshtat 133 deri në 138 të treguar këtu me ndriçuesin e verdhë

Hapi 8: Koncepti dhe Dizajni - Pjesa 2

Koncepti dhe Dizajni - Pjesa 2
Koncepti dhe Dizajni - Pjesa 2
Koncepti dhe Dizajni - Pjesa 2
Koncepti dhe Dizajni - Pjesa 2

Dy funksionet e para që prezantojmë këtu janë (recv () dhe tran () për të bërë marrjen nga porti i harduerit dhe transmetimin në portën e softuerit - prandaj i quajmë me parametrat 'hw' ose 'sw' të treguar.

Përveç tyre, ne kemi shtuar një test në një ndryshore globale të quajtur newData. Ky është një flamur që do ta vendosim brenda funksionit "void recv ();". Kur një mesazh është marrë, kjo ndryshore shënohet nga false në të vërtetë. Ne e bëjmë këtë në mënyrë që të transmetojmë një mesazh vetëm nëse një është marrë (flamuri == i vërtetë) në rreshtin 134. Dhe pasi të kemi transmetuar mesazhin tonë kjo është 'punë e kryer', kështu që ne e pastrojmë përsëri flamurin në false në rreshtin 137.

Përsëri ne mund të kontrollojmë përpilimin (D në I), dhe këtë herë kemi një mesazh gabimi 'jo të deklaruar' (treguar). Kjo po na thotë se nuk e kemi deklaruar recv (); funksionin. Ne planifikojmë ta bëjmë këtë më vonë, kështu që tani për tani për të na lejuar të marrim një përmbledhje të pastër, na duhet të krijojmë një funksion dummy ose placeholder, siç tregohet më poshtë.

Përsëri mund të kontrollojmë compile (D në I), dhe këtë herë kemi një mesazh gabimi tjetër 'të pa deklaruar' për tran (); funksionin. Kjo kërkon krijimin e një cungu të ngjashëm. Përsëri ne mund të kontrollojmë përpilimin (D në I), dhe këtë herë do të gjejmë se kjo funksionon në mënyrë perfekte; deri tani mirë.

Hapi 9: Përfundoni lakun kryesor: A) Marrja nga USB, B) Marrja nga Slave Arduino

Përfundoni Lakun Kryesor: A) Marrja nga USB, B) Marrja nga Slave Arduino
Përfundoni Lakun Kryesor: A) Marrja nga USB, B) Marrja nga Slave Arduino
Përfundoni Lakun Kryesor: A) Marrja nga USB, B) Marrja nga Slave Arduino
Përfundoni Lakun Kryesor: A) Marrja nga USB, B) Marrja nga Slave Arduino

Ekziston një pjesë e fundit që kemi shtuar për të përfunduar këtë pjesë, e cila është të shtoni një kod debugging.

Ekziston një Udhëzues tjetër për skicimin e korrigjimit të cilit mund t'i referoheni për të kuptuar se çfarë kemi bërë këtu dhe pse. Referojuni udhëzueses "Si të ndërtoni dhe provoni skicat Arduino derisa të funksionojnë"

Pra, këto rreshta debugimi [136-139 të paraqitura] shtohen më pas në lakin kryesor dhe, ja, ju mund t'i provoni ato në fund Master duke e bërë ndryshoren e korrigjimit të vërtetë, dhe Compiling (I), atëherë nëse lidhni një Arduino lart që mund të Ngarkoni, hapni Monitorin Serial dhe shihni nëse ajo që kthehet në Monitorin Serial është siç tregohet këtu (a shihni që mesazhi "DEBUG MODE" është shtuar?)

Hapi 10: Marrja dhe Trajtimi i të Dhënave në Slave Arduino

Marrja dhe Trajtimi i të Dhënave në Slave Arduino
Marrja dhe Trajtimi i të Dhënave në Slave Arduino
Marrja dhe Trajtimi i të Dhënave në Slave Arduino
Marrja dhe Trajtimi i të Dhënave në Slave Arduino

Marrja nga Slave Arduino

Shtoni kodin e nevojshëm për kanalin e dytë në lakin kryesor, marrësi serik i softuerit siç tregohet - linjat 149 deri në 155.

A mund ta shihni se struktura bazohet lirshëm në atë që kemi shkruar më lart për rastin Master?

Gjithashtu do të shihni që marrim një gabim përpilues, një funksion tjetër të padeklaruar - këtë herë parseData (); - kështu që ne duhet të bëjmë një cung edhe për këtë, para se të mund të ekzekutojmë një përpilim testi pa gabime.

Trajtimi i të dhënave në Slave Arduino

Shtoni kodin kryesor të lakut të kërkuar për Arduino nëse është konfiguruar si një pajisje Slave siç tregohet - rreshtat 163 në 174. A mund ta shihni që struktura e tij është shumë e ngjashme me atë të kanalit të parë?

Dhe duhet ta gjeni këtë herë që përpilohet absolutisht mirë.

Hapi 11: Shkruani funksionin e marrjes

Shkruani funksionin e marrjes
Shkruani funksionin e marrjes

Funksioni Receive - void recv (char from) {} - ka dy punë kryesore.

1 për të marrë një varg karakteresh nga kanali USB, dhe

2 për të marrë një nga kanali Arduino në Arduino.

Për të parën do të na duhet të përdorim sepse përdor Arduino -n e ndërtuar në harduer UART, dhe për të dytën duke përdorur Bibliotekën standarde Arduino: softuer UART.

Kur fillojmë të shtojmë kodin në një funksion - për të krijuar një funksion që bën diçka, në vend të vetëm një cung - ne duhet të kujtojmë të heqim ose komentojmë cungun që po zëvendëson. Përndryshe marrim një gabim të përpilimit: referimi i 'void lrec (char)'.

Provoni dhe merrni gabimin, dhe më pas provoni njërën nga mënyrat e sugjeruara më lart për ta hequr qafe atë.

Filloni me një funksion që duket si ai që tregojmë këtu të rreshtave 75 deri 88 me të verdhë.

Deri tani e dini se duke pasur kod do t'ju duhet të provoni operacionin Compile. Ju merr një gabim, si ato që kishim më herët, të tipit: emri i funksionit nuk deklarohet në këtë fushë. Fillimisht do të kemi nevojë për një cung tjetër për të na lejuar të përpilojmë këtë gabim, kështu që shtoni një si më parë dhe sigurohuni që tani mund të merrni një përpilim pa gabime.

Tani le të hedhim një vështrim në kodin që kemi shkruar për funksionin recv ().

Quiteshtë mjaft i pastër, mund të shihni përdorimin e kushtit 'nëse' për të prodhuar dy pjesët e funksionit të përmendur më lart.

Kodi brenda pjesës 'sw' dhe pjesës 'hw' janë të së njëjtës formë, dhe unë do ta përshkruaj këtu.

E para nga çifti i linjave në secilin rast është fillimi i një laku while. Nëse nuk jeni të njohur me kohën, mund ta kërkoni në faqen Arduino.cc/Reference për shpjegimin dhe shembujt. Këtu presim 'derisa' funksioni 'Serial' i integruar nuk ka marrë asnjë karakter (a) dhe për shkak se ndryshorja newData është fikur (domethënë gjendja false e newData == është e vërtetë). Sapo të merret një personazh - ose më shumë se një personazh - koha do të "bjerë" në rreshtin e dytë në këtë çift. Kjo pastaj do të thërrasë recAstringChar (char); funksion për të trajtuar karakterin aktual. Kjo palë rreshta pastaj do të alternohen ndërsa (ose për aq kohë sa) ka ndonjë personazh që ende kërkon të merret. Pasi të përfundojnë të gjitha, gjendja while mbaron, duke lejuar që niveli nëse ose tjetër të përfundojë, dhe nga ana tjetër të lejojë rec (char); funksioni për të përfunduar. Kështu një mesazh i plotë tani është marrë.

Hapi 12: Shkruani nën -funksionin Receive - Pjesa 1

Shkruani nën -funksionin Marr - Pjesa 1
Shkruani nën -funksionin Marr - Pjesa 1
Shkruani nën -funksionin Marr - Pjesa 1
Shkruani nën -funksionin Marr - Pjesa 1

Tani duhet të shkruajmë funksionin e quajtur recAstringChar (char); Me Ju shikoni nga komenti në rreshtin 50 këtu në krye të tij, se puna e tij është të përditësojë dy tamponë me kopje të mesazhit serial në hyrje. [Doli ndërsa po përpiqesha që të funksiononte e gjithë kjo, një gjë që mësova ishte se kisha nevojë për dy tamponë të ndryshëm - ose të paktën kjo ishte mënyra më e lehtë për të kapërcyer disa probleme, kështu që ajo evoluoi në nevojën për 2 tamponë, kështu që Unë sapo i bëra ato.] Unë kam thirrur njërën tampon: receData, dhe tjetrën: moriChars.

Tamponët janë ndryshore globale, kështu që ato deklarohen në nivelin e modulit, shihni rreshtat 9 dhe 10 të skedës së zakonshme. Ekzistojnë variabla të tjerë të deklaruar brenda këtij funksioni që prandaj kanë shtrirje lokale të treguar në rreshtat 51-54 këtu. Ky nuk është vendi për të shpjeguar dallimet midis globalistëve dhe vendasve, por ka më shumë informacion për këtë në https://www.arduino.cc/glossary/en/ nën Local dhe Global.

Ju gjithashtu mund të mësoni gjithçka për llojet e të dhënave dhe modifikuesit e tipit: statik, boolean, byte, const, char në https://www.arduino.cc/reference/en/#variables, të paraqitura këtu.

Rrjedha kryesore e programit në këtë funksion kontrollohet nga nëse në rreshtin 56 këtu, dhe tjetrën përkatëse në linjën 74. Kjo merret me dy skenarë

a) [nga rreshti 74 e tutje] kur mesazhi i marrë është duke filluar. Kjo ndodh kur shënohet startMarker - kjo është përcaktuar si karakteri '<', prandaj sa herë që testojmë skicën ne gjithmonë fillojmë vargun tonë me atë karakter. Nëse nuk veprojmë atëherë asgjë nuk do të përpunohet si e marrë, e gjithë kjo do të injorohet njësoj sikur të shtypim marrëzi në kërkesën e tastierës 'Serial Monitor'.

b) [rreshtat 56 deri 73] i cili merr të gjithë personazhet e tjerë, çfarëdo që të jenë, por ato merren vetëm me karaktere pasi ka ndodhur një fillim i vlefshëm (a '>' është marrë si në a) më sipër.)

Në këto rreshta (nga 74 në 78) ne e vendosim atë të marrë <në njërën nga tamponët (moriData [0]), por jo në tjetrën. Ne rregullojmë treguesin tampon (variabli: char ndx) për të treguar në pozicionin tjetër tampon rezervë (marrëData [1]) duke përdorur komandën post-increment (++) në rreshtin ndx ++;, dhe vendosëm flamurin në progres të vërtetë.

Rrjedha e programit në këtë pjesë të funksionit kontrollohet nga nëse në rreshtin 57 këtu, dhe tjetrën përkatëse në rreshtin 65. Kjo merret me dy skenarë

a) [nga rreshti 65 e tutje] kur përfundon mesazhi i marrë. Kjo ndodh kur shënohet endMarker - përkufizohet si>, kjo është arsyeja pse sa herë që testojmë skicën tonë, gjithmonë përfundojmë vargun tonë me atë karakter. Një nga gjërat që ndodh kur merret karakteri përfundimtar është që flamuri global (teknikisht i ndryshueshëm) newData është vendosur i vërtetë ashtu si funksioni përfundon, kështu që funksioni që thirri nën-funksionin tonë (funksioni i thirrjes: recv (char);) mund të "dijë" se të dhënat e reja të vlefshme janë marrë të plota.

b) [rreshtat 57 deri 64] i cili merr të gjithë personazhet e tjerë, çfarëdo që të jenë. Thjesht i parkon ato me kujdes në rreshta në të dyja tamponët.

Hapi 13: Shkruani nën -funksionin Marrja - Pjesa 2

Shkruani nën -funksionin Marrja - Pjesa 2
Shkruani nën -funksionin Marrja - Pjesa 2
Shkruani nën -funksionin Marrja - Pjesa 2
Shkruani nën -funksionin Marrja - Pjesa 2

Mund të ndihmojë për të dhënë një shembull se si duken 2 tamponët kur janë të populluar. Nëse do të fusnim enter, tamponët do të kishin personazhet e treguar në to:

Pra, tani mund të shihni që ne kemi një tampon i cili është saktësisht i njëjti karaktere siç kemi shtypur për herë të parë, dhe një tampon i cili ka vetëm dy vlera dhe një presje ndarëse. Tani ne kemi një kod i cili mund të marrë personazhet që shtypim në tastierën Serial Monitor, ne mund të kalojmë nga faza I CDIO në O, duke shtypur disa vargje dhe duke parë se çfarë ndodh. Ngarko kodin në Master Arduino, hapni Monitor Serial dhe provoni të shkruani diçka të vlefshme, si enter. A merrni një jehonë në ekranin e Serial Monitor si ai i treguar këtu?

Hapi 14: Shkruani funksionet e transmetimit dhe analizimit

Shkruani funksionet e transmetimit dhe analizimit
Shkruani funksionet e transmetimit dhe analizimit
Shkruani funksionet e transmetimit dhe analizimit
Shkruani funksionet e transmetimit dhe analizimit

Së pari për Transmetimin

Pra, tani kemi marrë një varg, mund të shkruajmë funksionin e transmetimit: tran (char); për të zëvendësuar cungun e tij. Kjo do të na lejojë të dërgojmë një varg nga Masteri te Slave Arduino, prandaj sigurohuni që të dy pajisjet janë të kyçura dhe të lidhura së bashku për të testuar këtë funksionalitet të ri.

Shkruani këtë funksion siç tregohet këtu në rreshtat 117 deri në 133. Siç do ta kuptoni, ai ka dy pjesë, njëra për të transmetuar në kanalin USB (hardueri UART) dhe një për t'i transmetuar tjetrit Arduino (softueri UART.) Kjo duhet të përpilojë gabimin -falas, dhe mund ta ngarkoni menjëherë skicën dhe të shihni se çfarë ndodh. Këtë herë do të dërgoj. A e merrni rezultatin e treguar?

Fotografia e ekranit është interesante sepse vargu i Marrë … duhet të duket i saktë si më parë, dhe vargu i Transmetuar … tani duhet të duket i saktë. Megjithatë vini re se konvertimi i numrit të plotë nuk ka funksionuar. Ende ka pak më shumë kod për të shtuar për ta bërë atë të funksionojë.

Hapi 15: Shkruani funksionet e transmetimit dhe analizimit

Shkruani funksionet e transmetimit dhe analizimit
Shkruani funksionet e transmetimit dhe analizimit
Shkruani funksionet e transmetimit dhe analizimit
Shkruani funksionet e transmetimit dhe analizimit

Pastaj për Parse

Ky është një pjesë e kodit që analizon vargun e marrë për të nxjerrë vargjet pjesore numerike dhe i konverton ato në vlera të plota. Isshtë parseData void (); funksioni i lakut kryesor

Zëvendësoni cungun e analizës me kodin e treguar në rreshtat 98 - 113. Ngarko atë dhe le të shohim nëse problemi që kishim me 2 vlerat e plota tani është rregulluar. Le te perpiqemi.

Po, funksionon, siç tregohet, numrat e plotë të gjetur janë 49 dhe 98.

Hapi 16: Finale

Finale!
Finale!

Këto të dhëna kanë kaluar menjëherë në lak nga PC përmes Master përmes skllavit dhe përsëri përmes Master përsëri në PC përsëri. Me versionin e përfunduar të zakonshëm të ngarkuar si në skajet Master ashtu edhe në skllevër, dhe me modalitetin e korrigjimit të fikur tani, ne shohim të dhënat e marra saktë në të dy skajet siç tregohet këtu.

Recommended: