본문 바로가기

라즈베리파이

라즈베리파이 UART loopback 테스트 - C, Python 구현

반응형



라즈베리파이 UART loopback 테스트 - C언어 구현


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <stdio.h>
#include <string.h>
#include <errno.h>
 
#include <wiringPi.h>
#include <wiringSerial.h>
 
int main()
{
    int ser , x;
    char *pstr = "Hello World!";
    char *ptmp;
    if ((ser = serialOpen ("/dev/ttyAMA0"9600)) < 0)
    {
        fprintf (stderr, "Unable to open serial device: %s\n", strerror (errno)) ;
        return 1 ;
    }
 
    if (wiringPiSetup () == -1)
    {
        fprintf (stdout, "Unable to start wiringPi: %s\n", strerror (errno)) ;
        return 1 ;
    }
    for(x = 0; x < 10; x++){
        ptmp = pstr;
        while(*ptmp){
             serialPutchar (ser, *ptmp) ;
             ptmp++;
        }
        delay(50);
 
        printf ("Receive:");
        while (serialDataAvail (ser))
        {
            printf ("%c", (char)serialGetchar (ser)) ;
            fflush (stdout) ;
        }
        printf ("\n");
    }
    return 0;
}


라즈베리파이 UART loopback 테스트 - Python 구현


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/usr/bin/env python
 
import serial, time 
import RPi.GPIO as GPIO
 
#루프백 테스트에 사용할 UART용 가상 파일 ttyAMA0(ttyS0)를 연다.
if(GPIO.RPI_REVISION < 3):
  ser = serial.Serial(port = "/dev/ttyAMA0", baudrate=9600, timeout=2)
else:
  ser = serial.Serial(port = "/dev/ttyS0", baudrate=9600, timeout=2)
    
if (ser.isOpen() == False):
    ser.open()
#만약 ttyAMA0에 데이터가 남아있으면 비우고 새로 시작한다.
ser.flushInput()
ser.flushOutput()
 
packet = "Hello World!"
try:
    while(True): 
        ser.flushInput()
        ser.flushOutput()
        print "Send:", packet
        #패킷을 보낸다.
        ser.write(packet)
        time.sleep(0.05)
        #루프백을 통해 다시 들어온 패킷을 읽는다.
        data = ser.read(ser.inWaiting())
        print "Receive:", data
 
except (KeyboardInterrupt, SystemExit):
    print("Exit...")
 
finally:
    ser.close()
print "Good by!"
 


이미지 출처: Raspberry Pi UART Communication using Python and C https://www.electronicwings.com/raspberry-pi/raspberry-pi-uart-communication-using-python-and-c

반응형