Мазмұны:

Сандық деректерді бір Arduino -дан екіншісіне жіберіңіз: 16 қадам
Сандық деректерді бір Arduino -дан екіншісіне жіберіңіз: 16 қадам

Бейне: Сандық деректерді бір Arduino -дан екіншісіне жіберіңіз: 16 қадам

Бейне: Сандық деректерді бір Arduino -дан екіншісіне жіберіңіз: 16 қадам
Бейне: How to use Arduino as TV Remote Controller with Infrared 2024, Шілде
Anonim
Сандық деректерді бір Arduino -дан екіншісіне жіберіңіз
Сандық деректерді бір Arduino -дан екіншісіне жіберіңіз

Кіріспе

Дэвид Палмер, CDIO Tech. Астон университетінде.

Сізге бір нөмірді бір Arduino -дан екіншісіне жіберу қажет болды ма? Бұл нұсқаулық қалай болатынын көрсетеді.

Сіз оның жұмысын Serial Monitor терминалына жіберу үшін сандар тізбегін теру арқылы оңай тексере аласыз және сандар екінші Arduino -ға қосылған екінші сериялық мониторда қайта шығатынын көре аласыз. Сіз тіпті Bluetooth сілтемесін пайдалана аласыз.

Ол не істейді

Arduino -ның екі бағдарламасын (Arduino -дағы эскиздер) әзірлеу қажет, біреуі Arduino сериялық мониторы бар негізгі компьютерге қосылу үшін мастер -бағдарлама, біреуі Мастерден сериялық хабарды алу, оны декодтау және кері жіберу үшін құл ретінде әрекет ету. Қосымша IDE сериялық мониторында жұмыс істейтін сандарды көрсете алады, егер сіз оны қолданғыңыз келсе. Бұл бірінші кезекте жұмыс істеуге көмектеседі және егер сіз өзіңіздің талаптарыңызға сәйкес бағдарламаларға қандай да бір өзгерістер енгізуді шешсеңіз сізге көмектеседі.

Жабдық

  • 2 Ардуино
  • 2 USB сымы
  • патч сымдары (қажет болған жағдайда)
  • Arduino IDE жүктелген 1 компьютер/ноутбук (Arduino.cc веб -сайтынан ақысыз жүктеуге болады)

1 -қадам: Орнату - алдымен жабдықты орнатыңыз

Орнату - алдымен жабдықты орнатыңыз
Орнату - алдымен жабдықты орнатыңыз
Орнату - алдымен жабдықты орнатыңыз
Орнату - алдымен жабдықты орнатыңыз

2 Arduino компьютердегі 2 USB портына қосыңыз.

Кеңес, кейінірек қиыншылыққа түспеу үшін оларды M және S (қожайыны мен құлы) деп белгілеген дұрыс (бұл жерде 2 фотода көрсетілген).

2 -қадам: Орнату - Экранды орнату

Орнату - Экранды орнату
Орнату - Экранды орнату

Ең дұрысы - экранды өзіңізге ыңғайлы етіп орнату

  • сол жақта Master бағдарламасы жүктелген IDE және
  • бұл оң жақтағы құлмен.

Бұл жерде түсірілген суретте көрсетілгендей, Maser және Slave сериялық мониторларын сол және оң жақта ұстаңыз.

3 -қадам: Master End -ді орнатыңыз, содан кейін бірге қосылыңыз - 1 -бөлім

Негізгі ұшты орнатыңыз, содан кейін бірге қосылыңыз - 1 -бөлім
Негізгі ұшты орнатыңыз, содан кейін бірге қосылыңыз - 1 -бөлім

Master End сериялық мониторын екі нөмірді жіберу үшін орнатқан кезде, сіз әрқашан осында көріп тұрғандай, бастау және аяқтау, бөлгіш таңбаларды және үтір бөлгіш таңбасын пайдалануыңыз керек.

Енді сіз 2 Arduino -ны сериялық түрде қосуыңыз керек. Бұл екі патч сыммен жасалады.

Мен жасыл мен сары түстерді қолдандым

  • Алдымен сары түс алыңыз, ол D6 -ге бір Arduino -да, екіншісінде D7 -ге қосылуы керек
  • Содан кейін жасыл сым үшін керісінше, D7 бірінші және D6 екінші Arduino.

Сонымен қатар, егер сізде Bluetooth модульдері сияқты HC -05 сияқты қол жетімді нәрсе болса, олар сізге жоғарыдағы сымдармен бірдей әсер береді.

4 -қадам: Негізгі ұшты орнатыңыз, содан кейін бірге қосылыңыз - 2 -бөлім

Негізгі ұшты орнатыңыз, содан кейін бірге қосылыңыз - 2 -бөлім
Негізгі ұшты орнатыңыз, содан кейін бірге қосылыңыз - 2 -бөлім
Негізгі ұшты орнатыңыз, содан кейін бірге қосылыңыз - 2 -бөлім
Негізгі ұшты орнатыңыз, содан кейін бірге қосылыңыз - 2 -бөлім

Біз бағдарламалық жасақтама кітапханасын қолданамыз. Қосымша ақпаратты мына сілтеме бойынша алуға болады

Сіз оны кез келген бағдарламаның 7-жолынан көре аласыз. Ол цифрлық 7 және 6 түйреуіштерді TX және RX ретінде конфигурациялайды (жіберу және қабылдау). Деректер осылайша Master Arduino -дан жасыл сым арқылы құлға өтеді, ал екінші Arduino -дағы Slave бағдарламасы өз жұмысын аяқтағаннан кейін сары сым арқылы өтеді. Сол суреттің төменгі жағында (сериялық монитор терезесінде) сіз біз жіберген деректердің осы жерде сипатталған циклды сәтті өткенін және компьютерге қайта оралғанын көруге болады, өйткені жұп бүтін сандар жақсы бөлінген.

5 -қадам: Эскиздерге / Бағдарламаларға шолу - Бағдарламаның құрылымы

Эскиздерге / Бағдарламаларға шолу - Бағдарлама құрылымы
Эскиздерге / Бағдарламаларға шолу - Бағдарлама құрылымы
Эскиздерге / Бағдарламаларға шолу - Бағдарлама құрылымы
Эскиздерге / Бағдарламаларға шолу - Бағдарлама құрылымы

Орналасу Барлық Arduino эскиздеріндегідей 3 негізгі бөліктен тұрады:

  • Декларациялар
  • Орнату
  • Негізгі цикл

Әдетте, біз мұнда «Функциялар» қосымшасы болып табылатын 4 -ші бөлімді қолдандық. Егер сіз функцияларды қолдануды білмесеңіз, сіз Google -ді «Arduino функциялары» бойынша таба аласыз және сіз мына сілтемедегі мысал сияқты түсіндіру сайттарын таба аласыз: www.tutorialspoint.com/arduino/arduino_functions…..

Біз сонымен қатар бағдарламаны басқарылатын блоктарға бөлу үшін қойындыларды қолдандық.

Біз қолданған үш блокты IDE терезелерінің әр суретінің жоғарғы жағында көруге болады:

  • қарапайымRxTx0330Мастер
  • жалпы
  • жазбалар

Бұл бағдарлама қалтасындағы бөлек файлдар, бұл Windows Explorer шолғышында Slave бағдарламасы файлдарының көрінісінен көрінеді.

Мұны істеуіміздің өте жақсы себебі бар.

  • Бағдарламаны құрып жатқанда, біз магистрге арналған бағдарламаның көп бөлігі құлға ұқсас екенін түсіндік.
  • Біз барлық ортақ бөліктерді қойындыға шығаруды аяқтадық, сондықтан біз оны «ортақ» деп атадық, содан кейін біз бөлікті жөндеу кезінде (оны сынап көрдік, және ол жақсы жұмыс істегеніне риза болды) біз сол қойындыны көшіріп, қойдық. Мастерден құлға дейін немесе виза керісінше.
  • Жазбалар қойындылары да бірдей болады, себебі дизайн жалпы болып табылады.

Функциялардың ешқайсысы орнатудан шақырылмайды, олардың барлығы циклден шақырылады, сондықтан біз оларды орнатудан кейін, бірақ цикл алдында құрдық.

6 -қадам: Жоғарыдан төмен дизайн

Эскизді не істегіңіз келетінін анықтаудан бастап жасаған дұрыс.

Мұны алғаннан кейін сіз эскизді сол әрекеттерді жасауға кірісе аласыз. Әдетте, егер сіз әлі қалай жасау керектігін білмейтін егжей -тегжейлі ақпарат болса, оны функцияға айналдырыңыз және функцияның жасалуын кейінге қалдырыңыз.

Бұл CDIO деп аталатын көптеген университеттерде оқытылатын жақсы дизайн философиясына сәйкес келеді (егер сіз мұны білмесеңіз, оны Google -ге жіберіп, оны түсіндіретін сайттарды табуға болады: https://www.cdio.org/s.) Бұл негізінен былай дейді: Тұжырымдаманы түсінгенше Дизайнды бастамаңыз. Дизайн түсінікті болмайынша, іске асыруды бастамаңыз. Қолдану анық болмай тұрып, ол жұмыс істейді деп күтпеңіз. Алдымен C, содан кейін D, I және O. Әр келесі кезеңде сіз қайталанасыз (цикл (лардан) қайтыңыз, сондықтан сіз бастапқы дизайн циклына риза болсаңыз және оның әлі де тұжырымдамаға сәйкес келетінін тексеріңіз және жаңартыңыз) Егер сізге қажет болса, с.с.с.с.с.с.с. Бағдарламалық эскиздерде бұл жоғарыдан төменге қарай жасалса, дәл солай жұмыс істейді.

7 -қадам: Тұжырымдама мен дизайн - 1 -бөлім

Тұжырымдама мен дизайн - 1 бөлім
Тұжырымдама мен дизайн - 1 бөлім
Тұжырымдама мен дизайн - 1 бөлім
Тұжырымдама мен дизайн - 1 бөлім

Мұндағы тұжырымдама «жазбалар» қойындысында көрсетілген контурлық талаптарға ұқсайды.

Дизайн циклдің алғашқы нұсқасына ұқсауы мүмкін, ол жазбалар қойындысына сәйкес келеді және осы суретте көрсетілгендей көрінуі мүмкін

Пікірлерді алдымен циклдың басына көшіруді CTRL-C арқылы қалай бастауды ұнататынымды қараңыз, содан кейін бос орындарды сол әрекеттерді орындайтын командалармен толтыруды бастаңыз.

Бұл шын мәнінде OK құрастырады, оны суреттің төменгі жағында көруге болады. Бұл CDIO D кезеңінен I-ге дейін жетеді, және біз кодты әзірлеген кезде осы D-I циклін айналып өту жақсы идея.

Енді келесі кезеңге өту уақыты келді, онда біз мынаны айтамыз: // USB -ден аппараттық құралдан бірдеңе аламыз, содан кейін біз оны бағдарламалық жасақтама арнасына жібереміз. Біз бұл кодты осылай жасау үшін жазамыз - мұнда 133 -тен 138 -ге дейінгі жолдар сары бөлектегіште көрсетілген

8 -қадам: Тұжырымдама мен дизайн - 2 -бөлім

Тұжырымдама мен дизайн - 2 бөлім
Тұжырымдама мен дизайн - 2 бөлім
Тұжырымдама мен дизайн - 2 бөлім
Тұжырымдама мен дизайн - 2 бөлім

Біз енгізетін алғашқы екі функция - бұл (recv () және tran () аппараттық порттан қабылдауды және бағдарламалық жасақтама портына беруді, сондықтан оларды «hw» немесе «sw» көрсетілген параметрлермен шақыру.

Олардан басқа, біз newData деп аталатын жаһандық айнымалыға тест қостық. Бұл «void recv ();» функциясының ішіне орнататын жалау. Хабар алынған кезде бұл айнымалы жалғаннан шынға дейін белгіленеді. Біз мұны тек 134 -жолда (жалауша == ақиқат) алынған жағдайда ғана хабарды жіберу үшін жасаймыз. Ал біз «жұмыс аяқталды» деген хабарды жіберген соң, жалауды 137 -жолда қайтадан жалғанға тазартамыз.

Біз қайтадан компиляцияны тексере аламыз (D -ден I -ге дейін) және бұл жолы бізде «жарияланбаған» қате туралы хабар бар (көрсетілген). Бұл бізге recv () жарияламағанымызды білдіреді; функция. Біз мұны кейінірек жасауды жоспарлап отырмыз, сондықтан таза компиляция алуға рұқсат беру үшін, келесіде көрсетілгендей, муляж немесе толтырғыш функциясын жасау керек.

Біз қайтадан компиляцияны тексере аламыз (D -ден I -ге дейін) және бұл жолы бізде tran () үшін басқа «жарияланбаған» қате туралы хабар бар; функция. Бұл ұқсас стуб жасауды қажет етеді. Тағы да біз компиляцияны тексере аламыз (D -ден I -ге дейін) және бұл жолы біз бұл жұмысты тамаша табамыз; Барлығы ойдығыдай.

9 -қадам: Негізгі циклды аяқтаңыз: A) USB -ден алу, B) Ардуино құлынан алу

Негізгі циклды аяқтаңыз: A) USB -ден алу, B) Ардуино құлынан алу
Негізгі циклды аяқтаңыз: A) USB -ден алу, B) Ардуино құлынан алу
Негізгі циклды аяқтаңыз: A) USB -ден алу, B) Ардуино құлынан алу
Негізгі циклды аяқтаңыз: A) USB -ден алу, B) Ардуино құлынан алу

Бұл бөлікті аяқтау үшін біз қосқан соңғы бөлік бар, ол - отладтау кодын қосу.

Бұл жерде не үшін істегенімізді түсіну үшін сілтемелерді жөндеуге арналған тағы бір нұсқаулық бар. «Arduino эскиздерін жұмыс жасамайынша қалай құруға және сынауға болады» нұсқаулығын қараңыз.

Бұл түзету сызықтары [136-139 көрсетілген] келесі негізгі циклге қосылады, және сіз оларды жөндеудің айнымалы мәнін шындыққа айналдыру және Compiling (I) арқылы тексере аласыз. Сіз Arduino -ды қосасыз, сіз жүктей аласыз, сериялық мониторды ашасыз және сериялық мониторға қайсысы осында көрсетілгенін тексересіз («ЖІБІЛІК РЕЖИМІ» хабары қосылғанын көресіз бе?)

10 -қадам: Ардуинодағы деректерді қабылдау және өңдеу

Ардуино құлындағы деректерді қабылдау және өңдеу
Ардуино құлындағы деректерді қабылдау және өңдеу
Ардуино құлындағы деректерді қабылдау және өңдеу
Ардуино құлындағы деректерді қабылдау және өңдеу

Құл Ардуинодан алу

Екінші арнаның қажетті кодын негізгі циклге, бағдарламалық қамтамасыз етудің сериялық қабылдағышына 149 - 155 жолдарын қосыңыз.

Сіз құрылымның жоғарыда Мастер корпусы үшін жазғанымызға негізделгенін көре аласыз ба?

Сондай -ақ, біз компилятор қатесін, басқа жарияланбаған функция алатынымызды көреміз - бұл жолы parseData (); - сондықтан қатесіз тестілеу компиляциясын іске қоспас бұрын, біз де бұл туралы қыстырма жасауымыз керек.

Деректерді Slave Arduino бағдарламасында өңдеу

Arduino үшін негізгі цикл кодын қосыңыз, егер ол суретте көрсетілгендей құлдық құрылғы ретінде конфигурацияланған болса - 163 -тен 174 -ке дейінгі жолдар. Оның құрылымы бірінші арнаның құрылымына өте ұқсас екенін көресіз бе?

Және сіз бұл жолы ол өте жақсы жиналғанын табуыңыз керек.

11 -қадам: Қабылдау функциясын жазыңыз

Қабылдау функциясын жазыңыз
Қабылдау функциясын жазыңыз

Қабылдау функциясы - void recv (char from) {} - екі негізгі жұмыс бар.

1 USB арнасынан таңбалар жолын алу үшін және

2 Arduino - Arduino арнасынан біреуін алу.

Біріншісі үшін біз оны пайдалануымыз керек, себебі ол Arduino -ның UART аппараттық құралын, екіншісі үшін стандартты Arduino Library: UART бағдарламалық жасақтамасын қолданады.

Функцияға кодты қосуды бастаған кезде - тек қана орнына бірдеңе жасайтын функция жасау үшін - оны алмастыратын бетті алып тастауды немесе түсініктеме беруді ұмытпау керек. Әйтпесе, біз компиляция қатесін аламыз: 'void lrec (char)' жаңарту.

Қатені алуға тырысыңыз, содан кейін оны жою үшін жоғарыда ұсынылған әдістердің бірін қолданыңыз.

Сары түспен 75-88 -ші жолдарда көрсетілген функцияға ұқсас функциядан бастаңыз.

Сіз коды бар болса, компиляция әрекетін қолданып көріңіз. Бұл сізге бұрын жіберілгендер сияқты қате береді: функция атауы осы көлемде жарияланбаған. Бізге бастапқыда бұл қатені жоюға мүмкіндік беретін басқа қыстырма қажет болады, сондықтан оны бұрынғыдай қосыңыз және енді қатесіз компиляция алуға болатынына көз жеткізіңіз.

Енді recv () функциясы үшін жазған кодты қарастырайық.

Бұл өте таза, сіз жоғарыда аталған функцияның екі бөлігін шығару үшін 'if' шартын қолдануды көре аласыз.

'Sw' бөлігі мен 'hw' бөлігінің ішіндегі код бір формада, мен оны осында сипаттаймын.

Әр жағдайда жұптың біріншісі - уақыт циклінің басталуы. Егер сіз бұл уақытты білмесеңіз, оны түсіндіру мен мысалдар үшін Arduino.cc/Reference сайтынан іздеуге болады. Мұнда біз «кірістірілген» сериялық «функциясы ешқандай таңба алмаса және» newData «айнымалысы өшірілгендіктен күтеміз (яғни newData == жалған шарт шын). Бір немесе бірнеше таңбаны алғаннан кейін уақыт осы жұптың екінші жолына өтеді. Бұл recAstringChar (char) шақырады; ағымдағы таңбаны өңдеу функциясы. Бұл жұп жолдар кезекпен ауысады (немесе ұзақ уақыт бойы) әлі де қабылдауды қажет ететін таңбалар бар. Барлығын орындағаннан кейін, if немесе басқа деңгейдің соңына дейін рұқсат беру күйі аяқталады, ал өз кезегінде rec (char) мүмкіндік береді; аяқтау функциясы. Осылайша, қазір толық хабарлама алынды.

12 -қадам: Receive қосалқы функциясын жазыңыз - 1 -бөлім

Receive қосалқы функциясын жазыңыз - 1 -бөлім
Receive қосалқы функциясын жазыңыз - 1 -бөлім
Receive қосалқы функциясын жазыңыз - 1 -бөлім
Receive қосалқы функциясын жазыңыз - 1 -бөлім

Енді бізге recAstringChar (char) деп аталатын функцияны жазу керек;. Сіз оның 50 -ші жолындағы түсініктемеден оның жұмысының кіріс сериялық хабарламасының көшірмелері бар екі буферді жаңарту екенін көресіз. [Мен бәрін шешуге тырысып жатқанымда, маған екі түрлі буфер қажет екенін білдім - немесе, кем дегенде, бұл кейбір мәселелерді шешудің ең оңай жолы, сондықтан ол 2 буферге мұқтаж болды. Мен оларды жай жасадым.] Мен бір буферге қоңырау шалдым: receiveData, ал екіншісі: acceptChars.

Буферлер жаһандық айнымалы болып табылады, сондықтан олар модуль деңгейінде жарияланады, жалпы қойындының 9 және 10 -жолдарын қараңыз. Осы функцияның ішінде жарияланған басқа айнымалылар бар, сондықтан олар 51-54 жолдарында жергілікті ауқымға ие. Бұл жаһандықтар мен жергілікті тұрғындар арасындағы айырмашылықты түсіндіретін жер емес, бірақ бұл туралы толығырақ ақпарат https://www.arduino.cc/glossary/kz/ Жергілікті және Жаһандық бөлімінде.

Деректердің түрлері мен түрлендіргіштері туралы бәрін білуге болады: static, логикалық, байт, const, char

Бұл функциядағы негізгі бағдарлама ағыны if 56 арқылы, ал 74 -жолда сәйкес келеді. Бұл екі сценарийге қатысты

а) [74 -жолдан] қабылданған хабарлама басталған кезде. Бұл startMarker байқалған кезде болады - бұл '<' символы ретінде анықталады, сондықтан біз эскизді тексергенде біз әрқашан өз жолымызды сол таңбадан бастаймыз. Егер олай етпесек, ештеңе қабылданбайды деп өңделмейді, біз 'Serial Monitor' пернетақта шақыруында бос сөз жазғандай боламыз.

б) [56 -дан 73 -ке дейінгі жолдар], олар барлық басқа таңбаларды алады, бірақ олар таңбалармен жарамды басталғаннан кейін ғана айналысады («>» жоғарыдағы а -да көрсетілгендей).)

Бұл жолдарда (74 -тен 78 -ге дейін) біз алынғанды <буферлердің біріне қойдық (алынғанData [0]), ал екіншісінде емес. Біз буферлік көрсеткішті (айнымалы: char ndx) келесі қосалқы буферлік позицияға (қабылданғанData [1]) ndx ++ жолындағы ұлғайтудан кейінгі пәрменді (++) қолдану үшін реттейміз;, және біз жүріп жатқан жалаушаны ақиқатқа қойдық.

Функцияның осы бөлігіндегі бағдарлама ағыны егер бұл жерде 57 -жолда if арқылы бақыланады, ал оған сәйкес 65 -жолда сәйкес келеді. Бұл екі сценарийге қатысты

а) [65 -ші жолдан] қабылданған хабарлама аяқталған кезде. Бұл endMarker анықталған кезде болады -> ретінде анықталады, сондықтан біз эскизімізді тексергенде біз әрқашан өз жолымызды осы таңбамен аяқтаймыз. Ақырғы символды алған кезде болатын нәрселердің бірі-жаһандық жалаушаның (техникалық ауыспалы) функциясы аяқталатын кезде дәл орнатылуы, осылайша біздің қосалқы функцияны шақыратын функция (шақыру функциясы: recv (char);) жарамды жаңа деректер толық алынғанын 'біле алады'.

б) [57 -ден 64 -ке дейінгі жолдар], олар барлық басқа таңбаларды алады. Бұл оларды екі буфердегі қатарларға ұқыпты түрде қояды.

13 -қадам: Receive қосалқы функциясын жазыңыз - 2 -бөлім

Receive қосалқы функциясын жазыңыз - 2 -бөлім
Receive қосалқы функциясын жазыңыз - 2 -бөлім
Receive қосалқы функциясын жазыңыз - 2 -бөлім
Receive қосалқы функциясын жазыңыз - 2 -бөлім

Бұл 2 буфер толтырылған кезде қалай көрінетініне мысал келтіруге көмектеседі. Егер біз енгізуді енгізетін болсақ, буферлерде таңбалар болады:

Енді сіз бізде бірінші енгізілген таңбаларға сәйкес келетін бір буфер және екі мәні мен бөлетін үтірі бар бір буфер бар екенін көре аласыз. Енді бізде Serial Monitor пернетақтасында енгізілетін таңбаларды қабылдай алатын код бар, біз CDIO I фазасынан O-ға ауыса аламыз, кейбір жолдарды теріп, не болатынын көре аламыз. Кодты Master Arduino -ға жүктеңіз, сериялық мониторды ашып, енгізу сияқты жарамды нәрсені енгізіп көріңіз. Сіз мұнда көрсетілгендей сериялық монитор экранында жаңғырық аласыз ба?

14 -қадам: Беру және талдау функцияларын жазыңыз

Беру және талдау функцияларын жазыңыз
Беру және талдау функцияларын жазыңыз
Беру және талдау функцияларын жазыңыз
Беру және талдау функцияларын жазыңыз

Алдымен жіберу үшін

Енді біз жолды алдық, жіберу функциясын жаза аламыз: tran (char); оның тірегін ауыстыру үшін. Бұл бізге Мастерден Құл Ардуиноға жол жіберуге мүмкіндік береді, сондықтан жаңа функцияны тексеру үшін екі құрылғы да қосылғанын және қосылғанын тексеріңіз.

Бұл функцияны осында 117 - 133 жолдарда көрсетілгендей енгізіңіз. Белгілі болғандай, ол екі бөліктен тұрады: біреуі USB арнасына (аппараттық UART), екіншісі Arduino (UART бағдарламалық жасақтамасына) беру үшін. Бұл қатені құрастыруы тиіс. -тегін, және сіз бірден эскизді жүктей аласыз және не болатынын көре аласыз. Бұл жолы мен жіберемін. Көрсетілген нәтижені аласыз ба?

Скриншот қызықты, себебі қабылданған жол бұрынғыдай дұрыс көрінуі керек, ал жіберілген жол енді дұрыс көрінуі керек. Бірақ бүтін санды түрлендіру жұмыс істемегенін ескеріңіз. Бұл жұмысты орындау үшін әлі де қосымша код бар.

15 -қадам: Беру және талдау функцияларын жазыңыз

Беру және талдау функцияларын жазыңыз
Беру және талдау функцияларын жазыңыз
Беру және талдау функцияларын жазыңыз
Беру және талдау функцияларын жазыңыз

Содан кейін талдау үшін

Бұл сандық ішінара жолдарды алу үшін алынған жолды талдайтын және оларды бүтін мәндерге түрлендіретін код бөлігі. Бұл бос parseData (); негізгі циклдің қызметі

Қатысу талшығын 98 - 113 жолдарда көрсетілген кодпен ауыстырыңыз. Жүктеп салыңыз, және бізде 2 бүтін мәнге қатысты мәселе шешілгенін көрейік. Көрейік.

Иә, ол жұмыс істейді, көрсетілгендей, табылған бүтін сандар 49 және 98.

16 -қадам: Финал

Финал!
Финал!

Бұл деректер ДК -ден Мастер арқылы құл арқылы, ал Мастер арқылы қайтадан ДК -ге айналды. Ортақ нұсқаның дайын нұсқасы негізгі және қосалқы қосылымдарға жүктелгенде және жөндеу режимі қазір өшірілгенде, біз мұнда көрсетілгендей екі жағынан да дұрыс алынған деректерді көре аламыз.

Ұсынылған: