मैं नेटवर्क पर / dev / ttyUSB0 के लिए "USB प्रॉक्सी" कैसे सेट कर सकता हूं?


14

मेरे पास परीक्षण (DUT) के तहत एक उपकरण है और मैं इसके पावर एनालाइज़र Datalogger से डेटा का उपयोग करके इसकी शक्ति के उपयोग को मापता हूं /dev/ttyUSB0

समस्या यह है कि DUT अब उस कार्य केंद्र से दूर है जिसे मैंने डेटा एकत्र करने के लिए उपयोग किया था, लेकिन उसी नेटवर्क में, मुझे एक 2 पीसी का उपयोग करने की आवश्यकता है जो USB के माध्यम से सीधे पॉवर एनेलेजर से USB प्रॉक्सी और ssh के रूप में जुड़ा होता है। "प्रॉक्सी" मशीन के यूएसबी की मापने की मशीन पर एक प्रकार का प्रतीकात्मक लिंक बनाने के लिए।

यहाँ छवि विवरण दर्ज करें

उपरोक्त आरेख को देखते हुए 2 nd PC का 1 सेंट पीसी का उपयोग कैसे किया जा सकता है जो सीधे जुड़ा हुआ है, एक तरह से 1 सेंट पीसी से स्ट्रीम पढ़ने वाला प्रोग्राम अंतर को नोटिस नहीं करेगा? /dev/ttyUSB0

जवाबों:


19

socat यहाँ काम कर सकते हैं।

2 पीसी पर आप socatडेटा के लिए सुनने के लिए /dev/ttyUSB0और एक tcp बंदरगाह के लिए सेवा कर सकते हैं, जैसे:

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

फिर 1 पीसी पर आप सोसाइटी के साथ 2 पीसी से कनेक्ट कर सकते हैं और /dev/ttyVUSB0अपने आवेदन के लिए छद्म टर्मिनल पर डेटा प्रदान कर सकते हैं:

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

यह परीक्षण नहीं किया गया है और socatकई विकल्पों का समर्थन करता है, इसलिए ट्विकिंग की आवश्यकता हो सकती है।


3
धन्यवाद! लैपटॉप पर डॉकटर कंटेनर में टेस्ट का माहौल -> SSH टनल -> क्लीन-रूम में पीसी -> AVR प्रोग्रामर और क्लीन-रूम में FTDI लकड़हारा
मार्क K Cowan

2

आप ser2netऔर के संयोजन का उपयोग कर सकते हैं socat। उदाहरण के लिए, मेरे पास एक रोबोट है जो एक सीरियल पोर्ट के माध्यम से रास्पबेरी पाई से जुड़ा हुआ है। रास्पबेरी पाई मेरे स्थानीय नेटवर्क (आपके 2 पीसी के बराबर) से जुड़ी है। और मेरा लैपटॉप एक ही स्थानीय नेटवर्क (आपके 1 पीसी के बराबर) से जुड़ा हुआ है। फिर मैं 2 पीसी से टीसीपी के माध्यम से सीरियल पोर्ट को आगे बढ़ाने के लिए सीरनेट का उपयोग करता हूं, और socat1 पीसी पर उपयोग करके एक प्रॉक्सी सीरियल डिवाइस फ़ाइल बनाता हूं ।

यह सेटअप आपके लिए भी काम कर सकता है। प्रस्तावित समाधान:

चरण 1: अपने दूसरे पीसी पर (अपने आरेख के बाद) सेरनेट पैकेज स्थापित करें

sudo apt-get install ser2net

ser2net एक टीसीपी पोर्ट को सुनता है और टीसीपी पोर्ट के माध्यम से एक सीरियल पोर्ट से डेटा को पाइप करने में सक्षम है। आप सेट कर सकते हैं कि कौन से सीरियल पोर्ट आप इसकी कॉन्फ़िगरेशन फ़ाइल के माध्यम से "प्रॉक्सी" बनाना चाहते हैं /etc/ser2net.conf

चरण 2: 2 पीसी में सेरनेट को कॉन्फ़िगर करें

उदाहरण के लिए, यदि आपके पास /dev/ttyACM0बॉड्रेट से जुड़ा एक उपकरण है 115200और इसे लोकलहोस्ट पोर्ट 3333 से परोसना चाहते हैं, तो आप निम्न लाइन को इसमें जोड़ सकते हैं/etc/ser2net.conf

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

कॉन्फ़िगरेशन फ़ाइल बनाई है, तो या तो दूसरे पीसी पर चलाकर ser2net शुरू करें:

ser2net

या (यदि यह पहले से ही चल रहा है, तो बस इसे नीचे के रूप में पुनरारंभ करें)

/etc/init.d/ser2net restart

यहां एक महत्वपूर्ण बात यह है कि रीमेकल विकल्प। यह डिवाइस से कनेक्ट करने के लिए क्लाइंट साइड (आपके आरेख में 1 पीसी) की अनुमति देता है और स्वतंत्र रूप से सीरियल कनेक्शन विकल्पों का चयन करता है। मुझे लगता है कि इस तरह से धारावाहिक संचार डेटा संग्रह कार्यक्षेत्र के दृष्टिकोण से पूरी तरह से पारदर्शी है। अधिक विवरण यहां देखें ।

चरण 3: डेटा संग्रह कार्य केंद्र (प्रथम पीसी) पर प्रॉक्सी सीरियल डिवाइस फ़ाइल सेट करें

(यदि आपके पास समाज नहीं है, तो sudo apt-get install socat)

अंत में, 1st PC पर एक टर्मिनल में socatएक प्रॉक्सी सीरियल पोर्ट बनाएं जो tcp पोर्ट से सुनेगा:

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

कहाँ, इस उदाहरण में ip=<2nd-PC-IP-address>और port=3333(या जब आप /etc/ser2net.conf2 पीसी पर स्थापित करते समय जो कुछ भी चुना है )।

चरण 4: MyProxySerialPort से कनेक्ट करें

अब आपको $HOME/MyProxySerialPort1 पीसी पर स्थित डिवाइस पर सामान्य रूप से एक सीरियल कनेक्शन खोलने में सक्षम होना चाहिए ।

इस ब्लॉग पोस्ट में इस सेटअप के बारे में कुछ और जानकारी भी है: http://techtinkering.com/2013/04/02/connecting-to-a-remote-serial-port-over-tcpip/


बहुत विस्तृत उत्तर +1
एडुआर्ड फ्लोरिनेसस्क्यू

1

लिनक्स कर्नेल में जो / dev / bus / usb / BUS_ID / DEV_ID से / dev / char / MAJOR के प्रतीकात्मक लिंक का उपयोग कर रहे हैं : MINOR समाज एक अनुचित IOCTL त्रुटि के कारण ऐसे उपकरण नहीं खोल सकता है!
इसलिए यह दृष्टिकोण सीधे USB उपकरणों पर काम नहीं करता है।

मैंने usbip की कोशिश की जो कि एक नज़दीकी कार्यान्वयन है लेकिन केवल पुराने कर्नेल पर समर्थित है।

चूंकि मेरा समाधान पीसीसी-लाइट के माध्यम से जुड़े कार्ड रीडर्स के बारे में था, लिबासक्लाइट ग्राहकों के लिए पर्यावरण चर का उपयोग करके एक बेहतर समाधान था ।

export PCSCLITE_CSOCK_NAME=$HOME/.pcscd.comm

इस तरह एक अलग यूनिक्स डोमेन सॉकेट निर्दिष्ट किया जा सकता है। और यह एक दूरस्थ रीडर पर कार्ड रीडर सॉकेट के लिए भेजा जा सकता है, जिसमें सोशल का उपयोग किया जा सकता है :

कार्ड रीडर को बदलने के लिए इसे होस्ट पर चलाएँ

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उस पावर विश्लेषक के बारे में सवाल से संबंधित नहीं है , जो PCSCLITE का उपयोग नहीं करता है। यदि आप इस जानकारी को पोस्ट करना चाहते हैं, तो यह एक अलग प्रश्न के रूप में बेहतर होगा। आपको ऑन-टॉपिक प्रश्न पोस्ट करने की अनुमति है और इसके लिए आपको तत्काल अनुवर्ती उत्तर देने के लिए प्रोत्साहित किया जाता है।
sourcejedi

3
मैंने इसकी कोशिश की और प्रासंगिक जानकारी यह थी कि प्रस्तावित उत्तर काम नहीं करता था! मुझे लगता है कि इस जानकारी को साझा करने की आवश्यकता है। बाकी वास्तव में सीधे प्रासंगिक नहीं है, लेकिन संबंधित समस्याओं के लिए एक अलग दृष्टिकोण प्रदान करता है।
यूवी

क्या यह :राह में चरित्र के कारण होगा ? सोसाइटी मैन पेज, सेक्शन "ADDRESS स्पेसिफिकेशन", में वर्णों से बचने के तरीके (v1.5.0 आगे) के बारे में एक पैराग्राफ है।
डेविड नाइप

दिलचस्प बिंदु, लेकिन इस परियोजना को अब और जाँचने का कोई तरीका नहीं मिला है :(
UV
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.