সিরিয়াল.ওরাইট এবং সিরিয়াল.প্রিন্টের মধ্যে পার্থক্য কী? এবং তারা কখন ব্যবহার করা হয়?
উভয়ই সিরিয়াল মনিটরে মুদ্রণ করতে ব্যবহৃত হয়েছে, তাদের আসল পার্থক্যগুলি কী?
সিরিয়াল.ওরাইট এবং সিরিয়াল.প্রিন্টের মধ্যে পার্থক্য কী? এবং তারা কখন ব্যবহার করা হয়?
উভয়ই সিরিয়াল মনিটরে মুদ্রণ করতে ব্যবহৃত হয়েছে, তাদের আসল পার্থক্যগুলি কী?
উত্তর:
সিরিয়াল.ওরাইট এবং সিরিয়াল.প্রিন্টের জন্য আরডুইনো সাইট থেকে :
Serial.write ()
সিরিয়াল পোর্টে বাইনারি ডেটা লিখে। এই ডেটা বাইট বা সিরিজের বাইট হিসাবে প্রেরণ করা হয়; কোনও সংখ্যার অঙ্কের প্রতিনিধিত্বকারী অক্ষরগুলি প্রিন্ট () ফাংশনটি ব্যবহার করুন।
Serial.print ()
মানব পাঠযোগ্য ASCII পাঠ্য হিসাবে সিরিয়াল পোর্টে ডেটা মুদ্রণ করে।
সিরিয়াল.ওরাইটটি পৃথিবীতে আরও নিচে, এটি সহজ এবং দ্রুত, এটি বাইনারি, একবারে এক বাইটে কথা বলা হয়। উদাহরণ:
Serial.write(0x45); // will write 0100 0101 to the cable
অন্যদিকে সিরিয়াল.প্রিন্ট আরও বহুমুখী, এটি আপনার পক্ষে এএসসিআইআই থেকে বাইনারি রূপান্তর করতে পারে, এটি বিআইএন / এইচএক্স / ওসিটি / ডিইসি তে রূপান্তর করতে পারে তবে আপনাকে এই জাতীয় দ্বিতীয় যুক্তি নির্দিষ্ট করতে হবে
Serial.print(76, BIN) gives "0100 1100"
Serial.print(76, OCT) gives "114"
Serial.print("L", DEC) gives "76"
Serial.print(76, HEX) gives "4C"
ভিজ্যুয়াল সিরিয়াল আউটপুট সহ আরও উদাহরণ:
কোড:
Serial.write(0x48); // H
Serial.write(0x45); // E
Serial.write(0x4C); // L
Serial.write(0x4C); // L
Serial.write(0x4F); // O
কোড:
Serial.print("HELLO");
অন্যদিকে সিরিয়াল.প্রিন্টলন (ফ্রেম) দেখতে পাওয়ায় লাইন 2 বাইট 0x0D এবং 0x0A এর প্রান্ত যুক্ত করবে
কোড:
Serial.println("HELLO");
সিরিয়াল আউটপুট:
Serial.write
Serial.print
ASCII অক্ষর প্রেরণের সময় সিরিয়াল বন্দরে বাইটগুলি প্রেরণ করে যাতে লোকেরা সহজেই পড়তে পারে।
কিছু ডিভাইস কনফিগারেশন সেট করতে বাইট ব্যবহার করে কাজ করে, সাধারণত ডেটার প্যাকেট ব্যবহার করে এবং তাদের সাথে যোগাযোগের জন্য আপনাকে লিখন ফাংশনটি ব্যবহার করতে হবে। শেষ পর্যন্ত তারা সিরিয়াল ইন্টারফেসের মাধ্যমে বাইটগুলি প্রেরণ করবে এবং তারপরে আপনি প্রতিটি বাইটে গিয়ে ব্যাখ্যা করতে পারবেন।
উপরের সমস্ত উদাহরণ সঠিক, তবে সম্ভবত আরও স্পষ্টভাবে .... সিরিয়াল বন্দর দিয়ে পাঠানো সমস্ত ডেটা 1 এবং 0 এর হিসাবে প্রেরণ করা হয়। (স্পষ্ট .... আমি আশা করি) ... দুটি আদেশের মধ্যে পার্থক্য হল যা কিছু পাঠানো হচ্ছে আসলে কীভাবে এই 1 এবং 0 এর থেকে অনুবাদ করা / ব্যাখ্যা করা হয়। স্পষ্ট উদাহরণ উদাহরণ সংক্রমণ জড়িত।
ধরা যাক আপনাকে 217 নম্বরটি প্রেরণ করতে Serial.write(217)
হবে this এই সংখ্যাটির বাইনারি (1 এবং 0 এর) উপস্থাপনাটি 11011001 the একই সংখ্যার হেক্স উপস্থাপনা 0xD9, এবং কমান্ড Serial.write(0xD9)
একই জিনিস প্রেরণ করবে ... 11011001।
এটি এখানে আকর্ষণীয় হয়ে উঠেছে এখানে ... আপনি যদি আদেশটি ব্যবহার করেন তবে Serial.write("217")
আপনি এটির পরিবর্তে এটি পাবেন: 00110010 00110001 00110111 ... কী?!?!?
যুক্তি হিসাবে স্ট্রিংটি পাস করার পরে এটি পৃথক অক্ষরে বিভক্ত হয়ে ASCII এ রূপান্তরিত হয় এবং তারপরে প্রতিটি চরিত্রের জন্য বাইট হিসাবে প্রেরণ করা হয়। আপনি নিম্নলিখিতটি ব্যবহার করতে পারলে আপনি ঠিক একই আউটপুট পাবেন:
Serial.write(50);
Serial.write(51);
Serial.write(55);
(00110010 00110001 00110111)
এখন দেখা যাক Serial.print()
। কমান্ডগুলি Serial.print(217)
বা Serial.print("217")
উভয়ই একই জিনিস মুদ্রণ করবে: 00110010 00110001 00110111. এটি কারণ মুদ্রণ কমান্ডটি প্রথমে যে কোনও সংখ্যাকে একটি স্ট্রিং উপস্থাপনায় রূপান্তর করে এবং তারপরে Serial.write()
প্রতিটি অক্ষরকে পৃথক ASCII বিট হিসাবে প্রেরণ করতে কমান্ডটি ব্যবহার করে ।
যদিও এটি একটি সম্পূর্ণ বিবরণ নয়, আমি আশা করি এটি আপনাকে সঠিক দিকে চিন্তা করতে সহায়তা করবে ...
এর উত্তর দেওয়ার আরেকটি উপায় হ'ল সিরিয়াল.উইরাটি এমন একক অক্ষর গ্রহণ করে যেখানে সিরিয়াল.প্রিন্ট স্ট্রিং গ্রহণ করে। কিছু পার্থক্য থাকতে পারে তবে এটিই মূল।