আমি আরডুইনো কোডটি কীভাবে পরীক্ষা করতে পারি?


185

আমি আমার আরডিনো কোডটি পরীক্ষা করতে সক্ষম হতে চাই। আদর্শভাবে, আমি আরডুইনোতে কোড আপলোড না করেই কোনও পরীক্ষা চালাতে সক্ষম হব। কোন সরঞ্জাম বা লাইব্রেরি আমাকে এতে সহায়তা করতে পারে?

বিকাশে একটি আরডুইনো এমুলেটর রয়েছে যা কার্যকর হতে পারে তবে এটি এখনও ব্যবহারের জন্য প্রস্তুত বলে মনে হচ্ছে না।

এটমেলের এভিআর স্টুডিওতে একটি চিপ সিমুলেটর রয়েছে যা দরকারী হতে পারে তবে আমি এটি আরডুইনো আইডিইয়ের সাথে মিলিয়ে কীভাবে ব্যবহার করব তা দেখতে পাচ্ছি না।


এই প্রশ্নের উপর আর একটি থ্রেড রয়েছে ২০১১ সাল থেকে আরডুইনো.সি.সি
জাকব

ধন্যবাদ @ যাকব একটি আড়ুইনো সিমুলেটর সেই থ্রেডে উল্লেখ করা হয়েছে (পৃষ্ঠার নীচে অন্যান্য সম্ভাব্য দরকারী লিঙ্কগুলির সাথে): arduino.com.au/Simulator- for- আরডুইনো html
ম্যাথিউ মুরডোক

5
দুর্ভাগ্যক্রমে এটি শুধুমাত্র উইন্ডোজের জন্য, আমি কোনও বদ্ধ উত্স বা হার্ডওয়্যার নির্ভরতা ছাড়াই কমান্ড লাইন থেকে আরডুইনো কোডটি সহজভাবে সংকলন ও চালনার উপায় দেখতে চাই।
Jakob

3
একটি সামান্য আপডেট, 5 বছর পরে: সিমাভর এখনও অনেক বেশি সক্রিয় এবং প্রশ্নটি জিজ্ঞাসা করার পর থেকে অনেক উন্নতি হয়েছে, তাই আমি ভেবেছিলাম এটি শীর্ষের কাছাকাছি ধাক্কা দেওয়ার দাবিদার। এবং এটি রিগ্রেশন টেস্টিং, পরিস্থিতি ভিত্তিক পরীক্ষা এবং কেন ইউনিট পরীক্ষার জন্য সঠিক সরঞ্জাম হতে পারে। এই ভাবে আপনি যে কোডটি পরীক্ষা একই লক্ষ্য হার্ডওয়্যারে এক হিসাবে।
zmo

গুরুত্বপূর্ণ প্রকল্পগুলির জন্য, একটি হার্ডওয়্যার পরীক্ষক বিবেচনা করুন; সময় এবং পরীক্ষার বোতাম / স্যুইচ প্রতিক্রিয়া, বুট টাইম, টেম্প, ভি / মা ব্যবহার, অদ্ভুত বিকল্পের অনুমতি ইত্যাদির চেয়ে আরও একটি এমসিইউ হ্যাঁ, এটি তৈরি করা আরও বেশি হার্ডওয়ার, তবে এটি পুনর্বিবেচনার ক্ষেত্রে সুরক্ষা স্তর যুক্ত করতে পারে। প্রো প্রো ডিভাইসগুলির অনেকগুলি জেট্যাগ এট আল ব্যবহার করে।
ডান্ডাভিস

উত্তর:


136

আরডুইনো ডিভাইস বা এমুলেটরটিতে ইউনিট টেস্টগুলি চালাবেন না

মাইক্রোকন্ট্রোলার ডিভাইস / এমুলেটর / সিম ভিত্তিক পরীক্ষার বিরুদ্ধে মামলা

ইউনিট পরীক্ষার অর্থ কী তা নিয়ে প্রচুর আলোচনা রয়েছে এবং আমি এখানে সে সম্পর্কে কোনও যুক্তি দেওয়ার চেষ্টা করছি না। এই পোস্টটি আপনাকে আপনার চূড়ান্ত টার্গেটের হার্ডওয়ারের সমস্ত ব্যবহারিক পরীক্ষার এড়াতে বলছে না । আমি আপনার সবচেয়ে গুরুত্বপূর্ণ এবং ঘন ঘন পরীক্ষাগুলি থেকে আপনার টার্গেট হার্ডওয়্যারটি সরিয়ে আপনার বিকাশের প্রতিক্রিয়া চক্রটি অনুকূল করার বিষয়ে একটি বিষয় বলার চেষ্টা করছি। পরীক্ষার অধীনে থাকা ইউনিটগুলি পুরো প্রকল্পের তুলনায় অনেক ছোট বলে ধরে নেওয়া হয়।

ইউনিট পরীক্ষার উদ্দেশ্যটি হল আপনার নিজের কোডের মান পরীক্ষা করা। ইউনিট পরীক্ষাগুলি সাধারণত কখনই আপনার নিয়ন্ত্রণের বাইরে কারণগুলির কার্যকারিতা পরীক্ষা করে না।

এটি এইভাবে চিন্তা করুন: এমনকি আপনি যদি আরডিনো গ্রন্থাগার, মাইক্রোকন্ট্রোলার হার্ডওয়্যার বা একটি এমুলেটর কার্যকারিতা পরীক্ষা করে দেখেন তবে এই জাতীয় পরীক্ষার ফলাফলগুলির জন্য আপনার নিজের কাজের গুণমান সম্পর্কে আপনাকে কিছু বলা একেবারেই অসম্ভব । সুতরাং, টার্গেট ডিভাইস (বা এমুলেটর) না চালিত ইউনিট পরীক্ষা লিখতে এটি অনেক বেশি মূল্যবান এবং দক্ষ।

আপনার টার্গেট হার্ডওয়্যার উপর ঘন ঘন পরীক্ষার একটি বেদনাদায়ক ধীর চক্র থাকে:

  1. আপনার কোডটি টুইঙ্ক করুন
  2. আরডুইনো ডিভাইসে সংকলন এবং আপলোড করুন
  3. আচরণটি পর্যবেক্ষণ করুন এবং অনুমান করুন যে আপনার কোডটি আপনি যা প্রত্যাশা করছেন তা করছে কিনা
  4. পুনরাবৃত্তি

ধাপ 3 বিশেষত বাজে যদি আপনি সিরিয়াল পোর্টের মাধ্যমে ডায়াগনস্টিক বার্তাগুলি পাওয়ার আশা করেন তবে আপনার প্রকল্পে আপনার নিজের আরডুইনোর একমাত্র হার্ডওয়্যার সিরিয়াল পোর্ট ব্যবহার করা দরকার। আপনি যদি ভাবছিলেন যে সফটওয়্যারশিয়ার লাইব্রেরি সাহায্য করতে পারে তবে আপনার জানা উচিত যে এটি করার ফলে একই সাথে অন্যান্য সংকেত উত্পন্ন করার মতো সঠিক সময় প্রয়োজন এমন কোনও কার্যকারিতা ব্যাহত হতে পারে। এই সমস্যাটি আমার কাছে ঘটেছে।

আবার, যদি আপনি কোনও এমুলেটর ব্যবহার করে আপনার স্কেচটি পরীক্ষা করে দেখেন এবং আপনার সময়-সমালোচনামূলক রুটিনগুলি আপনি সত্যিকারের আরডিনোতে আপলোড না করা পর্যন্ত পুরোপুরি দৌড়াদৌড়ি করেন তবে আপনি যে শিখতে চলেছেন তা হ'ল এমুলেটরটি ত্রুটিযুক্ত - এবং এটি এখনও জেনে রাখা আপনার নিজের কাজের গুণমান সম্পর্কে কিছুই প্রকাশ করে না

ডিভাইস বা এমুলেটর পরীক্ষা করার জন্য এটি নির্বোধ যদি হয় তবে আমার কী করা উচিত ?

আপনি সম্ভবত আপনার আরডিনো প্রকল্পে কাজ করার জন্য একটি কম্পিউটার ব্যবহার করছেন। সেই কম্পিউটারটি মাইক্রোকন্ট্রোলারের চেয়ে দ্রুতগতির অর্ডার। আপনার কম্পিউটারে তৈরি এবং চালনার জন্য পরীক্ষাগুলি লিখুন ।

মনে রাখবেন, আরডুইনো গ্রন্থাগার এবং মাইক্রোকন্ট্রোলারের আচরণটি সঠিক বা কমপক্ষে ধারাবাহিকভাবে ভুল বলে ধরে নেওয়া উচিত ।

যখন আপনার পরীক্ষাগুলি আপনার প্রত্যাশার বিপরীতে আউটপুট উত্পন্ন করে, তখন সম্ভবত আপনার কোডটিতে পরীক্ষা করা হয়েছিল। যদি আপনার পরীক্ষার আউটপুট আপনার প্রত্যাশার সাথে মিলে যায়, তবে আপনি যখন এটি আরডিনোতে আপলোড করেন তখন প্রোগ্রামটি সঠিকভাবে আচরণ করে না, তবে আপনি জানেন যে আপনার পরীক্ষাগুলি ভুল অনুমানের উপর ভিত্তি করে হয়েছিল এবং আপনার সম্ভবত একটি ত্রুটিযুক্ত পরীক্ষা রয়েছে। উভয় ক্ষেত্রেই, আপনার পরবর্তী কোড পরিবর্তনগুলি কী হওয়া উচিত সে সম্পর্কে আপনাকে প্রকৃত অন্তর্দৃষ্টি দেওয়া হবে। আপনার প্রতিক্রিয়া মান থেকে "উন্নত হয় কিছু নষ্ট হয়ে গেছে" এ "এই নির্দিষ্ট কোড নষ্ট হয়ে গেছে"

আপনার পিসিতে টেস্টগুলি কীভাবে তৈরি এবং পরিচালনা করবেন

প্রথম জিনিস আপনি কি করতে প্রয়োজন আপনার টেস্টিং গোল চিহ্নিতআপনার নিজের কোডের কোন অংশটি আপনি পরীক্ষা করতে চান সে সম্পর্কে চিন্তা করুন এবং তারপরে আপনার প্রোগ্রামটি এমনভাবে তৈরি করা নিশ্চিত করুন যাতে আপনি পরীক্ষার জন্য পৃথক অংশগুলি বিচ্ছিন্ন করতে পারেন ।

আপনি যে অংশগুলি পরীক্ষা করতে চান সেগুলি যদি কোনও আরডিনো ফাংশনকে কল করে তবে আপনার পরীক্ষা প্রোগ্রামে আপনাকে মক-আপ প্রতিস্থাপন সরবরাহ করতে হবে। এটি মনে হয় তুলনায় অনেক কম কাজ। আপনার মক আপগুলি আপনার পরীক্ষাগুলির জন্য অনুমানযোগ্য ইনপুট এবং আউটপুট সরবরাহ করা ছাড়া আসলে কিছুই করতে হবে না।

আপনি যে নিজের কোডটি পরীক্ষা করতে চান তার কোনও একটিতে .pde স্কেচ ব্যতীত উত্স ফাইলগুলিতে থাকা দরকার। চিন্তা করবেন না, আপনার স্কেচটি স্কেচের বাইরে কিছু উত্স কোড সহ এখনও সংকলন করবে। আপনি যখন সত্যিই এতে নামবেন, আপনার প্রোগ্রামের সাধারণ প্রবেশ প্রবেশ বিন্দুর চেয়ে সামান্য বেশি স্কেচ ফাইলে সংজ্ঞায়িত করা উচিত।

যা যা অবশিষ্ট রয়েছে তা হ'ল আসল পরীক্ষাগুলি লিখতে এবং তারপরে এটি আপনার প্রিয় সি ++ সংকলক ব্যবহার করে সংকলন করে! এটি সম্ভবত একটি বাস্তব বিশ্বের উদাহরণ দিয়ে সবচেয়ে ভাল চিত্রিত হয়েছে।

একটি বাস্তব কাজের উদাহরণ

এখানে পাওয়া আমার পোষা প্রাণীর একটি প্রকল্পের কিছু সাধারণ পরীক্ষা রয়েছে যা পিসিতে চালিত হয়। এই উত্তর জমা দেওয়ার জন্য, আমি ঠিক কীভাবে আমি আরডিনো গ্রন্থাগার ফাংশনগুলির কয়েকটি এবং যেগুলি মক আপগুলি পরীক্ষা করার জন্য লিখেছিলাম সেগুলি উপহাস করব over এটি অন্য লোকের কোড পরীক্ষা না করার বিষয়ে আমি আগে যা বলেছিলাম তার বিপরীতে নয় কারণ মক-আপগুলি আমিই লিখেছিলাম। আমি খুব নিশ্চিত হতে চেয়েছিলাম যে আমার উপহাসগুলি সঠিক ছিল।

Mock_arduino.cpp এর উত্স, এতে এমন কোড রয়েছে যা আরডুইনো লাইব্রেরি দ্বারা সরবরাহিত কিছু সমর্থন কার্যকারিতাটিকে নকল করে:

#include <sys/timeb.h>
#include "mock_arduino.h"

timeb t_start;
unsigned long millis() {
  timeb t_now;
  ftime(&t_now);
  return (t_now.time  - t_start.time) * 1000 + (t_now.millitm - t_start.millitm);
}

void delay( unsigned long ms ) {
  unsigned long start = millis();
  while(millis() - start < ms){}
}

void initialize_mock_arduino() {
  ftime(&t_start);
}

আমার কোডটি হার্ডওয়্যার সিরিয়াল ডিভাইসে বাইনারি ডেটা লিখলে আমি পঠনযোগ্য আউটপুট তৈরি করতে নিম্নলিখিত মক-আপ ব্যবহার করি।

fake_serial.h

#include <iostream>

class FakeSerial {
public:
  void begin(unsigned long);
  void end();
  size_t write(const unsigned char*, size_t);
};

extern FakeSerial Serial;

fake_serial.cpp

#include <cstring>
#include <iostream>
#include <iomanip>

#include "fake_serial.h"

void FakeSerial::begin(unsigned long speed) {
  return;
}

void FakeSerial::end() {
  return;
}

size_t FakeSerial::write( const unsigned char buf[], size_t size ) {
  using namespace std;
  ios_base::fmtflags oldFlags = cout.flags();
  streamsize oldPrec = cout.precision();
  char oldFill = cout.fill();

  cout << "Serial::write: ";
  cout << internal << setfill('0');

  for( unsigned int i = 0; i < size; i++ ){
    cout << setw(2) << hex << (unsigned int)buf[i] << " ";
  }
  cout << endl;

  cout.flags(oldFlags);
  cout.precision(oldPrec);
  cout.fill(oldFill);

  return size;
}

FakeSerial Serial;

এবং পরিশেষে, আসল পরীক্ষা প্রোগ্রাম:

#include "mock_arduino.h"

using namespace std;

void millis_test() {
  unsigned long start = millis();
  cout << "millis() test start: " << start << endl;
  while( millis() - start < 10000 ) {
    cout << millis() << endl;
    sleep(1);
  }
  unsigned long end = millis();
  cout << "End of test - duration: " << end - start << "ms" << endl;
}

void delay_test() {
  unsigned long start = millis();
  cout << "delay() test start: " << start << endl;
  while( millis() - start < 10000 ) {
    cout << millis() << endl;
    delay(250);
  }
  unsigned long end = millis();
  cout << "End of test - duration: " << end - start << "ms" << endl;
}

void run_tests() {
  millis_test();
  delay_test();
}

int main(int argc, char **argv){
  initialize_mock_arduino();
  run_tests();
}

এই পোস্টটি যথেষ্ট দীর্ঘ, সুতরাং আরও কিছু পরীক্ষার কেস কার্যত দেখতে দয়া করে গিটহাবের আমার প্রকল্পটি দেখুন। আমি মাস্টার ব্যতীত অন্য শাখাগুলিতে আমার কার্য-অগ্রগতি রেখেছি, সুতরাং অতিরিক্ত পরীক্ষার জন্য সেই শাখাগুলিও চেক করুন।

আমি আমার নিজের লাইটওয়েট পরীক্ষার রুটিনগুলি লিখতে পছন্দ করেছি, তবে সিপিউউনিটের মতো আরও শক্তিশালী ইউনিট-পরীক্ষা ফ্রেমওয়ার্কগুলিও উপলব্ধ।


1
এটি একটি দুর্দান্ত উত্তর! ধন্যবাদ!
জোনাথন আর্কেল

5
@ ওয়ারেনম্যাকএভয় আবার, আমার মনে হয় আপনি আমার পরামর্শ নিয়েছেন এবং এটিকে এমন কিছু করেছেন যা এটি নয় is আপনার কোডটি অবশ্যই তার বাস্তব পরিবেশে কিছু পয়েন্টে পরীক্ষা করা উচিত। আমার যুক্তিটি হ'ল আপনার প্রতিদিন এমনটি করা উচিত নয় এবং অবশ্যই আপনি এটিকে ইউনিট পরীক্ষা বলবেন না।
আয়রন ত্রাণকর্তা

1
@ টোস্টেড_ফ্লেকস আমি নিশ্চিত নই আপনি কোথায় সেই উক্তিটি পেয়েছেন, তবে এটি আমি বলেছি কিছু নয়। ডিভাইসে চলমান ইউনিট পরীক্ষাগুলিতে প্রচুর সমস্যা রয়েছে - খুব ধীর ফিডব্যাক লুপ, আপনার টার্গেট ডিভাইসটি ছাড়ানোর জন্য আপনার কাছে কোনও সিরিয়াল বন্দর বা আইওর অন্য কোনও উপায় নাও থাকতে পারে এবং তাদের খুব সীমিত ক্ষমতা রয়েছে যা এর স্কোপকে প্রভাবিত করতে পারে আপনার পরীক্ষা স্যুট।
আয়রন ত্রাণকর্তা

1
@ খ্রিস্টিয়ানহুজার আপনার অবশ্যই সত্যিকারের হার্ডওয়্যার পরীক্ষা করা উচিত - কেউই বলছেন না যে আপনি কখনই টার্গেটের হার্ডওয়ারে পরীক্ষা না করা উচিত। আমার পোস্টটি আপনার বিকাশের মেশিনে ইউনিট পরীক্ষার মাধ্যমে আপনার প্রাত্যহিক বিকাশের প্রতিক্রিয়া চক্রটি শক্ত করার বিষয়ে। আপনার টেস্টিং ওভারহেড এইভাবে হ্রাস করা হয়েছে কারণ এটি যখন প্রয়োজন হয় তখনই আপনি কেবল আপনার টার্গেট হার্ডওয়্যারটিতে পরীক্ষা করে দেখবেন।
আয়রন ত্রাণকর্তা

1
@ বেঞ্জহান আরডিনো স্কেচ উত্স ফাইলগুলি সি ++ থাকা সত্ত্বেও "পিডিই" এক্সটেনশান ব্যবহার করত। arduino.cc/en/Guide/En পরিবেশ #toc1
আয়রন ত্রাণকর্তা

63

আরডুইনোর জন্য কোনও পূর্ব-বিদ্যমান ইউনিট পরীক্ষার কাঠামোর অভাবে আমি আরডুইনোউনিত তৈরি করেছি । এটির একটি সহজ আরডিনো স্কেচ এর ব্যবহারটি প্রদর্শন করছে:

#include <ArduinoUnit.h>

// Create test suite
TestSuite suite;

void setup() {
    Serial.begin(9600);    
}

// Create a test called 'addition' in the test suite
test(addition) {
    assertEquals(3, 1 + 2);
}

void loop() {
    // Run test suite, printing results to the serial port
    suite.run();
}

18
পরীক্ষাগুলি কেবল আরডুইনোতে চলতে পারে বলে মনে হয় তাই আপনি নিজের বিকাশ মেশিনে এগুলি স্বয়ংক্রিয়ভাবে কার্যকর করতে পারবেন না। ইউনিট পরীক্ষার মূল ধারণাটি সেগুলি স্বয়ংক্রিয়ভাবে চালানো হয়, সুতরাং বর্তমান নকশাটি একটি ডিবাগিং সরঞ্জাম বলে মনে হয় তবে বাস্তব ইউনিট পরীক্ষার কাঠামো নেই।
যাকোব

1
তুমি ঠিক বলছো. এগুলি একটি পিসিতে চালাতে সক্ষম হতে পারে, তবে একটি আরডিনো বা এভিআর এমুলেটর প্রয়োজন। আরডুইনো লাইব্রেরিগুলিতে (এই মুহুর্তে) এবং এভিআর অনুকরণকারীগুলির কোনও বাস্তব হার্ডওয়্যার বিমূর্তকরণ স্তর নেই যখন আমি দেখলাম সমস্তগুলি এখনও বিকাশে রয়েছে। যদি বিষয়গুলি এখনই এগিয়ে চলেছে তবে নীতিগতভাবে এটি করা যেতে পারে।
ম্যাথু মারডোক

12
@ ম্যাথেজ মুরডোচ আমি ভয় করি যে আপনি ভুল করেছেন। সংজ্ঞা অনুসারে, ইউনিট পরীক্ষাগুলি কখনই লক্ষ্য পরিবেশে চালিত হয় না । প্রকৃতপক্ষে, ইউনিট পরীক্ষার পিছনে খুব ধারণাটি হ'ল পরিবেশের পরীক্ষা থেকে সম্পূর্ণ অপসারণ করা। তারা সর্বদা একটি পরীক্ষাগারের মতো পরিবেশে চালিত হয় যা পরীক্ষিত ইউনিটের বাহ্যিক সমস্ত ক্রিয়াকলাপকে ঠাট্টা করে তোলে যাতে পরীক্ষার সাফল্য বা ব্যর্থতা কেবলমাত্র পরীক্ষার অধীনে থাকা ইউনিটেই প্রতিফলিত হয় তা নিশ্চিত করে। জটিল প্রকল্পগুলিতে লোকেরা ইনভার্সন অফ কন্ট্রোলের ধারণাটি ব্যবহার করে এটি অন্যতম বড় কারণ।
আয়রন ত্রাণকর্তা

2
@ marcv81 যে অঞ্চলগুলিতে এই ধরনের বহনযোগ্যতার সমস্যা রয়েছে সেগুলি ইউনিট পরীক্ষার জন্য খুব খারাপ বিষয় হতে পারে। মনে রাখবেন যে ইউনিট পরীক্ষাগুলি কেবল আপনার কোড পরীক্ষা করতে হবে, সুতরাং সেই অনুযায়ী তাদের সুযোগ সীমিত করুন। আমরা এখানে যে হার্ডওয়ারের কথা বলছি তার মধ্যে বিশাল বৈষম্যের সাথে আমি গ্রহণ করতে পারি যে এরকম কিছু পরিস্থিতি অনিবার্য হতে পারে। এই ক্ষেত্রে, একজন ইঞ্জিনিয়ারকে সচেতন থাকতে হবে এবং প্রশমিতকরণ পদক্ষেপ নেওয়া উচিত। এর অর্থ পরীক্ষারযোগ্যতা বা কেবল প্রাসঙ্গিক তথ্যাদি ডকুমেন্ট করার মতো সাধারণ কিছু উন্নত করার জন্য আপনার নকশাকে পরিবর্তন করা যেতে পারে।
আয়রন ত্রাণকর্তা

2
@ আয়রন ত্রাণকর্তা একটি ইউনিট পরীক্ষা আপনার কোড পরীক্ষা করে তবে আপনার কোডটি কোথাও চলে। যদি সেই প্রসঙ্গটি আরডুইনো প্রসঙ্গ হয় বা অনুকরণ করে; তারপরে আরডুনোইনাইট আপনাকে ইউনিট পরীক্ষা লিখতে সহায়তা করবে। আপনি যদি আরডুইনো ইউনাইট প্রকল্পটি দেখেন তবে কাঠামোর মেটা-পরীক্ষাটি স্বয়ংক্রিয়ভাবে লোড হয়, চালিত হয় এবং ক্রস-প্ল্যাটফর্মের লক্ষ্যবস্তুতে পরীক্ষার ফলাফলগুলি যাচাই করে। ঠিক যেমন আপনি অন্যান্য ক্রস-প্ল্যাটফর্ম লক্ষ্যগুলিও করতে চান। আপনার দৃষ্টিভঙ্গি এম্বেডযুক্ত পরিবেশে কোড পরীক্ষা না করার জন্য একটি অজুহাত যেখানে অন্যান্য প্রসংগের তুলনায় প্রায়শই বেশি না হলেও যথার্থতা যতটা গুরুত্বপূর্ণ।
ওয়ারেন ম্যাকএভয়

21

হার্ডওয়্যার অ্যাক্সেস বাদ দিয়ে এবং আমার পরীক্ষাগুলিতে এটি উপহাস করে আমার পিআইসি কোডটি পরীক্ষা করার আমার যথেষ্ট সাফল্য ইউনিট রয়েছে।

উদাহরণস্বরূপ, আমি এর সাথে পোর্টটি বিমূর্ত করি

#define SetPortA(v) {PORTA = v;}

তারপরে পিক ভার্সনে ওভারহেড কোডটি না যুক্ত করে সেটপোর্টে সহজেই উপহাস করা যায়।

একবার হার্ডওয়্যার বিমূর্ততাটির পরীক্ষা করা হয়ে গেলে আমি শীঘ্রই দেখতে পেলাম যে সাধারণভাবে পরীক্ষার কাঠামোটি পিআইসি-তে যায় এবং প্রথমবারের মতো কাজ করে।

হালনাগাদ:

আমি ইউনিট কোডের জন্য # অন্তর্ভুক্ত সীম, পরীক্ষার ছদ্মবেশের জন্য সি ++ ফাইলে ইউনিট কোড সহ, এবং লক্ষ্য কোডের জন্য একটি সি ফাইল ব্যবহার করি।

উদাহরণ হিসাবে আমি মাল্টিপ্লেক্সে চারটি সেগমেন্টের ডিসপ্লেগুলি করতে চাই, একটি পোর্টটি সেগমেন্টগুলি ড্রাইভিং এবং দ্বিতীয়টি প্রদর্শন নির্বাচন করে। প্রদর্শন কোড ইন্টারফেসগুলির মাধ্যমে SetSegmentData(char)এবং এর মাধ্যমে প্রদর্শনগুলির সাথে SetDisplay(char)। আমি এগুলি আমার সি ++ পরীক্ষার ছদ্মবেশে উপহাস করতে পারি এবং আমার প্রত্যাশিত ডেটা পেয়ে যায় তা পরীক্ষা করে দেখতে পারি। আমি যে টার্গেটটি ব্যবহার করি তার জন্য #defineযাতে আমি কোনও ফাংশন কলের ওভারহেড ছাড়াই সরাসরি অ্যাসাইনমেন্ট পাই

#define SetSegmentData(x) {PORTA = x;}

আমি নীতিগতভাবে দেখতে পাচ্ছি যে আমি ইউনিট পরীক্ষার জন্য কীভাবে প্রিপ্রসেসর 'সিম' ব্যবহার করতে পারি। তবে আমি নিশ্চিত নই যে আমি কোনও এমুলেটর না থাকলে কীভাবে পরীক্ষা চালাতে পারি বা এটির-জিসিসি সামঞ্জস্যপূর্ণ সংকলক যা উইন্ডোজ বাইনারিগুলি আউটপুট করে (আমার ক্ষেত্রে) ...
ম্যাথু মারডোক

আপডেটের জন্য ধন্যবাদ. আপনি কি পিআইসি বা আপনার পিসিতে ইউনিট পরীক্ষাগুলি কার্যকর করেন?
ম্যাথিউ মারডোক

ইউনিট পরীক্ষাগুলি এক্সকোড ব্যবহার করে একটি ম্যাকের উপর চালানো হয়। এগুলি পিক এ চালানোর জন্য সম্ভবত কোনও প্রকারের এমুলেটর প্রয়োজন। এটিকে বিমূর্ত করা যাতে এটি ম্যাকের উপরে চলে যায় স্যুইচিং প্রসেসরগুলিকে একটি দুর্দান্ত চুক্তি তৈরি করে তোলে
ডেভিড সাইকস

আরডুইনো এনভায়রনমেন্টটি এভিআর-জিসিসি সংকলক ব্যবহার করে যার কিছু আইডিয়াসিনক্রিয়া রয়েছে যার অর্থ জিসিসি (বা অন্যান্য সি ++ সংকলক) সহ সংকলন করা এবং পিসিতে চলার অর্থ এই নয় যে কোডটি এভ্রির-জিসিসিতেও সংকলন করবে।
ম্যাথিউ মুরডোক

আপনি কোন ধরনের পার্থক্যের কথা বলছেন? এগুলি কি এমন কিছু জিনিস যা কিছু প্রিপ্রোসেসর নির্দেশিকা দিয়ে পরিচালনা করা যায় না?
জোসেফ লিসি


12

সিমাভার হ'ল একটি এভিআর সিমুলেটর অ্যাভিআর-জিসিসি ব্যবহার করে।

এটি ইতিমধ্যে কয়েকটি এটিটিনি এবং এটিএমগা মাইক্রোকন্ট্রোলারকে সমর্থন করে এবং - লেখকের মতে - আরও কিছু যুক্ত করা সহজ।

উদাহরণগুলিতে সিমডুইনো, একটি আরডুইনো এমুলেটর রয়েছে। এটি আরডুইনো বুটলোডার চালনা সমর্থন করে এবং সোকার্ট (একটি পরিবর্তিত নেটক্যাট ) এর মাধ্যমে আর্দুড দিয়ে প্রোগ্রাম করা যায়


9

আপনি আমার প্রকল্প, পাইসিমএভিআর দিয়ে পাইথনে ইউনিট পরীক্ষা করতে পারেন । আরসকনগুলি সিমুলেশনের জন্য বিল্ডিং এবং সিমাভার ব্যবহার করা হয়।

উদাহরণ:

from pysimavr.sim import ArduinoSim    
def test_atmega88():
    mcu = 'atmega88'
    snippet = 'Serial.print("hello");'

    output = ArduinoSim(snippet=snippet, mcu=mcu, timespan=0.01).get_serial()
    assert output == 'hello'

পরীক্ষা শুরু করুন:

$ nosetests pysimavr/examples/test_example.py
pysimavr.examples.test_example.test_atmega88 ... ok

6

আমি এমন কোনও প্ল্যাটফর্ম সম্পর্কে অবগত নই যা আরডিনো কোড পরীক্ষা করতে পারে।

তবে, ফ্রেটিজিং প্ল্যাটফর্ম রয়েছে, যা আপনি হার্ডওয়্যার এবং পরে রফতানির জন্য পিসিবি ডায়াগ্রাম এবং স্টাফ ব্যবহার করতে পারেন।

মূল্যবান চেকিং।


6

আমরা একটি বিশাল বৈজ্ঞানিক পরীক্ষায় ডেটা অধিগ্রহণের জন্য আরডুইনো বোর্ড ব্যবহার করছি। পরবর্তী সময়ে, আমাদের বিভিন্ন বাস্তবায়ন সহ বেশ কয়েকটি আরডুইনো বোর্ডকে সমর্থন করতে হবে। ইউনিট পরীক্ষার সময় অরডিনো হেক্স চিত্রগুলি গতিশীলভাবে লোড করার জন্য আমি পাইথন ইউটিলিটিগুলি লিখেছিলাম। নীচের লিঙ্কটিতে পাওয়া কোডটি একটি কনফিগারেশন ফাইলের মাধ্যমে উইন্ডোজ এবং ম্যাক ওএস এক্সকে সমর্থন করে। আপনার হেক্সস চিত্রগুলি আরডুইনো আইডিই দ্বারা কোথায় স্থাপন করা হয়েছে তা জানতে, বিল্ড (প্লে) বোতামটি চাপার আগে শিফট কীটি চাপুন। আপনার আড়ডুড (কমান্ড লাইন আপলোড ইউটিলিটি) আপনার আরডুইনোর সিস্টেম / সংস্করণে কোথায় রয়েছে তা সন্ধান করতে আপলোড দেওয়ার সময় শিফট কীটি হিট করুন। বিকল্পভাবে, আপনি অন্তর্ভুক্ত কনফিগারেশন ফাইলগুলি দেখতে পারেন এবং আপনার ইনস্টল অবস্থানটি (বর্তমানে আরডুইনো 0020 তে) ব্যবহার করতে পারেন।

http://github.com/toddstavish/Python-Arduino-Unit-Testing


+1 দুর্দান্ত জিনিস! ছবিগুলি আপলোড হওয়ার পরে আপনি কীভাবে আপনার ইউনিট টেস্টিং করেছিলেন সে সম্পর্কে কোনও তথ্য আছে?
ম্যাথু মারডোক

পাইথনের পাশে আমাদের ইউনিট পরীক্ষা চালানোর জন্য আমরা নোকস্টেট ব্যবহার করেছি। প্রতিটি পরীক্ষার জন্য সেটআপ সেই পরীক্ষার জন্য সঠিক হেক্স চিত্রটি লোড করে। আমরা ছোট শুরু করি এবং তারপরে আরও বিস্তৃত পরীক্ষার কাজ করি। সিরিয়াল যোগাযোগ কাজ করছে কিনা তা নিশ্চিত করুন, ইউআই-তে সিরিয়াল ইন্টিগ্রেশন কাজ করছে কিনা তা নিশ্চিত করুন, সিরিয়াল থেকে ডিবি ইন্টিগ্রেশন ইত্যাদি পরীক্ষা করুন, এনালগ_ড্রেড_স্পিড পিডি এবং পাই এর মূল বিষয়গুলি দেখায় (উপরে গিথুব লিঙ্কটি দেখুন)। শেষ পর্যন্ত, আমরা পুরো প্রকল্পটি উত্সটি খুলব, তাই দয়া করে সাথে থাকুন। :)
21

6

এই প্রোগ্রামটি বেশ কয়েকটি আরডুইনো ইউনিট পরীক্ষা স্বয়ংক্রিয়ভাবে চালানোর অনুমতি দেয়। টেস্টিং প্রক্রিয়াটি পিসিতে শুরু হয় তবে পরীক্ষাগুলি প্রকৃত আরডুইনো হার্ডওয়ারে চলে। ইউনিট পরীক্ষার একটি সেট সাধারণত একটি আরডুইনো লাইব্রেরি পরীক্ষা করতে ব্যবহৃত হয়। (এই

আরডুইনো ফোরাম: http://arduino.cc/forum/index.php?topic=140027.0

গিটহাব প্রকল্প পৃষ্ঠা: http://jeroendoggen.github.com/Ardino-TestSuite

পাইথন প্যাকেজ সূচীতে পৃষ্ঠা: http://pypi.python.org/pypi/arduino_testsuite

ইউনিট পরীক্ষাগুলি "আরডুইনো ইউনিট পরীক্ষার লাইব্রেরি" দিয়ে লেখা হয়: http://code.google.com/p/arduinounit

ইউনিট পরীক্ষার প্রতিটি সেটের জন্য নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করা হয়:

  • কোন পরীক্ষা চালানো হবে তা জানতে কনফিগারেশন ফাইলটি পড়ুন
  • স্ক্রিপ্টটি একটি আরডুইনো স্কেচ সংকলন এবং আপলোড করে যা ইউনিট পরীক্ষার কোড ধারণ করে।
  • ইউনিট পরীক্ষাগুলি আরডুইনো বোর্ডে চালিত হয়।
  • পরীক্ষার ফলাফল সিরিয়াল বন্দর দিয়ে মুদ্রিত হয় এবং পাইথন স্ক্রিপ্ট দ্বারা বিশ্লেষণ করা হয়।
  • স্ক্রিপ্টটি পরবর্তী পরীক্ষা শুরু করে, কনফিগারেশন ফাইলে অনুরোধ করা সমস্ত পরীক্ষার জন্য উপরের পদক্ষেপগুলি পুনরাবৃত্তি করে।
  • স্ক্রিপ্টটি সম্পূর্ণ পরীক্ষার ক্ষেত্রে সমস্ত ব্যর্থ / পাস হওয়া পরীক্ষার ওভারভিউ দেখিয়ে একটি সংক্ষিপ্তসার মুদ্রণ করে।

5

হার্ডওয়্যার-নির্দিষ্ট কোডটিকে বিশ্রাম থেকে আলাদা বা বিমূর্ত রাখুন যাতে আপনার যে ভাল প্ল্যাটফর্মের জন্য ভাল সরঞ্জাম রয়েছে এবং যার সাথে আপনি সর্বাধিক পরিচিত, সেই প্ল্যাটফর্মে আপনি সেই বৃহত "বিশ্রাম "টি পরীক্ষা করতে এবং ডিবাগ করতে পারেন।

মূলত, যতগুলি সম্ভব কাজ-করা বিল্ডিং ব্লক থেকে যতটা সম্ভব চূড়ান্ত কোড তৈরির চেষ্টা করুন। বাকি হার্ডওয়্যার-নির্দিষ্ট কাজটি তখন অনেক সহজ এবং দ্রুত হবে। আপনি নিজের নিজস্ব বিদ্যমান এমুলেটর এবং / অথবা অনুকরণকারী ডিভাইস ব্যবহার করে এটি শেষ করতে পারেন। এবং তারপরে অবশ্যই আপনার একরকম আসল জিনিসটি পরীক্ষা করতে হবে। পরিস্থিতির উপর নির্ভর করে, এটি খুব ভাল স্বয়ংক্রিয়ভাবে হতে পারে বা নাও পারে (যেমন কে বা কী বাটনগুলি চাপবে এবং অন্যান্য ইনপুট সরবরাহ করবে? কে বা কী বিভিন্ন সূচক এবং ফলাফলগুলি পর্যবেক্ষণ ও ব্যাখ্যা করবে?))



5

আরডুইনো কোড লেখার সময় আমি Searduino ব্যবহার করছি । Searduino একটি আরডুইনো সিমুলেটর এবং একটি বিকাশ পরিবেশ (মেকফাইলস, সি কোড ...) যা আপনার প্রিয় সম্পাদক ব্যবহার করে সি / সি ++ এ হ্যাক করা সহজ করে তোলে। আপনি আরডিনো স্কেচগুলি আমদানি করতে পারেন এবং সেগুলি সিমুলেটারে চালাতে পারেন।

সেরদুইনো 0.8 এর স্ক্রিনশট: http://searduino.files.wordpress.com/2014/01/jearduino-0-8.png

Searduino 0.9 প্রকাশিত হবে এবং দীর্ঘস্থায়ী পরীক্ষা শেষ হওয়ার সাথে সাথে একটি ভিডিও রেকর্ড করা হবে .... এক বা দুই দিনের মধ্যে।

সিমুলেটারে পরীক্ষা করা সত্যিকারের পরীক্ষা হিসাবে বিবেচনা করা উচিত নয়, তবে এটি অবশ্যই আমাকে বোকা / যৌক্তিক ভুলগুলি (করতে ভুলে যাওয়া pinMode(xx, OUTPUT)ইত্যাদি) সন্ধান করতে অনেক সহায়তা করেছে ।

বিটিডাব্লু: আমি সের্দুইনো উন্নয়নশীল লোকদের মধ্যে একজন।


5

আমি arduino_ciএই উদ্দেশ্যে নির্মিত । যদিও এটি আরডুইনো লাইব্রেরি পরীক্ষার মধ্যে সীমাবদ্ধ (এবং স্ট্যান্ডেলোন স্কেচ নয়) তবে এটি স্থানীয়ভাবে বা সিআই সিস্টেমে (ট্র্যাভিস সিআই বা অ্যাপভেয়ারের মতো) ইউনিট পরীক্ষাগুলি সক্ষম করে।

আপনার Arduino লাইব্রেরী ডিরেক্টরির মধ্যে একটি খুব সহজ গ্রন্থাগার বিবেচনা বলা হয়, DoSomethingসঙ্গে, do-something.cpp:

#include <Arduino.h>
#include "do-something.h"

int doSomething(void) {
  return 4;
};

আপনি এটি ইউনিটটি নিম্নলিখিতভাবে পরীক্ষা করতেন (টেস্ট ফাইল নামে ডাকা test/is_four.cppবা এরকম কিছু সহ):

#include <ArduinoUnitTests.h>
#include "../do-something.h"

unittest(library_does_something)
{
  assertEqual(4, doSomething());
}

unittest_main()  // this is a macro for main().  just go with it.

এখানেই শেষ. যদি সেই assertEqualসিনট্যাক্স এবং পরীক্ষার কাঠামোটি পরিচিত মনে হয়, তবে কারণ আমি ম্যাথিউ মারডোকের আরডুইনো ইউনাইট লাইব্রেরি গ্রহণ করেছি যা তিনি তাঁর উত্তরে উল্লেখ করেছেন

আই / ও পিন, ঘড়ি, সিরিয়াল পোর্ট ইত্যাদি ইউনিট পরীক্ষার বিষয়ে আরও তথ্যের জন্য রেফারেন্স.এমডি দেখুন

এই ইউনিট পরীক্ষাগুলি সংকলিত হয় এবং একটি রুবি রত্নটিতে থাকা স্ক্রিপ্ট ব্যবহার করে চালানো হয়। কীভাবে সেট আপ করবেন তার উদাহরণগুলির জন্য, README.md দেখুন বা এই উদাহরণগুলির মধ্যে একটি থেকে কেবল অনুলিপি করুন:


এটি আকর্ষণীয় দেখায় তবে আমি নিশ্চিত নই যে এটি আড়ডিনো কোডটি সঠিকভাবে পরীক্ষা করছে। আপনার পোস্ট করা আউটপুট থেকে এটি x86_64 আর্কিটেকচারে সংকলন করছে, যা স্পষ্টতই আরডুইনোর জন্য ব্যবহৃত হয় না। এটি টাইপ বাস্তবায়নগুলির মধ্যে দ্বন্দ্বের কারণে সৃষ্ট বাগগুলি প্রবর্তন করতে পারে।
সেরিন

এই ধরণের বাগ অবশ্যই সম্ভব। আমি কি পরীক্ষার ক্ষেত্রে ব্যবহার করতে পারি এমন উদাহরণ রয়েছে?
আয়ান

3

এনকোর নামে একটি প্রকল্প রয়েছে , যা আরডুইনোর জন্য দেশীয় মূল সরবরাহ করে। এবং আপনাকে আরডুইনো কোডের জন্য পরীক্ষা লেখার অনুমতি দেয়।

প্রকল্পের বর্ণনা থেকে

নেটিভ কোর আপনাকে পিসিতে আরডুইনো স্কেচগুলি সংকলন করতে এবং চালানোর অনুমতি দেয়, সাধারণত কোনও পরিবর্তন ছাড়াই। এটি স্ট্যান্ডার্ড আরডিনো ফাংশনের স্থানীয় সংস্করণ এবং আপনার স্কেচে ইনপুট দেওয়ার জন্য একটি কমান্ড-লাইন ইন্টিপ্লেটার সরবরাহ করে যা সাধারণত হার্ডওয়্যার থেকেই আসে।

এছাড়াও "আমাকে এটি ব্যবহার করার দরকার কি" বিভাগে

আপনি যদি পরীক্ষাগুলি তৈরি করতে চান তবে আপনাকে http://cxxtest.tigris.org থেকে সিএক্সএক্সেস্ট দরকার । এনসিওআরএইচএক্সএক্সেস্ট ৩.১০.১ দিয়ে পরীক্ষা করা হয়েছে।


এটি একটি আকর্ষণীয় প্রকল্প। দুর্ভাগ্যক্রমে, দেখে মনে হচ্ছে এটি এখন মারা গেছে, কারণ এটির 6 বছর ধরে কোনও অগ্রগতি হয়নি।
সেরিন 20

2

আপনি যদি এমসইউ (ডেস্কটপে) এর বাইরে ইউনিট-টেস্ট কোড করতে চান তবে libcheck দেখুন: https://libcheck.github.io/check/

আমি এটি নিজের এম্বেড কোডটি কয়েকবার পরীক্ষা করতে ব্যবহার করেছি। এটি বেশ শক্তিশালী কাঠামো


কেবলমাত্র খারাপটি হ'ল এটি জি ++ সমর্থন করে না, যা সি ++ বৈশিষ্ট্য ব্যবহার করে এমন বেশিরভাগ আরডুইনো লাইব্রেরি পরীক্ষার জন্য এটি অকেজো করে তোলে।
সেরিন

1

আপনি ইমুলার ব্যবহার করতে পারেন - আপনি একটি চিত্রের উপর একটি মাইক্রোকন্ট্রোলারকে টেনে আনতে এবং একিপ্সে আপনার কোড চালাতে পারেন। ওয়েবসাইটে ডকুমেন্টেশন আপনাকে এটি কীভাবে সেট আপ করবেন তা জানায়।


1

আপনার কোডটি ডিবাগ করতে বা এটি পরীক্ষা করতে একটি আরডিনো লাইব্রেরি সহ প্রোটিয়াস ভিএসএম ব্যবহার করুন।

আপনার কোডটি অনলাইনে পাওয়ার আগে এটি একটি সেরা অনুশীলন, তবে সময়সীমার সাথে নিশ্চিত হন কারণ বোর্ডে চালানোর সাথে সাথে সিমুলেশন রিয়েলটাইমটি চালায় না।


1

ব্যবহার করে দেখুন অটোডেস্ক বর্তনী কাল্পনিক । এটি অন্যান্য অনেক হার্ডওয়্যার উপাদানগুলির সাথে আরডুইনো কোড এবং সার্কিটগুলি পরীক্ষা করতে দেয়।


0

বেসিক আরডুইনোতে সি এবং সি ++ দিয়ে লেখা হয়, এমনকি আরডুইনোর লাইব্রেরিও সি এবং সি ++ তে লেখা হয়। সুতরাং, সরল পদে কেবল কোডটিকে সি এবং সি ++ হিসাবে হ্যান্ডেল করুন এবং ইউনিট পরীক্ষা করার চেষ্টা করুন। এখানে, "হ্যান্ডেল" শব্দের দ্বারা আমি আপনাকে বোঝাতে চাইছি সিরিয়াল.প্রিন্টলনকে সায়সআউটে পিনমড, ভেরিয়েবলগুলিতে পিনমড, অকার্যকর লুপটি যখন (লুপ) যা কাস্টোস্টে বিভক্ত হয় বা কিছু পুনরাবৃত্তির পরে আসে।

আমি জানি এটি সামান্য দীর্ঘ প্রক্রিয়া এবং এতো সোজা এগিয়ে নয় my আমার ব্যক্তিগত অভিজ্ঞতায়, একবার এটি করার পরে এটি আরও নির্ভরযোগ্য হয়ে ওঠে।

-Nandha_Frost


0

আপনি যদি কোনও আইএনও স্কেচ চালাতে আগ্রহী এবং সিরিয়াল আউটপুট চেকআউট করতে চান তবে আমার আরডুইনো এনএমইএ চেকসাম প্রকল্পে এটির কার্যকরী বাস্তবায়ন রয়েছে ।

নিম্নলিখিত স্ক্রিপ্টটি ফাইলটি নেয় এবং এটি এইচএক্স ফাইল সংকলন করতে আরডুইনো সিএলআই ব্যবহার করে যা সিমএভিআর এ লোড করা হয় যা এটি মূল্যায়ন করে এবং সিরিয়াল আউটপুট মুদ্রণ করে। যেহেতু সমস্ত আরডুইনো প্রোগ্রামগুলি তাদের হত্যা করার কোনও বিকল্প না রেখে চিরকালের জন্য চালিত হয় ( exit(0)কাজ করে না), তাই আমি স্কেচটি কয়েক সেকেন্ডের জন্য চালাতে দিয়েছিলাম এবং তারপরে প্রত্যাশিত আউটপুট সহ ক্যাপচার আউটপুটটিকে পৃথক করি।

আরডুইনো সিএলআই ডাউনলোড এবং নিষ্কাশন করুন (এই ক্ষেত্রে সংস্করণ 0.5.0 - লেখার সময় সর্বশেষ):

curl -L https://github.com/arduino/arduino-cli/releases/download/0.5.0/arduino-cli_0.5.0_Linux_64bit.tar.gz -o arduino-cli.tar.gz
tar -xvzf arduino-cli.tar.gz

এখন আপনি সূচক আপডেট করতে এবং উপযুক্ত কোর ইনস্টল করতে পারেন:

./arduino-cli core update-index
./arduino-cli core install arduino:avr

আপনার স্কেচের নাম ধরে নেওয়া হয়েছে nmea-checksum.ino, ইএলএফ এবং এইচএক্স পেতে, রান করুন:

./arduino-cli compile -b arduino:avr:uno nmea-checksum.ino

এরপরে, এইচএক্স (বা ইএলএফ) চালানোর জন্য সিমএভিআর - আমি উত্স থেকে তৈরি করি কারণ সর্বশেষ প্রকাশটি আমার পক্ষে কাজ করে না:

sudo apt-get update
sudo apt-get install -y build-essential libelf-dev avr-libc gcc-avr freeglut3-dev libncurses5-dev pkg-config
git clone https://github.com/buserror/simavr.git
cd simavr
make

সফল সংকলন আপনাকে দেয় simavr/run_avrযা আপনি স্কেচ চালানোর জন্য ব্যবহার করতে পারেন। যেমনটি আমি বলেছিলাম, timeoutঅন্যথায় এটি কখনই শেষ হবে না:

cd simavr
timeout 10 ./run_avr -m atmega168 -f 16000000 ../../nmea-checksum.ino.arduino.avr.uno.elf &> nmea-checksum.ino.clog || true

উত্পন্ন ফাইলটিতে সিরিয়াল আউটপুট মোড়ানো এএনএসআই রঙ কোড নিয়ন্ত্রণ অক্ষর থাকবে, সেগুলি থেকে পরিত্রাণ পেতে:

cat nmea-checksum.ino.clog | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g" > nmea-checksum.ino.log
cat nmea-checksum.ino.log

এখন আপনাকে যা করতে হবে তা এই ফাইলটিকে একটি পরিচিত ভাল ফাইলের সাথে তুলনা করা হচ্ছে:

diff nmea-checksum.ino.log ../../nmea-checksum.ino.test

যদি কোনও মতভেদ diffনা থাকে তবে কোড 0 দিয়ে প্রস্থান করবেন, অন্যথায় স্ক্রিপ্টটি ব্যর্থ হবে।

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