シリアルポートからデータを取得するにはどうすればよいですか?


12

私が持っているCiseco XRF無線モジュールスライスパイの拡張ボードを。

プログラム 'screen'を使用すると正常に機能します。XRFモジュールに送信されるデータを見ることができます。

シリアルポートからデータを取得するにはどうすればよいですか?perlを試しましたが、何も読みませんでした。


2
こんにちはGerard、Raspberry Pi.SEへようこそ。正しいリンクを追加したことを確認できますか?
アレックスチェンバレン

はい。ちょうど仕事
-user518

すでにコードはありますか?特定の問題は何ですか。シリアルからデータをまったく読み取ることも、Pythonで読み取ることもできませんか?
ピョートルクラ

@ppumkin彼は、シリアルポートからデータを取得する方法を知りたいと思っています。

回答:


5

Piではこれを試していませんが、pythonを使用してBeagle Boneのシリアルポートにアクセスします。Pythonシリアルは次を使用してインストールできます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を必要なボーレートに置き換えます。responseは、シリアルポートによって返される行を含む配列になります。

python APIの詳細については、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を確認して、デバイスがpiに接続されたらデバイス名を見つけます。ttyUSB0USBをシリアルコンバーターに接続する場合が考えられます。


4
これはPhilの投稿に対するコメントであるという意味ですか?もしそうなら変換できます。
ラムブリンジャン

0

C#で使用し、Monoで実行する例

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#専用であると付け加えました。bash C / C ++ではありません。率直に言って、コードは非常に曖昧であり、不適切なコーディング手法を使用しています... コンソールではなくWindowsフォーム用であるため、まだ+1に値しません。
ピョートルクラ

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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.