मुझे सीरियल पोर्ट से डेटा कैसे मिलेगा?


12

मेरे पास एक सिसेको एक्सआरएफ रेडियो मॉड्यूल और एक स्लाइस ऑफ पीआई विस्तार बोर्ड है।

कार्यक्रम का उपयोग करके 'स्क्रीन' ठीक काम करता है; मैं डेटा को एक्सआरएफ मॉड्यूल को प्रेषित करता हुआ देख सकता हूं।

मुझे सीरियल पोर्ट से डेटा कैसे मिलेगा, इसलिए मैं इस पर कुछ प्रोसेसिंग कर सकता हूं? मैंने बहुत कोशिश की लेकिन यह कुछ भी नहीं पढ़ा।


2
हाय जेरार्ड, रास्पबेरी Pi.SE में आपका स्वागत है। क्या आप देख सकते हैं कि मैंने सही लिंक जोड़े हैं?
एलेक्स चैम्बरलेन

हाँ। बस नौकरी
user518

क्या आपके पास पहले से कोई कोड है? विशिष्ट समस्या क्या है आप सीरियल से या अजगर से डेटा नहीं पढ़ सकते हैं?
पायोटर कुला

@ppumkin वह जानना चाहता है कि सीरियल पोर्ट से डेटा कैसे प्राप्त किया जाए।

जवाबों:


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

Pi पर सीरियल पोर्ट का नाम है: 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

C # के साथ उपयोग करने और मोनो के साथ चलाने के लिए एक उदाहरण

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/


मैंने कहा कि यह केवल C # के लिए है। C / C ++ को न काटें। स्पष्ट रूप से कोड बहुत अस्पष्ट है और खराब कोडिंग प्रथाओं का उपयोग करता है ... लेकिन यह ठीक काम करना चाहिए। केवल अभी तक +1 के लायक नहीं है क्योंकि यह Win Forms के लिए है न कि कंसोल के लिए।
पायोत्र कुल

0

कुछ Pi के सीरियल पोर्ट पर / dev / ttyS0 है, दूसरों पर यह / dev / ttyAMA0 है, यदि आप USB एडेप्टर का उपयोग कर रहे हैं तो यह / dev / ttyUSB0 हो जाता है, यह एक संपूर्ण सूची नहीं है।

BaSH प्रॉम्प्ट पर आप टाइप कर सकते हैं

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

C में आप कर सकते हैं

#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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.