10 - amalaish ish Mavzu: SafeString kutubxonasi bilan ishlash ko‘nikmasiga ega bo‘lish.
Ishdan maqsad: SafeString kutubxonasi bilan ishlash ko‘nikmasini shakllantirish.
Nazariy qism SafeString kutubxonasi o‘rganuvchi foydalanuchilar uchun uchun Arduino platformasida satrlarni qayta ishlash uchun xavfsiz, ishonchli holda foydalanish uchun mo‘ljallangan. Ushbu kutubxona o‘z ichiga SafeStringReader: tokenlash bollanmaydigan matnni o‘qish, BufferedInput: matn inputlar uchun qo ‘shimcha buferlash, LoopTimer: sikllarning maksimal va o ‘rtacha bajarilish vaqtlari qaytlari, PinFlasher: bloklanmaydigan chiqish Pin signallari va millisDelay: bloklanmaydigan bir martalik, qaytariluvchi, qayta boshlovchi va to‘xtatuvchi so‘rovlarrad etish uchun bo ‘limlarni o‘z ichiga oladi.
Arduino platformasida satrlarni qayta ishlash uchun oldingi variant Arduino Strings kutubxonasi edi. Sparkfun, Adafruit kompaniyalari Arduino String sinfidan foydalanishni maslahat beradi, chunki Taming Arduino Stringsni ko‘rsatmalari bo‘yicha foydalanilsa juda xavfsiz va foydalanishga qulay hisoblanadi. Shunga qaramay, SafeString sizga xotiradan foydalanishni to‘liq nazorat qilish imkonini, boy o‘qish buyruqlari, parserlar va matn funktsiyalarining boy to‘plamidan foydalanish hamda nosozliklarni tuzatishni osonlashtiradigan batafsil xato xabarlarni olish kabi qulayliklarni beradi. SafeString, shuningdek, uchinchi tomon kutubxonalari tomonidan char[] turidagi belgilarda qaytarilgan ma’lumotlarni qayta ishlash uchun Arduino Strings kutubxonasidan yaxshiroqdir. Arduino String kutubxonasida uchraydigan bir necha turdagi xatolar ham SafeString kutubxonasida tuzatilgan.
SafeStrings debuglash uchun juda oson. SafeStrings dasturingizni to‘g‘ri ishlashiga yordam berish uchun batafsil xato xabarlarini taqdim etadi.
SafeStrings xavfsiz va ishonchli. SafeStrings hech qachon qayta ishga tushirishga olib kelmaydi va sizning kodingiz null ko‘rsatkichlar yoki “\0” argumentlarini qaytarmaydi, SafeString mavjud imkoniyatlaridan oshib ketgan bo‘lsa ham, har doim yaroqli holatda bo‘ladi.
SafeString dasturlari abadiy ishlaydi. SafeStrings xotira fragmentlanishidan butunlay qochadi va argument sifatida uzatilganda hech qachon qo‘shimcha nusxa ko‘chirmaydi.
SafeStrings tezroq. SafeStrings bir nechta nusxalarni yoki qisqa muddatli obyektlarni yaratmaydi va ma’lumotlardan keraksiz nusxa ko‘chirmaydi.
SafeStrings mavjud c-stringlarni qamrab olish mumkin. Mavjud char* yoki char[] ni SafeString obyektiga oʻrash sizga mavjud maʼlumotlarda string manipulyatsiyasini xavfsiz bajarish imkonini beradi.
Amaliy qism SafeString kutubxonasidan fydalnish uchun Arduino dasturi o‘rnatilgan bo‘lishi talab etiladi. Ushbu kutubxona Arduino platformasiga kutubxona sifatida qo‘shiladi. Buning uchun Arduino IDE platdormasi ishga tushirilib, Tools->Manage Libruary menyusi ochiladi. Filter Search qidiruv satriga SafeString so‘zi kiritiladi va sichqonchani SafeString yozuvi ustiga bosiladi. SafeString kutubxonasi qayt yozuvi qismidan Install tugmasini bosiladi.
10.1 – rasm. SafeString kutubxonasini o‘rnatish
Keyin Arduino IDE-ni ishga tushurib, uni o‘rnatish uchun Sketch → Import Library → Add Library menyusidan foydalaning. Arduino IDE-ni qayta ishga tushirish zarur.
File->Examples menyusida endi SafeString ro‘yxatini va uning ostida ko‘p sonli eskiz namunalarini ko‘rishingiz mumkin.
Birinchi misol sifatida quyidagi eskizni ko‘ramiz, SafeString_Example1.ino.
createSafeString(msgStr, 5);
5 uzunlikdan iborat satr chaqiruvchi bo ‘sh SafeString funksiya yaratiladi. Bu yerda SafeString, msgStr funsiya ichidagi global o‘zgaruvchilar. Har qanday holatda ham fragmetnlash yuzaga kelmaydi. Quyidagicha kod yozishingiz mumkin:
10.2 – rasm. SafeString kutubxonasidan foydalanish misoli
SafeString::setOutput(Serial) - chiqish oqimiga xato xabarlarini yuborish va debuglash uchun
msgStr = F("A0");
msgStr += " = ";
msgStr += analogRead(A0);
chiqarish satrni tuzaladi.
msgStr.debug(F(“After adding analogRead”));
sarlavhadan keyin tafsilotlar va mazmun msgStr chop etadi.
10.3 – rasm. Dastur natijasi
Dastur quyidagicha xabar beradi: msgStr butun xabarni saqlash uchun yetarli emasligini bildiradi. Uni kamida 8 sig'imga oshirish kerak. msgStr hali ham amalda ekanligini unutmang. Agar operatsiya bajarilmasa, SafeString o‘zgarishsiz qoladi.
createSafeString(msgStr, 5) ni tahrirlab o'qish uchun uning hajmini 10 ga oshiramiz. Ya’ni SafeString_Example1a.ino
createSafeString(msgStr, 10);
Ushbu o‘zgarishdan keyin eskizni qayta ishga tushirish (SafeString_Example1a.ino) quyidagi to’liq natijani beradi:
createSafeString(msgStr, 5) ni tahrirlash; o'qish uchun uning hajmini 10 ga oshiring, ya'ni SafeString_Example1a.ino
createSafeString(msgStr, 10);
Ushbu o'zgarishdan keyin eskizni qayta ishga tushirish (SafeString_Example1a.ino) quyidagi to‘liq natijani beradi:
10 9 8 7 6 5 4 3 2 1
After adding analogRead msgStr cap:10 len:8 'A0 = 604'
A0 = 604
Bundan tashqari, qavslarni joylashtirish orqali ushbu bayonotlarni kaskad qilishingiz mumkin:
( (msgStr = F("A0")) += " = " ) += analogRead(A0);
Ushbu o‘zgarishdan keyin eskizni qayta ishga tushirish (SafeString_Example1b.ino) quyidagi natijani beradi:
10 9 8 7 6 5 4
Topshiriq Har bir talaba SafeString kutubxonasidan holda mini loyiha tuzadi va kutubxona bergan avzallik ham loyihani tushuntirib beradi.
https://www.forward.com.au/pfod/ArduinoProgramming/SafeString/index.html