সকেট সহ একটি সিরিয়াল ডিভাইসটি ছড়িয়ে দিন


3

আমি একটি বাহ্যিক সিরিয়াল ডিভাইসটির ছদ্মবেশ তৈরি করতে সোকাট ব্যবহার করার চেষ্টা করছি। আমি যদি এক টার্মিনালে এটি করি:

sudo socat -ddd -ddd PTY,raw,link=/dev/ttyS32,echo=0 READLINE

এবং আমার পাইথন সিরিয়াল ইন্টারফেস ক্লায়েন্টের এই সরলীকৃত সংস্করণটি অন্যটিতে চালান:

import serial
s = serial.Serial('/dev/ttyS32',baudrate=9600,timeout=1)
while True:
   s.write("query\n")
   resp = s.read()
   if resp: print(resp)

এটি প্রত্যাশার মতো কাজ করে: রিডলাইন সাক্ট টার্মিনাল প্রতি সেকেন্ডে একটি প্রাপ্ত 'ক্যোয়ারী' প্রিন্ট করে এবং আমি সেখানে যা লিখি তা ক্লায়েন্টের কাছে প্রেরণ করা হয় এবং মুদ্রিত হয়।

এখন আমার কাছে পাইথন প্রোগ্রাম রয়েছে যা সিরিয়াল ডিভাইসকে অনুকরণ করে:

#echo.py
n=0
while True:
    s = raw_input()
    if 'query' in s:
        print n
    n+=1

কমান্ড লাইন থেকে চালানোর সময় এটি উদ্দেশ্য হিসাবে কাজ করে: যখন আমি 'ক্যোয়ারী' টাইপ করি তখন এটি একটি কাউন্টার ছাপায়।

যখন আমি উভয় পক্ষকে এই কমন্ডের সাথে সংযুক্ত করার চেষ্টা করি তখন কাজ হয় না:

sudo socat -ddd -ddd PTY,raw,link=/dev/ttyS32,echo=0 EXEC:"python echo.py"

এই ক্ষেত্রে পাইথন ক্লায়েন্ট বা সোকাট উইন্ডো কোনও ডেটা দেখায় না।
আমি কি ভুল করছি? আমি কীভাবে ইকো.পিসির স্ট্ডিন এবং পেসুডো টিটির সাথে স্টডআউট লিঙ্ক করব যাতে আমি এটি সিরিয়াল ডিভাইসের মতো পড়তে / লিখতে পারি?

(যদিও আমি উদাহরণটিতে পাইথন ব্যবহার করছি, সি-তে লেখা এমুলেটর নিয়ে আমারও একই সমস্যা রয়েছে)

উত্তর:


2

এটা চেষ্টা কর:

sudo socat -ddd -ddd PTY,raw,echo=0 "EXEC:'python /tmp/echo.py',pty,raw,echo=0"

(কোনও কারণে এটি আমার কাছে লিঙ্কটি উল্লেখ করা পছন্দ করে না = তবে উপরের শর্ত রয়েছে /dev/pts/6যাতে আমি দৌড়েছি:

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