Fan: O’rnatilgan tizimlar Mustaqil ishi Mavzu: ds3231 modulini Arduino uno platasiga ulash. Displey ekranida vaqtni ko'rsatish Bajardi


Download 0.81 Mb.
bet5/7
Sana17.01.2023
Hajmi0.81 Mb.
#1098035
1   2   3   4   5   6   7
Bog'liq
Mustqil ish Rustamov Anvar

Dasturiy ta'minot va apparat.
Hamma narsa ishlashi uchun ikkita komponent kerak bo'ladi: Windows uchun dastur va Arduino apparat-dasturiy ta'minot to'plami.
Birinchidan, almashinuv protokoli bo'yicha umumiy ma'lumotlar. Men jo'natish uchun ma'lumotlar formatini tanlashda erkin bo'lganim sababli, men 31 baytlik ma'lumotni yuborish oqilona emas deb qaror qildim va uzatilgan ma'lumotni 4 baytgacha qisqartirdim. Va nima etarli edi? 4 baytga nima sig'ishi mumkin? Ha, yetarli. Sizga kerak bo'lgan hamma narsa joyida. Ishonchim komilki, ko'pchilik 4 bayt nima ekanligini taxmin qilgan. Taxmin qilmaganlar uchun men Vikipediyadagi maqoladan bir parcha keltiraman:
UNIX vaqti (POSIX vaqti) - UNIX va boshqa POSIX-mos keluvchi dasturlarda qabul qilingan vaqt momentlarini tavsiflash tizimi operatsion tizimlar. 1970-yil 1-yanvar (payshanba) yarim tundan (00:00:00 UTC) keyingi soniyalar soni sifatida belgilangan.
UNIX vaqti yil, oy, kun, soat yoki daqiqani aniqlash uchun hisob-kitoblarni talab qilmasdan har bir soniyada ortib boruvchi butun son sifatida ifodalanadi. Zamonaviy UNIX vaqti UTC bilan mos keladi - ortga hisoblash SI soniyalarda.

Demak, UNIX vaqtini saqlaydigan butun son 4 baytni oladi, bu 2 147 483 648 soniyagacha yetarli. Undan keyin mumkin mumkin bo'lgan muammolar. Nega potentsial? Chunki bu raqamning chegarasi balki salbiy deb talqin qilinadi (bir vaqtning o'zida ko'plab qiziquvchan o'rtoqlarning iPhone-larida bo'lgani kabi). Balki, lekin shart emas - bu dasturchilarning qo'llari tabiat tomonidan taqdim etilgan joydan o'sishiga bog'liq. Belgilangan soniyalar soni 2038 yil 19 yanvardagi 03:14:08 ga to'g'ri keladi. Bu vaqtga qadar siz asta-sekin OS ning 64-bitli versiyasiga o'tishingiz mumkin, bu erda vaqt 8 baytli o'zgaruvchida saqlanadi, bu keyingi 292 milliard yil davomida hech qanday muammosiz etarli bo'ladi. Bu bizning butun umrimiz uchun etarli bo'lishi ehtimoli bor. Va keyin siz UNIX ning 128-bitli versiyasiga yangilashingiz kerak.
Bu variantga kelib qanday muammolarni hal qildim? Birinchidan, men uzatiladigan baytlar sonini sezilarli darajada kamaytirdim, bu vaqtni belgilashning aniqligini millisekundlarga oshiradi. Bu ajoyib, to'g'rimi? Ikkinchidan, men (ehtimol) Linux mosligini engillashtirdim. Sharmandalisi, men Linuxga o'rganolmayman va men asosan Windows-dan foydalanaman. Xuddi shu Windows uchun men ekspeditor yozishim mumkin, lekin Linux uchun men qila olmayman. Lekin men ishonamanki, Linuxda UNIX vaqti qiymatini Windowsga qaraganda ancha oson olishingiz va bu raqamni MAQOMOTI portiga yuborishingiz mumkin.
Yo'q qo'shimcha haftaning kuni va boshqalar kabi ma'lumotlarni uzatish kerak emas. Faqat UNIX vaqti. Qolgan hamma narsa Arduino da amalga oshiriladi.
Endi to'g'ridan-to'g'ri bir oz aniqlik birinchi komponent - Windows uchun dastur. Dastur yaxshi eski Delphida yozilgan. Ishga tushganda, qalqib chiquvchi oyna sizdan ma'lumotlarni yuborish uchun MAQOMOTI portini tanlashingizni so'raydi. Tanlang. Qolgan sozlamalar sukut bo'yicha qoldirilishi kerak.
Dastur qanday ishlaydi? Vaqt formatidan qayta hisoblaydi windows ma'lumotlari UNIX formati uchun, ya'ni 1970-yil 1-yanvar yarim tundan boshlab soniyalar soni. Keyin u 3 soniya qo'shadi va bo'sh tsiklga "tushadi" (o'sha qo'shimcha 3 soniyadan kamroq), undan chiqish kerakli soniyalarda, iloji boricha 000 millisekundga yaqin sodir bo'ladi. Boshqacha qilib aytganda, o'sha soniyaning boshlanishi kuzatiladi, uning qiymati Arduino-ga yuborilishi kerak. Qabul qiling, masalan, hozir XXXXXXXXX5 soniya bo'lgan ma'lumotlarni yuborish, aslida esa, masalan, XXXXXXXXX5 va 756 mingdan bir (masalan) soniyalar, to'g'ri bo'lmaydi. Shuning uchun ma'lumotlarni uzatishni boshlash uchun siz soniyaning boshlanishini kuzatishingiz kerak. Ma'lumotlar uzatilgandan so'ng, dastur do'stona "Bajarildi :)" holatini xabar qiladi. Bu dasturning missiyasini yakunlaydi.


Download 0.81 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling