সিরিয়াল বন্দর থেকে আমি কীভাবে ডেটা পেতে পারি?


12

আমার কাছে সিসেকো এক্সআরএফ রেডিও মডিউল এবং পাই স্লাইস অফ পাই এক্সপেনশন বোর্ড রয়েছে।

প্রোগ্রামটি 'স্ক্রিন' ব্যবহার করে ভাল কাজ করে; আমি এক্সআরএফ মডিউলে ডেটা সংক্রমণ হচ্ছে দেখতে পাচ্ছি।

সিরিয়াল বন্দর থেকে আমি কীভাবে ডেটা পেতে পারি, তাই আমি এতে কিছু প্রক্রিয়াজাত করতে পারি? আমি পার্ল চেষ্টা করেছিলাম তবে এটি কিছুই পড়েনি।


2
হাই জেরার্ড, রাস্পবেরি পাই.এসইতে স্বাগতম আপনি কি সঠিক লিঙ্কগুলি যুক্ত করেছেন তা পরীক্ষা করতে পারেন?
অ্যালেক্স চেম্বারলাইন

হ্যাঁ.
সবেমাত্র

আপনার কি ইতিমধ্যে কোনও কোড আছে? নির্দিষ্ট সমস্যা কি। আপনি সিরিয়াল থেকে ডেথটি আদৌ বা পাইথনে পড়তে পারবেন না?
পাইটর কুলা

@ পিপমকিন তিনি জানতে চান কীভাবে সিরিয়াল বন্দর থেকে ডেটা পাবেন।

উত্তর:


5

আমি এটি পাইতে চেষ্টা করি নি, তবে আমি একটি বিগল হাড়ের সিরিয়াল পোর্টটিতে অজগর ব্যবহার করি। পাইথন সিরিয়াল ব্যবহার করে ইনস্টল করা যেতে পারেsudo apt-get install python-serial

তারপরে আপনি নিম্নলিখিত কোড স্নিপেট ব্যবহার করতে পারেন:

import serial
serialport = serial.Serial("/dev/ttyS0", 9600, timeout=0.5)
serialport.write("What you want to send")
response = serialport.readlines(None)
print response

স্পষ্টতই "/ dev / ttyS0" এর পরিবর্তে সিরিয়াল বন্দরটির নাম এবং 9600 আপনার প্রয়োজনীয় বাড রেট দিয়ে। প্রতিক্রিয়া এমন সিরিজের পোর্ট দ্বারা ফিরে আসা লাইনগুলি সমেত একটি অ্যারে হবে।

পাইথন এপিআইয়ের আরও বিশদটি পাওয়া যাবে http://pyserial.sourceforge.net/ এ


3

পাইতে সিরিয়াল বন্দরের নাম: ttyAMA0(*)

সুতরাং আমার কোডটি হ'ল:

import serial
serialport = serial.Serial("/dev/ttyAMA0", 9600, timeout=0.5)
serialport.write("My string output to serial port")
response = serialport.readlines(None)
print response 

(*) dmesgডিভাইসটির নাম পাইয়ের সাথে সংযুক্ত হয়ে গেলে এটি খুঁজে বার করার জন্য আউটপুটটি পরীক্ষা করে দেখুন । ttyUSB0আপনি সিরিয়াল রূপান্তরকারী একটি ইউএসবি সংযুক্ত যদি এটি হতে পারে ।


4
আপনি কি ফিল এর পোস্টে একটি মন্তব্য বলে বোঝাতে চেয়েছিলেন? আমি যদি তা হয় তা রূপান্তর করতে পারেন।
রামব্লিজান

0

সি # এর সাথে ব্যবহার করার জন্য এবং মনোোর সাথে চালানোর একটি উদাহরণ

private _serialPort = null;

privatevoid Form1_Load(object sender, EventArgs e)
{
  _serialPort = new SerialPort(“COM1″, 9600, Parity.None, 8);
  _serialPort.DataReceived += new        
  SerialDataReceivedEventHandler(_serialPort_DataReceived);
  _serialPort.Open();
}

void _serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
  string data = _serialPort.ReadExisting();
  // do something with your data, you will need to invoke a delegate to update the UI
}

এটি ডেটা পেতে খুব সহজ কোড

http://susheelonline.com/communication-with-serial-post/


আমি যোগ করেছি যে এটি কেবল সি # এর জন্য। বাশ সি / সি ++ নয়। প্রকৃতপক্ষে কোডটি খুব অস্পষ্ট এবং খারাপ কোডিং অনুশীলনগুলি ব্যবহার করে ... তবে এটি ঠিকভাবে কাজ করা উচিত। এখনও একটি +1 প্রাপ্য নয় কারণ এটি উইন ফর্মগুলির জন্য এবং কনসোলের জন্য নয়।
পাইওটর কুলা

0

কিছু পাই এর সিরিয়াল বন্দরটি হল / dev / ttyS0, অন্যদের উপর এটি / dev / ttyAMA0 হয়, আপনি যদি কোনও ইউএসবি অ্যাডাপ্টার ব্যবহার করেন তবে এটি / dev / ttyUSB0 হয়ে যায়, এটি কোনও বিস্তৃত তালিকা নয়।

বাএসএইচ প্রম্পটে আপনি টাইপ করতে পারেন

echo -en "my text\n" > /dev/ttys0  ## write to serial
cat /dev/ttyS0                     ## read from serial

সি আপনি করতে পারেন

#include <stdio.h>
char  reply[32];                                // response storage
FILE*  fd = fopen("/dev/ttyS0", "rb");          // open Serial
fprintf(fd, "request\n");                       // write serial
fread(reply, sizeof(char), sizeof(reply), fd);  // read serial
printf("response: %s\n", reply);                // display result
fclose(fd);                                     // close serial
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.