UART baudrate `স্ক্রীণ` দ্বারা কনফিগারযোগ্য কিন্তু` stty` দ্বারা নয়


0

আমি সিরিয়াল অ্যাডাপ্টারের একটি ইউএসবি আছে, উপর ভিত্তি করে CH340G চিপ। এটি এমন একটি ডিভাইসের সাথে সংযুক্ত থাকে যা বারংবার 9600 বাউন্ডে একটি স্ট্রিং পাঠায়। যাইহোক, আমি UART এর সাথে কীভাবে কনফিগার করব তা নির্বিশেষে ডেটা গ্রহণ করতে সক্ষম বলে মনে হচ্ছে stty (সংস্করণ 8.13):

# stty -F /dev/ttyUSB0 9600  
# stty -F /dev/ttyUSB0     
speed 9600 baud; line = 0;
kill = ^H; min = 100; time = 2;
-icrnl -imaxbel
-opost -onlcr
-isig -icanon -echo
# stdbuf -i0 -o0 cat /dev/ttyUSB0
data data data
^C
# stty -F /dev/ttyUSB0 115200
# stty -F /dev/ttyUSB0       
speed 115200 baud; line = 0;
kill = ^H; min = 100; time = 2;
-icrnl -imaxbel
-opost -onlcr
-isig -icanon -echo
# stdbuf -i0 -o0 cat /dev/ttyUSB0         
data data data
^C

আমি অনুমান কিছু আছে stty, থেকে screen প্রত্যাশিত হিসাবে কাজ করে। screen /dev/ttyUSB0 9600 তথ্য দেখায়, যখন screen /dev/ttyUSB0 115200 কোন আউটপুট উত্পন্ন করে।

UART baudrate কনফিগার করার প্রচেষ্টাতে আমি কি অনুপস্থিত stty?

উত্তর:


2

আমি অনুমান কিছু আছে stty ...
...
স্টার্টের সাথে UART Baudrate কনফিগার করার প্রচেষ্টাটিতে কি কিছু অনুপস্থিত?

হ্যাঁ, আপনার পরীক্ষাটি ত্রুটিযুক্ত, যাতে আপনি বুঝতে পারছেন না যে baudrate পরিবর্তিত হয়েছে।

কিছু (সম্ভবত অস্পষ্ট) ঘটনা:

  • কোনও সিরিয়াল পোর্টটি যখন কনফিগারেশনের সাথে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে পাঠানো হয় তখন কোনও তথ্য পাওয়া যায় না (উদাঃ 9600 বাউড এ প্রেরিত এবং 115200 বাউড এ প্রাপ্ত করা হয়)।
  • দ্য বিড়াল কমান্ডটি একটি quirk আছে যা এটি stdio buffers ফ্লাশ করতে পারে না যদি না এটি একটি লাইন সমাপ্তি চরিত্র সম্মুখীন হয়। IOW ক্রমাগত বিড়াল কোন লাইন সমাপ্তি হয়েছে যখন কমান্ড একই তথ্য প্রদর্শন করতে পারে। গ্রহণযোগ্য উত্তর এই প্রশ্ন এই সমস্যা সংকেত।

আপনার নির্দিষ্ট পছন্দ এবং শেল কমান্ডের ক্রমটি আপনাকে আপনার ভুল উপসংহারে নেতৃত্ব দেওয়ার জন্য একত্রে কাজ করে।

# STTY -F / dev / ttyUSB0 9600
# stty -f / dev / ttyUSB0
# বিড়াল / dev / ttyUSB0
তথ্য তথ্য তথ্য
^ সি

সুতরাং আপনি সিরিয়াল টার্মিনালটি সঠিক বড্রেটের সাথে কনফিগার করুন এবং কিছু তথ্য পান।

# stty -f / dev / ttyUSB0 115200
# stty -f / dev / ttyUSB0
# বিড়াল / dev / ttyUSB0
তথ্য তথ্য তথ্য
^ সি

আপনি খুব দ্রুত baudrate সঙ্গে পুনর্গঠন করার পরে, সিরিয়াল পোর্ট সম্ভবত বৈধ ফ্রেম সনাক্ত করতে বন্ধ, এবং কোন নতুন তথ্য গ্রহণ করা হয়।
আপনি অন্য সমস্যা যখন বিড়াল কমান্ড, আপনি পূর্বে প্রাপ্ত করা একই তথ্য একটি প্রদর্শন দেখতে (যেমন baudrate পরিবর্তন আগে)।


অভিযোজ্য বস্তু

আপনি কমপক্ষে নিজেকে সন্তুষ্ট করতে সক্ষম হওয়া উচিত stty কমান্ড ভাঙ্গা হয় না, এবং প্রত্যাশিত হিসাবে baudrate পরিবর্তন করে।
উভয় ক্ষেত্রেই:

উ। খুব দ্রুত বড্র্যাটে পরিবর্তন করার পরিবর্তে (যে কোনও ফ্রেমিং সনাক্ত করা যাবে না), 38400 বাউড বা 4800 বাউডের মাঝামাঝি পরিবর্তনে পরিবর্তিত হবে, যার মধ্যে কার্বন অক্ষরগুলির অভ্যর্থনা / প্রদর্শন করা উচিত (বৈধ তথ্য বা কিছুই পরিবর্তে)।

অথবা

বাউডের আদেশ স্যুপ। সিস্টেম রিসেট, এবং ব্যবহার stty দ্রুত, অবৈধ বাড্রেট কনফিগার করার জন্য প্রথমে অভ্যর্থনা / আবর্জনা অক্ষরগুলির প্রদর্শন বা প্রদর্শনের কারণ হয়।
তারপর ব্যবহার করুন stty সঠিক baudrate কনফিগার করতে, এবং প্রত্যাশিত হিসাবে তথ্য গ্রহণ শুরু।


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

আমি আশা করি বাফারিং বিষয়গুলি বাদ দিয়ে একটি নতুন পরীক্ষা করেছি।
Dmitry Grigoryev

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

ধন্যবাদ! আমি কয়েক অন্যান্য পরীক্ষা করতে যাচ্ছি UART অ্যাডাপ্টারের যখন আমি তাদের পেতে, কিন্তু আপনি আমাকে একটি ধারণা দিয়েছেন: আমি আউটপুট সিরিয়াল ইনপুট প্রতিধ্বনি প্রোগ্রাম একটি Arduino সঙ্গে আমার পরীক্ষা পুনরায় করব।
Dmitry Grigoryev
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.