나는이 Ciseco XRF 라디오 모듈 과 슬라이스 파이의 확장 보드를.
'스크린'프로그램을 사용하면 정상적으로 작동합니다. XRF 모듈로 데이터가 전송되는 것을 볼 수 있습니다.
직렬 포트에서 데이터를 가져 와서 처리 할 수 있습니까? 나는 펄을 시도했지만 아무것도 읽지 않았다.
나는이 Ciseco XRF 라디오 모듈 과 슬라이스 파이의 확장 보드를.
'스크린'프로그램을 사용하면 정상적으로 작동합니다. XRF 모듈로 데이터가 전송되는 것을 볼 수 있습니다.
직렬 포트에서 데이터를 가져 와서 처리 할 수 있습니까? 나는 펄을 시도했지만 아무것도 읽지 않았다.
답변:
나는 이것을 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/ 을 참조 하십시오.
파이의 직렬 포트 이름은 다음과 같습니다. 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에 연결된 장치 이름을 찾으 려면 출력을 확인하십시오 . ttyUSB0
직렬 변환기에 USB를 연결 한 경우 일 수 있습니다 .
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
}
이것은 데이터를 얻는 매우 간단한 코드입니다
일부 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