সুবিধার জন্য সেটআপ এবং লুপ সরবরাহ করা হয়?


13

আরডুইনো স্কেচগুলি সাধারণত একটি setupএবং loopফাংশন বৈশিষ্ট্যযুক্ত । এই ফাংশনগুলি কি কেবল সুবিধার জন্য সরবরাহ করা হয়েছে বা তাদের আসলে বিশেষ উদ্দেশ্য রয়েছে? (যেমন: সেটআপ এবং লুপে কিছু অপারেশন অনুমোদিত নয় বা অনুমোদিত)

এই দুইটি কোডের সমতুল্য:

সর্বোত্তম

void setup() {
    pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
    digitalWrite(LED_BUILTIN, HIGH);
    delay(1000);
    digitalWrite(LED_BUILTIN, LOW);
    delay(1000);
}

লুপ ছাড়াই

void setup() {
    pinMode(LED_BUILTIN, OUTPUT);

    while(true) {
        digitalWrite(LED_BUILTIN, HIGH);
        delay(1000);
        digitalWrite(LED_BUILTIN, LOW);
        delay(1000);
    }
}


void loop() {
}

সেটআপ বা লুপ ছাড়াই কোড লেখা সম্ভব, উদাহরণস্বরূপ, কোনও mainপদ্ধতি বা অন্য প্রবেশের বিন্দু সরবরাহ করা?

উত্তর:


10

এই কোডগুলির টুকরাগুলি অনেকগুলি একই।

আপনি যদি আরডুইনো উত্স কোডটি দেখেন তবে আপনি দেখতে পাবেন:

setup();

for (;;) {
  loop();
  if (serialEventRun) serialEventRun();
}

(আমি নিশ্চিত না যে কী serialEventRun()করে))

আমি মনে করি না আপনি mainফাংশন ঘোষণাকে 'ওভারলোড' করতে পারেন । এছাড়াও লক্ষ করুন যে মূল ফাংশন কলগুলি init, যেমন উদাহরণস্বরূপ টাইমারগুলি কনফিগার করে, millis()ইত্যাদি কাজ করবে।


9

এই ফাংশনগুলি কি কেবল সুবিধার জন্য সরবরাহ করা হয়েছে বা তাদের আসলে বিশেষ উদ্দেশ্য রয়েছে?

আরডুইনো লাইব্রেরিগুলি সিরিয়াল হ্যান্ডলিংloop() সম্পর্কিত একটি ছোট্ট গৃহস্থালি সংরক্ষণ করে ।

এই দুইটি কোডের সমতুল্য:

কেবলমাত্র যদি আপনি সিরিয়াল ইভেন্টগুলি ব্যবহার না করেন।

সেটআপ বা লুপ ছাড়াই কোড লেখা সম্ভব, উদাহরণস্বরূপ, একটি প্রধান পদ্ধতি বা অন্যান্য প্রবেশের বিন্দু?

আইডিইর মাধ্যমে আরডুইনো লাইব্রেরিগুলি কঠোরভাবে ব্যবহার করার সময় নয়; লিঙ্কারটি নকল mainসংজ্ঞা বা অনুপস্থিত setupবা loopসংজ্ঞাগুলির অভিযোগ করবে ।


2

সেটআপ বা লুপ ছাড়াই কোড লেখা সম্ভব, উদাহরণস্বরূপ, একটি প্রধান পদ্ধতি বা অন্যান্য প্রবেশের বিন্দু?

আমি যখন শেষবার আইডিই ব্যবহার করেছি তখন আপনার কোনও ফাইল .ino/ .pdeফাইল নেই, কেবল .cppফাইল থাকতে পারে; যেহেতু এটি mangling এর .inoএকটি মধ্যে .cppসংজ্ঞায়িত যে mainফাংশন, যদি আপনি যে পদক্ষেপ বাইপাস তারপর আপনি আপনার নিজের বর্ণনা করতে পারেন main

আইডিই যদি আর এটির অনুমতি না দেয় (যেমনটি আমি শুনেছি) তবে আপনি এখনও আরডুইনো লাইব্রেরিগুলি ছাড়াই আইডিইর বাইরে মেকফাইল-ভিত্তিক বিল্ড দিয়ে একই জিনিসটি করতে পারেন। আমি যে সতর্কতাগুলি জানি সেগুলি হ'ল:

  • আপনি #include "Arduino.h"যদি লাইব্রেরির ফাংশনগুলিতে অ্যাক্সেস চান তবে আপনার উচিত ।
  • আপনি init()যদি লাইব্রেরিটি ব্যবহার করতে চান তবে পেরিফেরালগুলি সেট আপ করতে চাইলে আপনার কল করা উচিত ।
  • আপনি serialEventযদি কোনও serialEventহ্যান্ডলার চালনার জন্য চান তবে গারবেন আপনার মেইনলুপে যে কোডটি দেখিয়েছে তা অবশ্যই আপনার করা উচিত (তবে আপনি নিজের মেইনলুপ লিখতে চাইলে আপনার সম্ভবত এটির প্রয়োজন নেই)।

1

আরডুইনো স্কেচগুলি সাধারণত একটি সেটআপ এবং লুপ ফাংশন বৈশিষ্ট্যযুক্ত। এই ফাংশনগুলি কি কেবল সুবিধার জন্য সরবরাহ করা হয়েছে বা তাদের আসলে বিশেষ উদ্দেশ্য রয়েছে?

তারা একটি অতিরিক্ত ফাংশন কল করার জন্য নিক্ষেপ initযা টাইমার যা দিন সূচনা millis, microsএবং delayআরও প্রচেষ্টা ছাড়া হবে। তা ছাড়া আর না।

এই কোডটি আইডিই এর অধীনে সংকলন করে (এবং রান করে):

int main ()
  {
  }

কার্যকরভাবে আইডিই এই জাতীয় কোড উত্পন্ন করে:

int main ()
  {
  init ();  // set up timers
  setup (); // your own initialization
  while (true)
    loop ();  // stuff you want to keep doing
  }

ইগনাসিও ওয়াজকেজ-আব্রামস যেমন বলেছিল, তারা তখন থেকেই এটির সাথে ঝাঁকুনি দিয়েছে, তবে মূলত আপনি এটিকে উপেক্ষা করতে পারেন। সম্পর্কে বিশেষ করে বিশেষ কিছুই নেই setupএবং loop

mainআমি উপরে দেখানো মত আপনি ব্যবহার করতে পারেন । আপনি চাইলে সবকিছু setupকরতে পারেন। আপনি চাইলে আপনি সবকিছু loopকরতে পারেন (যদি আপনি এটি থেকে ফিরে না আসেন)।

মনে রাখবেন, আপনি এখানে একটি সি ++ সংকলক নিয়ে কাজ করছেন। তাদের নামের উপর ভিত্তি করে কার্যগুলির কোনও জাদু তাত্পর্য নেই।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.