এসএসএইচ ব্যবহারের মতো সিরিয়াল বন্দরটিতে কীভাবে সংযোগ স্থাপন করবেন?


86

আপনি যেমন এসএসএইচের সাথে করতেন তেমন কোনও সিরিয়াল টার্মিনালের সাথে সংযোগ করার কোনও উপায় আছে কি? মিনিকোমের মতো সরঞ্জামগুলির চেয়ে আরও সহজ উপায় থাকতে হবে

$ serial /dev/ttyS0 

আমি জানি আমি catআউটপুটটি পারব /dev/ttyS0তবে বন্দর থেকে কনসোল পর্যন্ত কেবলমাত্র একটি উপায় যোগাযোগ সম্ভব। এবং echoবন্দরের বাইরে ঠিক একই তবে অন্যান্য উপায়ে, বন্দরে।

সিরিয়াল পোর্টের সাথে ইউনিক্স / লিনাক্সের সহজতম উপায়ের দ্বিগুণ যোগাযোগ কীভাবে উপলব্ধি করতে পারি?


2
মানুষ মহান উত্তর !. দুর্ভাগ্যক্রমে কম্যান্ডের সীমিত সেট সহ এম্বেড থাকা সিস্টেমগুলির সাথে কাজ করার সময় কেউ আমার উদ্দেশ্যকে পুরোপুরি ফিট করে না বলে মনে হয়। তবে আমি শেল স্ক্রিপ্ট ব্যবহার করে অন্য কোনও উপায় খুঁজে পেয়েছি যা আমার প্রশ্নের উত্তরগুলির একটি হিসাবে যুক্ত করেছি।
ইহাতেটোরিজিস্টার

উত্তর:


69

আমি screenসিরিয়াল যোগাযোগের জন্য সবচেয়ে দরকারী প্রোগ্রামটি পাই কারণ যেহেতু আমি এটি অন্য জিনিসের জন্য ব্যবহার করি। এটি সাধারণত ন্যায্য screen /dev/ttyS0 <speed>যদিও আপনার ডিভাইসের জন্য ডিফল্ট সেটিংস আলাদা হতে পারে। এটি আপনাকে কমান্ড মোডে প্রবেশ করে এবং সেশনে কোনও কিছু পাইপ করার অনুমতি দেয় exec !! <run some program that generates output>


3
পর্দার জন্য +1! এছাড়াও, দেখুন: serverfault.com/q/81544/11086
জোশ

1
এছাড়াও noah.org/wiki/Screen_notes# using_screen_as_a_serial_terminal এবং ম্যানুয়াল পৃষ্ঠা stty (1) দেখুন, এটির কাজ করার জন্য আমাকে অতিরিক্ত বিকল্প (যেমন প্যারিটি) যুক্ত করতে হয়েছিল।
লেকেনস্টেইন

3
লজ্জা বোধ করছি আমি টিএক্স /
আরএক্সকে

screenদুর্দান্ত, তবে আমি এটিকে সহজ বলে মনে করি না minicom:-)
সিরো সান্তিলি 新疆 改造 中心 法轮功 法轮功 六四

1
@ সিরোস্যান্টিলি 刘晓波 死 六四 事件 法轮功 - স্ক্রিনটি মিনিকোমের চেয়ে সহজ নাও হতে পারে কারণ আমি ইতিমধ্যে স্ক্রিনটি ব্যবহার করেছি, আমার পক্ষে স্ক্রিনের সাথে আমার সিরিয়াল জিনিসগুলি করা মিনিকোমের প্রয়োজনীয়তা পুরোপুরি বাদ দিয়ে দেওয়া কম জটিলতা।
ইয়েতি

48

পটভূমি

আপনার কোনও প্রোগ্রামের প্রয়োজন কেন minicomসিরিয়াল পোর্টের মাধ্যমে যোগাযোগ করা দরকার তার প্রধান কারণ হ'ল একটি সংযোগ শুরু করার আগে পোর্টটি সেট আপ করা দরকার । যদি এটি যথাযথভাবে সেট আপ না করা হয়, তবে আদেশগুলি catএবং echoআদেশগুলি আপনার পক্ষে তা করবে না যা আপনি প্রত্যাশা করেছিলেন। লক্ষ্য করুন যে একবার আপনি যখন কোনও প্রোগ্রাম চালান minicom, তখন minicomব্যবহৃত সেটিংসের সাথে বন্দরটি রেখে দেওয়া হবে । আপনি sttyপ্রোগ্রামটি ব্যবহার করে যোগাযোগের সেটিংসটি জিজ্ঞাসা করতে পারেন :

stty < /dev/ttyS0

আপনি যদি এটি সঠিকভাবে করেছেন; কম্পিউটার বুট করার পরে এবং minicom,যোগাযোগের সেটিংসের মতো অন্য কোনও প্রোগ্রাম চালানোর আগে তাদের ডিফল্ট সেটিংসে থাকবে। এগুলি সম্ভবত আপনার সংযোগ তৈরি করতে হবে তার চেয়ে আলাদা। এই পরিস্থিতিতে, কমান্ডগুলি catবা echoবন্দরে প্রেরণ করা হয় আবর্জনা তৈরি করবে বা কিছুতেই কাজ করবে না।

ব্যবহারের পরেstty আবার চালনা করুন , এবং আপনি প্রোগ্রামটি কী ব্যবহার করছেন সেটিতে সেটিংস সেট করা আছে তা আপনি লক্ষ্য করবেন।minicom

নূন্যতম সিরিয়াল যোগাযোগ

মূলত, সিরিয়াল পোর্টের মাধ্যমে দ্বি-মুখী যোগাযোগের জন্য দুটি জিনিস প্রয়োজন: ১) সিরিয়াল বন্দরটি কনফিগার করা, এবং ২) সিউডো-টিটি রিড রাইটিং খোলার জন্য।

আমি জানি যে সবচেয়ে বেসিক প্রোগ্রামটি এটি করে picocom। আপনি setserialপোর্ট সেট আপ করতে এবং তারপরে সরাসরি শেল থেকে এটির সাথে যোগাযোগ করার মতো একটি সরঞ্জাম ব্যবহার করতে পারেন ।


5
picocomএছাড়াও আপনাকে কোনও সিরিয়াল বন্দরে এটি পুনরায় কনফিগার না করে সংযোগ করতে দেবে ( --noinit) এবং সিরিয়াল পোর্ট কনফিগারেশনটি পুনরুদ্ধার না করে আপনাকে ছাড়তে দেবে ( --noresetবা ব্যবহার করতে Ctrl-A/ Ctrl-Qপ্রস্থান করতে picocom)। আমি picocomতুলনায় ব্যবহার করা অনেক সহজ বলে মনে করেছি minicom। যে কারণে আমি বুঝতে পারি নি, মিনিকোম কখনও কখনও এমন কোনও বন্দরে ডেটা প্রেরণ বা গ্রহণ করবে না যা মুহূর্তের আগে কাজ করেছিল বা সেই পিকোমের কোনও সমস্যা নেই। এটি সম্ভবত কিছু আরকান কনফিগারেশন বিকল্প, তবে যা-ই হোক না কেন আমি তা বুঝতে পারি না (এবং এই আচরণটি একাধিক মেশিনে ঘটেছে)।
মাইকেল বুড় 21

পিকোকমের জন্য +1! আমি দেখতে পেয়েছি যে সঠিক লাইন শেষ না করেই আমি সিরিয়াল ডিভাইসে কমান্ড লিখতে সক্ষম হইনি: আমার --omap crcrlf --echoবিকল্পগুলি ব্যবহার করতে হবে
ইউজার 2561747

24

UUCP সিস্টেমে ইনস্টল করা হলে, আপনি কমান্ড ব্যবহার করতে পারেন ছেদ , যেমন

 $ cu -l /dev/ttyS0 -s 9600

ব্যবহার ~^Dবা ~.প্রস্থান করার জন্য।
ইমান

24

আমি এখানে একটি শেল স্ক্রিপ্ট ব্যবহার করে এমন একটি সন্ধান পেয়েছি যা catব্যাকগ্রাউন্ড প্রক্রিয়া এবং কিছুক্ষণ লুপ হিসাবে ব্যবহার করে যা ব্যবহারকারীদের ইনপুট পড়ে এবং echoএটি বন্দরে চলে যায়। আমি এটিকে আরও সাধারণ হিসাবে পরিবর্তন করেছি এবং এটি আমার উদ্দেশ্যকে পুরোপুরি ফিট করে ted

#!/bin/sh

# connect.sh

# Usage:
# $ connect.sh <device> <port speed>
# Example: connect.sh /dev/ttyS0 9600

# Set up device
stty -F $1 $2

# Let cat read the device $1 in the background
cat $1 &

# Capture PID of background process so it is possible to terminate it when done
bgPid=$!

# Read commands from user, send them to device $1
while read cmd
do
   echo "$cmd" 
done > $1

# Terminate background read process
kill $bgPid

1
এছাড়াও, আমি নীচে একটি সামান্য পরিবর্তিত সংস্করণ তৈরি করেছি যা Ctrl + C এবং Ctrl + Z প্রেরণ করতে পারে।
ফ্রেটজ

@ ফ্রিটজ ভাল লাগছে! সুতরাং আমি যদি এই অধিকারটি পাই তবে পটভূমি প্রক্রিয়াটি কখনই মারা যায় না কারণ $? ঠিক কি কোনও কিছুতে প্রসারিত হবে বলে মনে হচ্ছে না?
iHattoregister

1
@ ihatetoregister: একদম সঠিক নয়। পটভূমি প্রক্রিয়াটি মারা যায়, তবে যে কারণে প্রত্যাশা করা যেতে পারে তা নয়। $?শেষ নন-ব্যাকগ্রাউন্ড কমান্ডের প্রস্থান কোডে প্রসারিত হয় (এই ক্ষেত্রে stty -F $1 $2), সুতরাং ত্রুটি না থাকলে এটি 0 এ প্রসারিত হয়। সুতরাং, শেষ পংক্তিতে পরিণত হয় kill 0যা পরিবর্তে বর্তমান শেল এবং তার সমস্ত শিশুদের হত্যা করবে বলে মনে হয় (এটি আমি বিশ্বাস করি ইন্টারেক্টিভ শেলগুলির মধ্যে এটি অন্যরকম আচরণ করে)। সমস্ত তথ্যের জন্য নীচের ব্যাখ্যাটি দেখুন: unix.stackexchange.com/questions/67532/…
ফ্রিটজ

1
Howerver, আপনার স্ক্রিপ্টের মধ্যে বাস্তব gotcha হয় যে পটভূমি প্রক্রিয়া হয় শুধুমাত্র নিহত যদি প্রেস Ctrl + d আপনার স্ক্রিপ্টটি শেষ করতে, কারণ শেষ হয় এমন whileলুপ পরিচ্ছন্ন। আপনি যদি এটি Ctrl + C বা killকমান্ড দিয়ে হত্যা করেন তবে catপ্রক্রিয়াটি জীবিত থাকে alive শেলটি প্রস্থান trapকরার kill $bgPidসময় আপনাকে কমান্ডটি ব্যবহার করতে হবে ঠিক করতে , নীচে আমার স্ক্রিপ্টটি নীচের মতো করে । সত্যিই, আপনি যদি আমার পোস্টটি আমার সর্বাগ্রে স্ক্রিপ্টে যোগ করেন তবে আমি কিছু মনে করব না। আমি এটি করার চেষ্টা করেছি, তবে সম্পাদনাটি প্রত্যাখ্যান করা হয়েছিল।
ফ্রিটজ

আপনার
উত্তরটিতে

14

ব্যবহার করে দেখুন http://tio.github.io

"টিও" হ'ল একটি সাধারণ টিটিওয়াই টার্মিনাল অ্যাপ্লিকেশন যা বেসিক ইনপুট / আউটপুট জন্য সহজেই টিটিওয়াই ডিভাইসে সংযোগ করার জন্য একটি সোজা কমান্ডলাইন ইন্টারফেসের বৈশিষ্ট্যযুক্ত।

সাধারণ ব্যবহার অপশন ছাড়াই। উদাহরণ স্বরূপ:

tio /dev/ttyS0

যা সাধারণত ব্যবহৃত বিকল্পগুলির সাথে মিলে যায়:

tio --baudrate 115200 --databits 8 --flow none --stopbits 1 --parity none /dev/ttyS0

এটি সমস্ত বিকল্পের জন্য পূর্ণ শেল অটো সমাপ্তির সমর্থন সহ আসে।


3
আমি ব্যবহার করছি msys2Windows এ এবং আপনার ইনস্টল করতে পারেন tioসঙ্গে pacman -S tioএটি ডিফল্ট দ্বারা উপলব্ধ প্যাকেজ মধ্যে কারণ। screen, picocomইত্যাদি নেই। ধন্যবাদ!
কোহনি রবার্ট

12

এই স্ক্রিপ্টটি অন্য উত্তরের উপর ভিত্তি করে তৈরি করা হয়েছে , তবে কেবলমাত্র একক আদেশ অনুসরণ না করে সিরিয়াল পোর্টের (Ctrl + Q বাদে) সমস্ত কিছু প্রেরণ করে Enter। এটি আপনাকে রিমোট হোস্টে Ctrl + C বা Ctrl + Z ব্যবহার করতে এবং অ্যাপটিটিউড বা আলসামিক্সারের মতো ইন্টারেক্টিভ "জিইউআই" প্রোগ্রামগুলি ব্যবহার করতে সক্ষম করে। এটি Ctrl + Q টিপে ছাড়তে পারেন।

#!/bin/bash

if [[ $# -lt 1 ]]; then
    echo "Usage:"
    echo "  femtocom <serial-port> [ <speed> [ <stty-options> ... ] ]"
    echo "  Example: $0 /dev/ttyS0 9600"
    echo "  Press Ctrl+Q to quit"
fi

# Exit when any command fails
set -e

# Save settings of current terminal to restore later
original_settings="$(stty -g)"

# Kill background process and restore terminal when this shell exits
trap 'set +e; kill "$bgPid"; stty "$original_settings"' EXIT

# Remove serial port from parameter list, so only stty settings remain
port="$1"; shift

# Set up serial port, append all remaining parameters from command line
stty -F "$port" raw -echo "$@"

# Set current terminal to pass through everything except Ctrl+Q
# * "quit undef susp undef" will disable Ctrl+\ and Ctrl+Z handling
# * "isig intr ^Q" will make Ctrl+Q send SIGINT to this script
stty raw -echo isig intr ^Q quit undef susp undef

# Let cat read the serial port to the screen in the background
# Capture PID of background process so it is possible to terminate it
cat "$port" & bgPid=$!

# Redirect all keyboard input to serial port
cat >"$port"

7

বিটিডাব্লু, পুট্টি প্যাকেজ (যা লিনাক্সে চলে) এর মধ্যে সিরিয়াল সমর্থন অন্তর্ভুক্ত রয়েছে।


4

আর একটি সমস্যা দেখা দিতে পারে তা হ'ল সিরিয়াল পোর্টটি অ্যাক্সেস করার জন্য আপনার ব্যবহারকারী অ্যাকাউন্টটিকে "ডায়ালআউট" গোষ্ঠীতে সেট করতে হবে।

sudo usermod -a -G dialout $USER

3

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

যদি অনুলিপিটির অভাবে কোনও সমস্যা হয় (এটি আমার জন্য) তবে # tail -f putty.logপুট্টিতে লগ ইন করুন এবং একটি স্ট্যান্ডার্ড টার্মিনাল উইন্ডোটি খুলুন এবং দ্বি-নির্দেশমূলক পাঠ্য স্ট্যান্ডার্ড কপিপস্টা ক্রিয়াকলাপের জন্য উপলভ্য।


1
আমি দেখতে পেলাম যে লিনাক্সের অধীনে পুট্টি "ক্লিপবোর্ড" (আপনি নিয়ন্ত্রণ-সি দিয়ে কী অনুলিপি করেছেন) পেস্ট করেন না, তবে এটি "প্রাথমিক নির্বাচন" (আপনি বর্তমানে কোনও প্রোগ্রামে যা বেছে নিয়েছেন) মধ্য-মাউসের সাহায্যে সন্নিবেশ করবে। একইভাবে আপনি প্রাথমিক নির্বাচনের সংজ্ঞা দিতে পুট্টির স্ক্রিনে অক্ষর নির্বাচন করতে পারেন। তবে যদি আমি কোনও পুটি স্ক্রীন থেকে কিছু ভিএম-তে স্থানান্তর করতে পাঠ্য চাই, তবে এটির ক্লিপবোর্ড হওয়া আমার দরকার, তাই আমাকে মূল নির্বাচন থেকে পাঠ্যটি গ্রহণ করতে একটি মধ্যস্থতাকারী প্রোগ্রাম ব্যবহার করতে হবে এবং তারপরে এটি ক্লিপবোর্ডে অনুলিপি করতে হবে।
কার্ডিফ স্পেস ম্যান

3

পূর্বে উল্লিখিত হিসাবে আপনি পিকোকম চেষ্টা করতে পারেন। "টার্মিনাল সার্ভার" সেট আপ করতে সর্বশেষতম প্রকাশ (2.0) এছাড়াও (নিরাপদে) ব্যবহার করা যেতে পারে যেহেতু এটি শেল কমান্ড ইঞ্জেকশনটির আর অনুমতি দেয় না। দেখা:

https://github.com/npat-efault/picocom/releases


2

এটি আপনি কী করতে চান তার উপর নির্ভর করে। আপনি কি টার্মিনাল থেকে ইন্টারেক্টিভভাবে শেল বা অ্যাপ্লিকেশনটি চালাতে চান, সিরিয়াল লাইনের উপর দিয়ে অন্য কম্পিউটারের সাথে সংযোগ স্থাপন করতে, সিরিয়াল বন্দর দিয়ে কোনও ডিভাইসের সাথে যোগাযোগ স্বয়ংক্রিয় করতে চান?

আপনি যদি দ্বি দিকনির্দেশক যোগাযোগ চান তবে আমি অনুমান করি আপনি টার্মিনালের কোনও মানুষের সাথে ইন্টারেক্টিভ কিছু চান। সিরিয়াল পোর্টের উপর একটি গেট্টি (1) সেশন সেট করে একটি সিরিয়াল পোর্টের উপর দিয়ে টার্মিনাল থেকে লগইনগুলি মঞ্জুরি দেওয়ার জন্য আপনি সিস্টেমটি কনফিগার করতে পারেন - গেটটি হ'ল একটি টার্মিনাল স্থাপন এবং এতে লগইন করার অনুমতি দেওয়ার সরঞ্জাম। কোনও ভিত্তিতে উপযুক্ত সিরিয়াল বন্দরে এটি চালানোর জন্য আপনার inittab (5) ফাইলটিতে একটি এন্ট্রি রাখুন respawn

আপনি যদি কোনও ডিভাইসে সংযোগ স্থাপন করতে এবং স্বয়ংক্রিয় দ্বিপক্ষীয় কথোপকথন শুরু করতে চান তবে প্রত্যাশা আপনাকে যা চান তা পাবেন কিনা তা আপনি দেখতে পারেন। ডান সমতা, বাড রেট এবং অন্যান্য প্রাসঙ্গিক সেটিংসে বন্দরটি কনফিগার করতে stty (1) ব্যবহার করুন ।

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

সিরিয়াল যোগাযোগ এবং টার্মিনাল I / O এর ইনস এবং আউটগুলি মোটামুটি জটিল; সিরিয়াল হোতোতে এই বিষয়টিতে আপনি জানতে চেয়েছিলেন তার চেয়ে বেশি আপনি পড়তে পারেন


1

আপনি একবার দেখতে চাইবেন

http://serialconsole.sourceforge.net

প্রো: মিনিকম বা picocom মত সুস্পষ্ট নিরাপত্তা সমস্যা নেই (যদি আপনি ব্যবহারকারীদের প্রবেশাধিকার, কোন সমস্যা শেল দান করার সময় একটি সমস্যা হবে না, কিন্তু আপনি সম্ভবত না আপনি একটি টার্মিনাল সার্ভার সেট আপ করতে চান তাহলে এক আছে ... )


1

আপনার ডিভাইসে সঠিক পঠন লেখার অনুমতি থাকতে হবে তা নিশ্চিত হওয়া দরকার, আপনি এটির সাথে এটি দেখতে পেলেন:

$ls -l /dev/[serial device]

আপনি যে স্ক্রিপ্টটি পেয়েছেন তার উপরে আমি নির্ভর করি এবং কিছু পরিবর্তন করেছি।

আমি এখন অবধি যে উন্নয়ন ব্যবস্থাগুলি ব্যবহার করেছি, তাদের প্রয়োজন ছিল:

  • কোন সমতা এবং
  • একটি স্টপ বিট

এই মানগুলি হ'ল স্ক্রিপ্টের ডিফল্ট মান।

সুতরাং সংযোগ করার জন্য, আপনি নিম্নলিখিত হিসাবে এটি সহজ ব্যবহার করতে পারেন:

./connect.sh /dev/[serial device] [baud speed]

উদাহরণ:

$./connect.sh /dev/ttyUSB0 19200

লিপি:

#!/bin/bash

# connect.sh


#Taken from example modified by: ihatetoregister
# On stack exchange, thread:
# http://unix.stackexchange.com/questions/22545/how-to-connect-to-a-serial-port-as-simple-as-using-ssh
# Modified by Rafael Karosuo <rafaelkarosuo@gmail.com>
#   - parity enabling and amount of stop bits
#   - no execution without minimum params
#   - exit code for stty
#   - bgPid fix, used $! instead of $? to take the PID of cat proc in background.
#   - exit command to end the program
#   - CR termination and strip of NL added by READ command, in order to make $cmd\r\n format instead of \n$cmd\n


# Usage:
# $./connect.sh <device> <port speed> [# Stop bits] [parity]

# Stop bits 1|2
# Parity even | odd

# If no last two params, then default values stopbits=1, parity=disab

# Example: 
# connect.sh /dev/ttyS0 9600 1 even, this will use 1 stop bit and even parity
# connect.sh /dev/ttyS0 9600, this will take default values for parity and stopbit


#Check if at least port and baud params provided
if [ -z "$1" ] || [ -z "$2" ]; then
    printf "\nusage: ./connect.sh <device> <port speed> [# Stop bits 1|2] [parity even|odd]\n\tNeed to provide at least port and baud speed parameters.\n\texample:connect.sh /dev/ttyS0 9600\n\n"
    exit 1;
else
    case "$3"   in
        2) stopb="cstopb";;
        *) stopb="-cstopb";;
    esac

    if [ "$4" = "even" ]; then
        par="-parodd"
    elif [ "$4" = "odd" ]; then
        par="parodd"
    else
        par="-parity"
    fi
    printf "\nThen stty -F $1 $2 $stopb $par\n";
fi

# Set up device
stty -F "$1" "$2" "$stopb" "$par" -icrnl

# Check if error ocurred
if [ "$?" -ne 0 ]; then
    printf "\n\nError ocurred, stty exited $?\n\n"
    exit 1;
fi

# Let cat read the device $1 in the background
cat -v "$1" &

# Capture PID of background process so it is possible to terminate it when done
bgPid="$!"

# Read commands from user, send them to device $1
while [ "$cmd" != "exit" ]
do
   read cmd
   echo -e "\x08$cmd\x0D" > "$1" #strip off the \n that read puts and adds \r for windows like LF

done

# Terminate background read process
kill "$bgPid"

পিএস: আপনার রিসিভার সিস্টেমটি কোন ধরণের লাইন ফিড ব্যবহার করছে তা আপনাকে জানতে হবে যেহেতু এটি নির্ধারণ করবে যে আমার ক্ষেত্রে আপনাকে কীভাবে কমান্ড প্রেরণ করতে হবে আমার এলএফ এর মতো একটি উইন্ডোজ দরকার ছিল, তার মানে আমাকে প্রেরণ করতে হবে

command\r

এএসসিআইআই মানসমূহ:

  • এলএফ: 0 এএইচ, লাইন ফিড "\ n"
  • সিআর: 0 ডিএইচ, কার্জিজ "\ r"
  • BS: 08 ঘন্টা, পিছনের স্থান "<-"

1
(1)  #!/bin/shযদি এটি ফাইলের প্রথম লাইন না হয় তবে তা উপেক্ষা করা হবে। (২) সিরিয়াসলি? আপনি ব্যবহার করছেন 1উল্লেখ করার এমনকি সমতা এবং 2নির্দিষ্ট করার বিজোড় ? (3) এটি কেবলমাত্র বাধ্যতামূলক নয়, সমস্ত পরামিতিগুলিকে নথিভুক্ত করে এমন একটি "ব্যবহার" বা "সহায়তা" বার্তা রাখা প্রচলিত । (4) আপনি সর্বদা আপনার শেল পরিবর্তনশীল রেফারেন্স উদ্ধৃত করা উচিত (যেমন, "$1", "$2", "$3", "$4", "$stopb", "$par", "$bgPid", এবং এমনকি "$?"এবং "$!"), যদি না আপনি না একটি ভাল কারণ আছে, এবং আপনি কি নিশ্চিতরূপে জানি তুমি কি করছ করছি।
স্কট

1

এটি ইতিমধ্যে এখানে উল্লেখ করা হয়নি, আমি এছাড়াও উল্লেখ করতে হবে socat- https://stackoverflow.com/questions/2899180/how-can-i-use-com-and-usb-port-within-cygwin আরও তথ্য :

socat `tty`,raw,echo=0 /dev/ttyS15,raw,echo=0,setsid,sane

অথবা

socat - /dev/ttyS15,raw,echo=0,setsid,sane

(যদিও, উইন্ডোজটিতে এমএসওয়াইএস 2 এর অধীনে এটি একবার চালানো শুরু হওয়ার পরে আমার সমস্যা ছিল )


1

কেন আমি ভাবছি কেউ কিছু উল্লেখ ser2net

উদাহরণ /etc/ser2net.conf:

3000:telnet:600:/dev/ttyUSB0:115200 8DATABITS NONE 1STOPBIT
3001:telnet:600:/dev/ttyUSB1:115200 8DATABITS NONE 1STOPBIT
3002:telnet:600:/dev/ttyUSB2:115200 8DATABITS NONE 1STOPBIT
3003:telnet:600:/dev/ttyUSB3:115200 8DATABITS NONE 1STOPBIT

সিরিয়াল পোর্টের সাথে আপনি যতটা সহজ সংযোগ করতে পারেন:

telnet localhost 3000

বা দূরবর্তীভাবে:

telnet <ip> 3000

অথবা এমনকি আপনার রাউটারে পোর্ট ফরওয়ার্ডিং সেট আপ করে এবং এটি ইন্টারনেটে উন্মোচিত করুন, যাতে আপনি যে কোনও জায়গা থেকে এটির সাথে সংযোগ স্থাপন করতে পারেন (আসুন সুরক্ষার সমস্যাগুলি এড়ানো যাক, আমি নমনীয়তার কথা বলছি)।


0

আর একটি সহজ বিকল্প হ'ল -Xপতাকা সহ মেশিনের ওপরে মেশিনটি অ্যাক্সেস করা এবং পুট্টি বা জিটিকিটার্মের মতো একটি প্রোগ্রাম চালানো।

তাই:

$ ssh -X <user>@<machine_address>

$ sudo apt-get install gtkterm (if not installed already)

$ gtkterm

এটি আপনার ক্লায়েন্ট পিসিতে গ্রাফিকাল ইন্টারফেসটি চালু করতে হবে এবং সেখান থেকে আপনি সিরিয়াল বন্দরটি অ্যাক্সেস করতে পারবেন যেন আপনি হোস্টে থাকবেন।

দাবি অস্বীকার: কেবল উবুন্টু মেশিন দিয়ে এটি ব্যবহার করে দেখুন। আমি অনুমান করছি যে এটি গ্রাফিক ইন্টারফেস ছাড়া মেশিনগুলির সাথে কাজ করবে না।

Ssh ম্যানুয়াল থেকে:

-এক্স

এক্স 11 ফরওয়ার্ডিং সক্ষম করে। এটি একটি কনফিগারেশন ফাইলে প্রতি হোস্ট ভিত্তিতেও নির্দিষ্ট করা যেতে পারে। X11 ফরওয়ার্ডিং সতর্কতার সাথে সক্ষম করা উচিত। দূরবর্তী হোস্টে (ব্যবহারকারীর এক্স অনুমোদনের ডাটাবেসের জন্য) ফাইল অনুমতিগুলি বাইপাস করার ক্ষমতা সম্পন্ন ব্যবহারকারীরা ফরোয়ার্ড সংযোগের মাধ্যমে স্থানীয় এক্স 11 ডিসপ্লে অ্যাক্সেস করতে পারবেন। একজন আক্রমণকারী তখন কীস্ট্রোক পর্যবেক্ষণের মতো ক্রিয়াকলাপ সম্পাদন করতে সক্ষম হতে পারে। এই কারণে, এক্স 11 ফরোয়ার্ডিং ডিফল্টরূপে X11 সুরক্ষা এক্সটেনশন বিধিনিষেধের শিকার হয়। আরও তথ্যের জন্য দয়া করে ssh -Y বিকল্পটি এবং ssh_config (5) এ ফরোয়ার্ড এক্স 11 ট্রাস্টেড নির্দেশিকা দেখুন।

-y

বিশ্বস্ত এক্স 11 ফরওয়ার্ডিং সক্ষম করে। বিশ্বস্ত এক্স 11 ফরওয়ার্ডিংগুলি এক্স 11 সুরক্ষা এক্সটেনশান নিয়ন্ত্রণের সাপেক্ষে নয়।

সুতরাং -Yসুরক্ষা যদি কোনও সমস্যা হয় তবে ব্যবহার করুন ।

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