هڪ سستو چيني ڊوائيس مان هڪ پروگرام قابل منطق ڪنٽرولر ڪيئن ٺاهيو بابت هڪ مضمون. اهڙي ڊوائيس ان جي استعمال کي گھر جي آٽوميشن ۾ ۽ اسڪول ڪمپيوٽر سائنس ۾ عملي طبقن جي طور تي ملندو.
ريفرنس لاءِ، ڊفالٽ طور سونف بيسڪ پروگرام هڪ موبائل ايپليڪيشن سان ڪم ڪري ٿو چين جي ڪلائوڊ سروس ذريعي؛ تجويز ڪيل ترميم کان پوءِ، هن ڊوائيس سان وڌيڪ رابطو برائوزر ۾ ممڪن ٿيندو.
سيڪشن I. سونف کي MGT24 سروس سان ڳنڍڻ
قدم 1: هڪ ڪنٽرول پينل ٺاهيو
سائيٽ تي رجسٽر ٿيو
لاگ ان
نئين ڊوائيس لاء ڪنٽرول پينل ٺاهڻ لاء، "+" بٽڻ تي ڪلڪ ڪريو.
پينل ٺاهڻ جو مثال
هڪ دفعو پينل ٺاهيو ويندو، اهو توهان جي پينل جي فهرست ۾ ظاهر ٿيندو.
ٺاهيل پينل جي "سيٽ اپ" ٽئب ۾، "ڊيوائس ID" ۽ "اجازت ڏيڻ جي ڪيئي" فيلڊ ڳولھيو؛ مستقبل ۾، سون آف ڊيوائس کي ترتيب ڏيڻ وقت ھن معلومات جي ضرورت پوندي.
ٽيبل مثال
قدم 2. ڊوائيس کي ريفليش ڪريو
افاديت استعمال ڪندي
قدم 3. ڊوائيس سيٽ اپ
ڊوائيس تي پاور لاڳو ڪريو، LED جي روشني کان پوء، بٽڻ کي دٻايو ۽ ان کي دٻايو جيستائين LED وقتي طور تي هڪجهڙائي سان چمڪڻ شروع ٿئي.
هن وقت، "PLC Sonoff Basic" نالي هڪ نئون وائي فائي نيٽ ورڪ ظاهر ٿيندو، پنهنجي ڪمپيوٽر کي هن نيٽ ورڪ سان ڳنڍيو.
LED اشاري جي وضاحت
LED اشارو
ڊوائيس جي حالت
وقتي ڊبل چمڪائڻ
روٽر سان ڪوبه ڪنيڪشن
مسلسل چمڪي ٿو
روٽر سان رابطو قائم
وقتي يونيفارم چمڪندڙ
وائي فائي رسائي پوائنٽ موڊ
وسايو ويو
بجلي جي فراهمي ناهي
انٽرنيٽ برائوزر کوليو ۽ ايڊريس بار ۾ ٽيڪسٽ "192.168.4.1" داخل ڪريو، ڊوائيس جي نيٽ ورڪ سيٽنگون سيٽنگون صفحي ڏانھن وڃو.
ھيٺ ڏنل شعبن ۾ ڀريو:
- "نيٽ ورڪ جو نالو" ۽ "پاسورڊ" (ڊوائيس کي توھان جي گھر جي وائي فائي روٽر سان ڳنڍڻ لاءِ).
- "ڊيوائس جي سڃاڻپ" ۽ "اجازت ڏيڻ جي چاٻي" (ايم جي ٽي 24 سروس تي ڊوائيس کي اختيار ڏيڻ لاء).
ڊوائيس نيٽ ورڪ پيٽرولر سيٽنگ جو مثال
سيٽنگون محفوظ ڪريو ۽ ڊوائيس ريبوٽ ڪريو.
اهو آهي
قدم 4. ڳنڍڻ وارا سينسر (اختياري)
موجوده فرم ویئر چار ds18b20 درجه حرارت سينسر تائين سپورٽ ڪري ٿو. هتي
سيڪشن II. بصري پروگرامنگ
قدم 1: اسڪرپٽ ٺاهيو
پروگرامنگ ماحول جي طور تي استعمال ڪيو ويو
مون خاص بلاڪ شامل ڪيا آھن لکڻ ۽ پڙھڻ لاءِ ڊيوائس پيٽرول. ڪنهن به پيٽرول تائين رسائي آهي نالي سان. ريموٽ ڊوائيسز جي پيٽرولر لاء، مرڪب جا نالا استعمال ڪيا ويا آهن: "parameter@device".
اختيارن جي ڊراپ ڊائون لسٽ
مثال طور منظر عام تي سائيڪل سوئچنگ آن ۽ آف لوڊ (1Hz):
اسڪرپٽ جو هڪ مثال ٻن الڳ ڊوائيسز جي آپريشن کي هم وقت سازي ڪرڻ. يعني، ٽارگيٽ ڊوائيس جي رلي ريموٽ ڊوائيس جي رلي جي آپريشن کي ورجائي ٿو.
thermostat لاء منظر (بغير hysteresis):
وڌيڪ پيچيده اسڪرپٽ ٺاهڻ لاءِ، توھان استعمال ڪري سگھوٿا variables، loops، functions (with arguments) and other constructs. مان هتي اهو سڀ ڪجهه تفصيل سان بيان نه ڪندس؛ انٽرنيٽ تي اڳ ۾ ئي ڪافي آهي.
مرحلا 2: اسڪرپٽ جو آرڊر
رسم الخط مسلسل هلندو آهي، ۽ جيترو جلدي اهو پنهنجي پڄاڻي تي پهچندو آهي، اهو ٻيهر شروع ٿئي ٿو. هن حالت ۾، ٻه بلاڪ آهن جيڪي عارضي طور تي اسڪرپٽ کي روڪي سگهن ٿا، "تاخير" ۽ "روڪ".
"تاخير" بلاڪ مليس سيڪنڊ يا مائڪرو سيڪنڊ دير جي لاء استعمال ڪيو ويندو آهي. هي بلاڪ سختي سان وقت جي وقفي کي برقرار رکي ٿو، سڄي ڊوائيس جي آپريشن کي بلاڪ ڪري ٿو.
"روڪ" بلاڪ سيڪنڊ (يا گهٽ) دير جي لاء استعمال ڪيو ويندو آهي، ۽ اهو ڊوائيس ۾ ٻين عملن جي عمل کي بلاڪ نٿو ڪري.
جيڪڏهن رسم الخط پاڻ ۾ هڪ لامحدود لوپ تي مشتمل آهي، جنهن جي جسم ۾ "روڪ" شامل ناهي، مترجم آزاد طور تي هڪ مختصر وقفو شروع ڪري ٿو.
جيڪڏهن مختص ڪيل ميموري اسٽيڪ ختم ٿي وئي آهي، مترجم اهڙي طاقت جي بکيو اسڪرپٽ تي عمل ڪرڻ بند ڪري ڇڏيندو (بار بار ڪم ڪرڻ سان محتاط رکو).
قدم 3: ڊيبگنگ اسڪرپٽ
هڪ اسڪرپٽ کي ڊيبگ ڪرڻ لاءِ جيڪو اڳ ۾ ئي ڊوائيس ۾ لوڊ ڪيو ويو آهي، توهان هلائي سگهو ٿا هڪ پروگرام ٽريس قدم قدم سان. اهو انتهائي مفيد ٿي سگهي ٿو جڏهن اسڪرپٽ جو رويو مختلف ٿي سگهي ٿو جيڪو ليکڪ جي ارادي کان مختلف آهي. انهي حالت ۾، ٽريڪنگ ليکڪ کي جلدي مسئلي جو ذريعو ڳولڻ ۽ اسڪرپٽ ۾ غلطي کي درست ڪرڻ جي اجازت ڏئي ٿو.
ڊيبگ موڊ ۾ فيڪٽري جي حساب ڪرڻ لاءِ منظر:
ڊيبگ ٽول تمام سادو آهي ۽ ٽن مکيه بٽڻن تي مشتمل آهي: "شروع"، "هڪ قدم اڳتي" ۽ "اسٽاپ" (اچو ته "داخل ڪريو" ۽ "ٻاهر" ڊيبگ موڊ بابت پڻ نه وساريو). قدم بہ قدم ٽريڪنگ کان علاوه، توھان ڪنھن بلاڪ تي بريڪ پوائنٽ مقرر ڪري سگھو ٿا (بلاڪ تي ڪلڪ ڪندي).
مانيٽر ۾ پيرا ميٽرز (سينسر، رلي) جي موجوده قدرن کي ڏيکارڻ لاء، "پرنٽ" بلاڪ استعمال ڪريو.
اهو آهي
شوقينن لاءِ سيڪشن. هود هيٺ ڇا آهي؟
اسڪرپٽس لاءِ ٽارگيٽ ڊيوائس تي ڪم ڪرڻ لاءِ، هڪ بائيٽ ڪوڊ مترجم ۽ 38 هدايتون سان گڏ گڏ ڪرڻ وارو ٺاهيو ويو. Blockly جي سورس ڪوڊ ۾ ھڪڙو خاص ڪوڊ جنريٽر آھي جيڪو ان ۾ ٺاھيو ويو آھي جيڪو بصري بلاڪ کي اسيمبلي جي هدايتن ۾ تبديل ڪري ٿو. تنهن کان پوء، هي گڏ ڪرڻ وارو پروگرام بائيٽ ڪوڊ ۾ تبديل ڪيو ويو آهي ۽ عمل لاء ڊوائيس ڏانهن منتقل ڪيو ويو آهي.
هن ورچوئل مشين جو فن تعمير بلڪل سادو آهي ۽ ان کي بيان ڪرڻ ۾ ڪو خاص نقطو نه آهي؛ انٽرنيٽ تي توهان کي آسان ترين ورچوئل مشين ٺاهڻ بابت ڪيترائي آرٽيڪل ملندا.
مان عام طور تي 1000 بائٽس مختص ڪريان ٿو منهنجي ورچوئل مشين جي اسٽيڪ لاءِ، جيڪا ڪافي آهي. يقينن، گہرے ورهاڱي ڪنهن به اسٽيڪ کي ختم ڪري سگهن ٿا، پر انهن جو ڪو به عملي استعمال ٿيڻ ممڪن ناهي.
نتيجو بائيٽ ڪوڊ ڪافي ٺھيل آھي. مثال طور، ساڳئي فيڪٽري جي حساب لاء بائيٽ ڪوڊ صرف 49 بائيٽ آهي. هي آهي ان جي بصري شڪل:
۽ هي آهي سندس گڏ ڪرڻ وارو پروگرام:
shift -1
ldi 10
call factorial, 1
print
exit
:factorial
ld_arg 0
ldi 1
gt
je 8
ld_arg 0
ld_arg 0
ldi 1
sub
call factorial, 1
mul
ret
ldi 1
ret
جيڪڏهن اسيمبليءَ جي نمائندگيءَ جو فارم ڪو به عملي قدر نه آهي، ته پوءِ ”جاواسڪرٽ“ ٽئب، ان جي ابتڙ، بصري بلاڪن کان وڌيڪ واقف نظر اچي ٿو:
function factorial(num) {
if (num > 1) {
return num + factorial(num - 1);
}
return 1;
}
window.alert(factorial(10));
ڪارڪردگي جي حوالي سان. جڏهن مون سڀ کان آسان فلاسر اسڪرپٽ هلائي، مون کي آسيلو اسڪوپ اسڪرين تي 47 ڪلو هرٽز اسڪوائر ويج ملي (80 ميگا هرٽز جي پروسيسر ڪلاڪ جي رفتار تي).
منهنجو خيال آهي ته اهو سٺو نتيجو آهي، گهٽ ۾ گهٽ هن رفتار جي ڀيٽ ۾ تقريبا ڏهه ڀيرا تيز آهي
حتمي حصو
اختصار ڪرڻ لاء، مان چوان ٿو ته اسڪرپٽ جو استعمال اسان کي نه رڳو هڪ الڳ ڊوائيس جي آپريشن جي منطق کي پروگرام ڪرڻ جي اجازت ڏئي ٿو، پر اهو پڻ ممڪن آهي ته ڪيترن ئي ڊوائيسز کي هڪ ميکانيزم ۾ ڳنڍڻ، جتي ڪجهه ڊوائيس ٻين جي رويي تي اثر انداز ڪن ٿا.
مان اهو پڻ نوٽ ڪريان ٿو ته اسڪرپٽ کي محفوظ ڪرڻ جو چونڊيو طريقو (سڌو پاڻ ۾ ڊوائيسز ۾، ۽ نه سرور تي) اڳ ۾ ئي ڪم ڪندڙ ڊوائيسز کي ٻئي سرور ڏانهن تبديل ڪرڻ کي آسان بڻائي ٿو، مثال طور هڪ گهر راسبي، هتي.
بس، مون کي صلاح ۽ تعميري تنقيد ٻڌي خوشي ٿيندي.
جو ذريعو: www.habr.com