কম্পিউটার টিউটোরিয়াল

পাইথন প্রোগ্রাম: সাইক্লিক রिडান্ডেন্সি চেক (Cyclic Redundancy Check - CRC)


ডিজিটাল ডেটা-এ এরর ডিটেক্ট করার জন্য CRC ব্যবহার করা হয়, এটি ট্রান্সমিশন এরর ডিটেক্ট করার একটি ভালো টেকনিক। এই টেকনিক-এ মূলত বাইনারি ডিভিশন (binary division) প্রয়োগ করা হয়।

এই টেকনিক-এ, সাইক্লিক রিডান্ডেন্সি চেক বিটস (CRC bits) রয়েছে যা রিডান্ডেন্ট বিটস (redundant bits) এর একটি সিকোয়েন্স, এই বিটস ডেটা ইউনিটের শেষে অ্যাপেন্ড করা হয় যাতে ফলাফলস্বরূপ ডেটা ইউনিটি একটি দ্বিতীয় প্রিডিটারমিন্ড বাইনারি নম্বর দিয়ে সঠিকভাবে বিভাজ্য হয়।

ডেস্টিনেশন সাইডে, ইনকামিং ডেটা একই নম্বর দিয়ে ভাগ করা হয়, যদি কোনো রিমেইন্ডার (remainder) না থাকে তবে ধরে নেওয়া হয় ডেটা সঠিক এবং এটি রিসিভ করার জন্য প্রস্তুত।

একটি রিমেইন্ডার নির্দেশ করে যে ট্রান্সমিশন sırasında কিছু ঘটেছে, ডেটা ইউনিট ক্ষতিগ্রস্ত হয়েছে। তাই এই ডেটা ইউনিট গ্রহণ করা হবে না।

পাইথন প্রোগ্রাম: সাইক্লিক রिडান্ডেন্সি চেক (Cyclic Redundancy Check - CRC)

উদাহরণ কোড

 from pycrc.crclib import * def main(): #----------------------------------------------------------------------------- # Sender Side div = str(input("Input divisor in binary type: ")) # user_dataword = str(raw_input("Input dataword in binary type: ")) userdataword = '1001' print ("\nSender:") sen = Sender(bin2dec(userdataword), div) sen.send() print ("arg_dataword:", sen.arg_dataword2) print ("remainder:", sen.remainder2) print ("codeword:", sen.codeword2) #----------------------------------------------------------------------------- # Channel print ("\nChannel:") ch = Channel(sen.codeword) print ("Through to the channel get channel codeword:", dec2bin(ch.ch_codeword)) #----------------------------------------------------------------------------- # Receiver Side print ("\nReceiver:") rcv = Receiver(ch.ch_codeword, div) rcv.receive() print ("syndrome:", rcv.syndrome2) print ("Discard or not?", rcv.discard) print ("rx_dataword:", rcv.rx_dataword2) if __name__ == '__main__': main() 

আউটপুট

 Sender Input dataword in binary type 1010000 arg_dataword:1010000000 remainder: 011 codeword:1010000011 Receiver syndrome:1010000011 Discard or not? N rx_dataword:1010000011 

  1. প্রাইম নম্বর চেক করার পাইথন প্রোগ্রাম

  2. পাইথনে আর্মস্ট্রอง নম্বর চেক করা

  3. DiskPart এরর: Data error (cyclic redundancy check) সমাধান

  4. Cyclic Redundancy Check (CRC) এরর সমাধান: উইন্ডোজ ১₀-এ দ্রুত ও সহজ উপায়