직렬 포트에서 데이터를 가져 오려면 어떻게합니까?


12

나는이 Ciseco XRF 라디오 모듈슬라이스 파이의 확장 보드를.

'스크린'프로그램을 사용하면 정상적으로 작동합니다. XRF 모듈로 데이터가 전송되는 것을 볼 수 있습니다.

직렬 포트에서 데이터를 가져 와서 처리 할 수 ​​있습니까? 나는 펄을 시도했지만 아무것도 읽지 않았다.


2
안녕하세요 Gerard, Raspberry Pi.SE에 오신 것을 환영합니다. 올바른 링크를 추가했는지 확인할 수 있습니까?
Alex Chamberlain

예. 그냥 직업
user518

이미 코드가 있습니까? 구체적인 문제는 무엇입니까? 직렬 또는 파이썬으로 데이터를 읽을 수 없습니까?
Piotr Kula

@ppumkin 그는 직렬 포트에서 데이터를 얻는 방법을 알고 싶어합니다.

답변:


5

나는 이것을 Pi에서 시도하지 않았지만 파이썬을 사용하여 Beagle Bone의 직렬 포트에 액세스합니다. 파이썬 시리얼은 다음을 사용하여 설치할 수 있습니다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을 필요한 전송 속도로 바꾸십시오. 응답은 직렬 포트에 의해 리턴되는 행을 포함하는 배열입니다.

파이썬 API에 대한 자세한 내용은 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 

(*) dmesgpi에 연결된 장치 이름을 찾으 려면 출력을 확인하십시오 . ttyUSB0직렬 변환기에 USB를 연결 한 경우 일 수 있습니다 .


4
이것이 Phil의 게시물에 대한 의견이 되었습니까? 그렇다면 변환 할 수 있습니다.
ramblinjan

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 # 전용이라고 덧붙였다. C / C ++를 강타하지 않습니다. 솔직히 코드는 매우 모호하며 잘못된 코딩 방법을 사용하지만 잘 작동합니다. 콘솔이 아닌 Win Forms를위한 것이기 때문에 +1을받을 자격이 없습니다.
Piotr Kula 2016 년

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.