আমি কীভাবে নেটওয়ার্কে / ডিভ / টিটিইউএসবি0 এর জন্য একটি "ইউএসবি প্রক্সি" সেট আপ করতে পারি?


14

আমার পরীক্ষার অধীনে একটি ডিভাইস রয়েছে (ডিটিইউ) এবং আমি এর পাওয়ার ব্যবহারটি ডেটা ব্যবহার করে পাওয়ার অ্যানালাইজার ডেটাগ্ল্যাজার ব্যবহার করে পরিমাপ করি /dev/ttyUSB0

সমস্যাটি হ'ল DUT এখন দূরবর্তী অবস্থান থেকে ওয়ার্কস্টেশন থেকে ডেটা সংগ্রহ করার জন্য আমি ব্যবহার করেছি, তবে একই নেটওয়ার্কে, আমাকে একটি দ্বিতীয় পিসি ব্যবহার করতে হবে যা ইউএসবি এর মাধ্যমে পাওয়ার আনলেজারের সাথে সরাসরি যুক্ত হয়েছে ইউএসবি প্রক্সি এবং এসএসএসের এক ধরণের হিসাবে is "প্রক্সি" মেশিনের ইউএসবি'র পরিমাপ মেশিনে এক ধরণের প্রতীকী লিঙ্ক তৈরি করতে।

এখানে চিত্র বর্ণনা লিখুন

উপরের চিত্রটি প্রদত্ত, কীভাবে সরাসরি সরাসরি সংযুক্ত 2 এনডির পিসির 1 পিসি অ্যাক্সেস করতে পারে , যাতে কোনও প্রোগ্রামের 1 পিসি থেকে স্ট্রিম পড়ার পার্থক্যটি লক্ষ্য করা যায় না? /dev/ttyUSB0

উত্তর:


19

socat এখানে কাজ করতে পারে।

২ য় পিসিতে আপনি socatডেটা শুনতে /dev/ttyUSB0এবং এটি একটি টিসিপি পোর্টে পরিবেশন করতে দিতে পারেন, যেমন:

socat /dev/ttyUSB0,raw,echo=0 tcp-listen:8888,reuseaddr

তারপরে ১ ম পিসিতে আপনি স্যাকট সহ ২ য় পিসিতে সংযোগ করতে পারেন এবং /dev/ttyVUSB0আপনার অ্যাপ্লিকেশনটির জন্য সিউডো টার্মিনালে ডেটা সরবরাহ করতে পারেন:

socat PTY,raw,echo=0,link=/dev/ttyVUSB0 tcp:<ip_of_pc2>:8888

এটি পরীক্ষিত নয় এবং socatঅনেকগুলি বিকল্পকে সমর্থন করে, তাই টুইট করার প্রয়োজন হতে পারে।


3
ধন্যবাদ! ল্যাপটপে ডকার পাত্রে পরীক্ষার পরিবেশ -> এসএসএইচ টানেল -> ক্লিন রুমে পিসি -> এভিআর প্রোগ্রামার এবং ক্লিন রুমে এফটিডিআই লগার
মার্ক কে কোয়ান

2

আপনি ser2netএবং এর সংমিশ্রণটি ব্যবহার করতে পারেন socat। উদাহরণস্বরূপ, আমার কাছে একটি রোবট সিরিয়াল পোর্টের মাধ্যমে রাস্পবেরি পাইয়ের সাথে সংযুক্ত রয়েছে। রাস্পবেরি পাই আমার স্থানীয় নেটওয়ার্কের সাথে সংযুক্ত (আপনার দ্বিতীয় পিসির সমতুল্য)। এবং আমার ল্যাপটপ একই স্থানীয় নেটওয়ার্কের সাথে সংযুক্ত (আপনার প্রথম পিসির সমতুল্য)। তারপরে আমি দ্বিতীয় পিসি থেকে টিসিপির মাধ্যমে সিরিয়াল পোর্টটি ফরোয়ার্ড করার জন্য সার্ 2 নেট ব্যবহার করি socatএবং 1 ম পিসি ব্যবহার করে একটি প্রক্সি সিরিয়াল ডিভাইস ফাইল তৈরি করি ।

এই সেটআপটি আপনার জন্যও কার্যকর হতে পারে। প্রস্তাবিত সমাধান:

পদক্ষেপ 1: আপনার 2 তম পিসিতে Ser2net প্যাকেজ ইনস্টল করুন (আপনার চিত্রের পরে)

sudo apt-get install ser2net

সার্ 2 নেট একটি টিসিপি পোর্ট শোনায় এবং সিরিয়াল বন্দর থেকে টিসিপি পোর্টের মাধ্যমে ডেটা পাইপ করতে সক্ষম হয়। আপনি কোন কনফিগারেশন ফাইলের মাধ্যমে "প্রক্সি" তৈরি করতে চান তা কোন সিরিয়াল বন্দরগুলি সেট আপ করতে পারেন /etc/ser2net.conf

পদক্ষেপ 2: ২ য় পিসিতে ser2net কনফিগার করুন

উদাহরণস্বরূপ, যদি আপনার কোনও ডিভাইস /dev/ttyACM0বাউড্রেটের সাথে সংযুক্ত থাকে 115200এবং লোকালহোস্ট পোর্ট 3333 থেকে এটি পরিবেশন করতে চান, তবে আপনি নীচের লাইনটি এতে যুক্ত করতে পারেন/etc/ser2net.conf

3333:raw:0:/dev/ttyACM0:115200,remctl

কনফিগারেশন ফাইল তৈরি করে, তারপরে হয় দ্বিতীয় পিসিতে চালিয়ে সার্ 2 নেট শুরু করুন:

ser2net

বা (এটি যদি ইতিমধ্যে চলমান থাকে তবে কেবল নীচের মত এটি পুনরায় চালু করুন)

/etc/init.d/ser2net restart

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

পদক্ষেপ 3: ডেটা সংগ্রহ ওয়ার্কস্টেশনে প্রক্সি সিরিয়াল ডিভাইস ফাইল সেট আপ করুন (1 ম পিসি)

(যদি আপনার সকেট না থাকে তবে sudo apt-get install socat)

অবশেষে, প্রথম পিসিতে একটি টার্মিনালে socatএকটি প্রক্সি সিরিয়াল পোর্ট তৈরি করা যাক টিসিপি পোর্ট থেকে শুনবে:

socat pty,link=$HOME/MyProxySerialPort,waitslave tcp:$ip:$port,forever,reuseaddr,keepalive

যেখানে, এই উদাহরণে ip=<2nd-PC-IP-address>এবং port=3333(বা /etc/ser2net.conf২ য় পিসিতে সেট আপ করার সময় আপনি যা কিছু বেছে নিয়েছিলেন )।

পদক্ষেপ 4: মাইপ্রোক্সিআরশিয়ারপোর্টে সংযুক্ত করুন

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

এই ব্লগ পোস্টটিতে এই সেটআপ সম্পর্কে আরও কিছু তথ্য রয়েছে: http://techtinkering.com/2013/04/02/connecting-to-a-remote-seial-port-over-tcpip/


খুব বিস্তৃত উত্তর +1
এডুয়ার্ড ফ্লোরিয়েন্সু

1

লিনাক্স কার্নেলগুলিতে যা / dev / bus / usb / BUS_ID / DEV_ID থেকে / dev / char / MAJOR- তে একটি প্রতীকী লিঙ্ক ব্যবহার করছে : আইএনসিটিএল ত্রুটির কারণে মাইনর সোকা এই জাতীয় ডিভাইসগুলি খুলতে পারে না!
সুতরাং এই পদ্ধতিটি ইউএসবি ডিভাইসে সরাসরি কাজ করবে বলে মনে হয় না।

আমি ইউএসবিপ চেষ্টা করেছি যা কাছাকাছি বাস্তবায়ন তবে এটি কেবল পুরানো কার্নেলগুলিতে সমর্থিত।

যেহেতু আমার সমাধান pcsc-Lite মাধ্যমে সংযুক্ত কার্ড পাঠকদের সম্পর্কে ছিল সেখানে এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করে একটি ভাল সমাধান ছিল libpcsclite ক্লায়েন্ট।

export PCSCLITE_CSOCK_NAME=$HOME/.pcscd.comm

এইভাবে একটি ডিফেরেন্ট ইউনিক্স ডোমেন সকেট নির্দিষ্ট করা যেতে পারে। আর এই এক ব্যবহার করে একটি দূরবর্তী হোস্ট-এ কার্ড রিডার সকেট ফরোয়ার্ড করা যাবে socat :

কার্ড রিডারটি প্রতিস্থাপন করতে হোস্টে এটি চালান

socat tcp:$CARD_READER_HOST:8888 UNIX-LISTEN:$PCSCLITE_CSOCK_NAME,fork

এটি পিসিএসসি কার্ড পাঠকের সাথে সংযুক্ত হয়ে CARD_READER_HOST হোস্টে চালান

socat UNIX-CONNECT:/var/run/pcscd/pcscd.comm tcp-listen:8888,fork,reuseaddr

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

3
আমি চেষ্টা করেছিলাম এবং সম্পর্কিত তথ্যটি ছিল প্রস্তাবিত উত্তরটি কাজ করে না! আমি মনে করি এই তথ্য ভাগ করে নেওয়া প্রয়োজন। বাকীটি সত্যই সরাসরি প্রাসঙ্গিক নয় তবে সম্পর্কিত সমস্যার জন্য আলাদা পদ্ধতির প্রস্তাব দেয়।
ইউভি

:পথের চরিত্রের কারণেই কি এটি হবে ? "অ্যাড্রেস স্পেসিফিকেশনস" বিভাগে সাকট ম্যান পৃষ্ঠা, এর কীভাবে অক্ষরগুলি থেকে বাঁচতে হবে সে সম্পর্কে একটি অনুচ্ছেদ রয়েছে (v1.5.0 এর পরে)।
ডেভিড নিপ

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