কোন সিরিয়াল পোর্টটি ব্যবহার হচ্ছে তা কীভাবে আবিষ্কার করবেন?


33

প্রশ্নটি:

আমি একটি সিরিয়াল পোর্ট (ওরফে আরএস -৩৩২) এর মাধ্যমে একটি ডিভাইস (অর্থাত্ জিএসএম মডেম) প্লাগ ইন করেছিলাম এবং /dev/এটির সাথে যোগাযোগ করতে সক্ষম হওয়ার জন্য, ফাইল সিস্টেমে কোন ফাইলটি এই ডিভাইসটি বেঁধে রেখেছিল তা আমার দেখতে হবে। দুর্ভাগ্যক্রমে কোনও নতুন তৈরি ফাইল /dev/নেই বা dmesgআউটপুটতে কিছুই দেখা যায় না । সুতরাং এটি একটি কঠিন প্রশ্ন বলে মনে হচ্ছে।

পটভূমি:

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


1
আমি কোনও ডিভাইস সনাক্ত করতে এই বিটগুলি ব্যবহার করতে চাই - আমি সম্ভবত এটি ব্যবহার করব, যদিও আমার অনেকগুলি ডিভাইস কেবলমাত্র টিএক্স / আরএক্স পিন ব্যবহার করে, আমি সম্ভবত এটির জন্য সিটিএস লাইন ধরে রাখতে তাদের হ্যাক করতে পারি।
ড্যানি স্ট্যাপল

উত্তর:


34

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

/dev/অপারেটিং সিস্টেমের মত UNIX নির্দেশিকা নামকরণ ফাইল রয়েছে ttySn (ক সংখ্যা হচ্ছে এন সঙ্গে) । তাদের বেশিরভাগ বিদ্যমান ডিভাইসের সাথে সামঞ্জস্য করে না। কোনটি করে তা সন্ধান করতে একটি আদেশ জারি করুন:

$ dmesg | grep ttyS
[    0.872181] 00:06: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[    0.892626] 00:07: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
[    0.915797] 0000:01:01.0: ttyS4 at I/O 0x9800 (irq = 19) is a ST16650V2
[    0.936942] 0000:01:01.1: ttyS5 at I/O 0x9c00 (irq = 18) is a ST16650V2

উপরে আমার পিসির একটি উদাহরণ আউটপুট। আপনি কয়েকটি সিরিয়াল পোর্টের সূচনা দেখতে পারেন:

ttyS0, ttyS1, ttyS4, ttyS5

তাদের একজন একটি ইতিবাচক ভোল্টেজ আছে যাচ্ছে একটি ডিভাইস। তাই প্লাগ উপর ফাইলের বিষয়বস্তু তুলনা করে /proc/tty/driver/serialদিয়ে এবং ডিভাইস ছাড়া প্লাগ আমরা সহজেই জানতে পারেন ttyS আমাদের ডিভাইস এর সাথে সম্পর্কিত। সুতরাং, এখন করুন:

$ sudo cat /proc/tty/driver/serial> /tmp/1

(আনইন) কোনও ডিভাইস প্লাগ করুন

$ sudo cat /proc/tty/driver/serial> /tmp/2

এরপরে দুটি ফাইলের মধ্যে পার্থক্য পরীক্ষা করুন। নীচে আমার পিসির একটি আউটপুট দেওয়া হল:

$ diff /tmp/1 /tmp/2
2c2
< 0: uart:16550A port:000003F8 irq:4 tx:6 rx:0
---
> 0: uart:16550A port:000003F8 irq:4 tx:6 rx:0 CTS|DSR

ডেমসগ আউটপুটটির সাথে তিনটি সংখ্যার তুলনা করে আমরা নির্ধারণ করতে পারি যে কোনটি বন্দর:

[    0.872181] 00:06: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A

সুতরাং, আমাদের ডিভাইস /dev/ttyS0, মিশন সম্পন্ন!


1
আমি যদি ডেমস্যাগ আউটপুটে কোনও ডিভাইস না দেখি তবে কী হবে?
ব্যবহারকারী 3019105

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

1
যেহেতু আমি মেশিন থেকে মেশিনে চলেছি আমি এই মেশিনে সিরিয়াল পোর্টগুলি দেখানোর জন্য একটি উলামের সংজ্ঞা দিয়েছি। এটি systemd সহ উবুন্টু পরিবার সিস্টেমে কাজ করে। ওরফে পোর্টস = 'উদেবদম তথ্য - এক্সপোর্ট-ডিবি | গ্রেপ-আই "^ n: ttyu"'
ডিডি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.