도서(BOOK)
키트(KIT)
특판 상품
졸업작품&전자기초
응용모듈
전자부품
모터
기구
엔클로져
개인결제용
 
고객센터 게시판
자유게시판
MCU 통합 게시판
강좌-RaspberryPi
강좌-드론(쿼드콥터)
강좌-아두이노(기초)
강좌-아두이노(응용)
신제품/신기술 소개
DIY 공작 게시판
윤교수의 연구실 칼럼
 
 
 
1 python_iot 제어 & 통신 프..
 
 
2 자료실이용시 참고사항
 
 
3 2024년 갑진년 (甲辰年) 새..
 
 
4 사무실 이전 안내
 
 
5 2023 계묘년 새해 복 많이..
 
 
 
 
 
 
 ☎ : 02-776-4868

 F: 02-779-6757
이메일문의
 
☞ 평일(월~금) : 10~17시
☞ 주말, 공휴일 휴무
 
국민822437-04-008415
☞ 예금주 : 이민희(옴사(OHM사))
 
 
1 윤교수의 마이크로프로세서 월드
 
2 (주)석영브라이스톤
 

 
강좌-RaspberryPi
 
[RaspberryPi] 21. GPIO - 시리얼 통신 실험 2
 
 
2014/03/16 (15:26)
작성자 : samdori 조회수 : 10469
 

21. GPIO – 시리얼 통신 실험 2

 

이전 강좌에서는 라즈베리 파이의 시리얼 포트를 콘솔로 이용하는 실험을 해 보았다. 이번 강좌에서는 시리얼 라이브러리를 이용하여 시리얼 통신 실험을 하는 방법에 대해서 알아 보도록 하겠다. 이번 강좌에서도 역시 Gordon의 wiringPi 라이브러리를 이용하도록 하겠다.

 

wiringPi의 예제를 통해서 사용법을 알아 보도록 하자.

 

예제 파일이 있는 폴더로 이동 후에

 

pi@raspberrypi ~/wiringPi/examples $

 

예제를 로드 해 보자.

 

           $ nano serialRead.c

 

 

#include

#include

#include

 

#include

 

int main ()

{

  int fd ;

 

  if ((fd = serialOpen ("/dev/ttyAMA0", 115200)) < 0)

  {

    fprintf (stderr, "Unable to open serial device: %s\n", strerror (errno)) ;

    return 1 ;

  }

 

// Loop, getting and printing characters

 

  for (;;)

  {

    putchar (serialGetchar (fd)) ;

    fflush (stdout) ;

  }

}

 

 

시리얼 통신 관련 라이브러리를 이용하려면, 아래와 같이 사용자의 프로그램에 반드시 포함하도

록한다.

 

#include

중요한 함수 몇 개를 살펴보도록 하자.

 

l  int serialOpen(char *device, int baud);

 

이 시리얼 오픈 함수는 시리얼 포트를 열고(open) 초기화 하며, 속도(baud rate)를 설정하는 함수

이다. device는 “/dev/ttyAMA0”로 오픈 할 시리얼 포트를 지정하며,  baud는 통신 속도롤 지정

하면 된다. 리턴 값으로는 파일 디스크립터나 에러가 있을 경우 -1을 넘겨 준다.

 

l  int serialGetchar(int fd);

 

이 함수는 시리얼 포트에서 한 바이트를 받아서 리턴 해 주는 함수이다. fd는 시리얼 포트를 오픈

시에 리턴 된 파일 디스크립터이다.

 

           $ gcc –o serialRead serialRead.c –I/usr/local/include –L/usr/local/lib –lwiringPi

           $ sudo ./serialRead

 

위와 같이 빌드 후에 실행 시켜 본다.

본인은 Tera Term과 같은 시리얼 통신 프로그램을 사용하여, 동작 실험읗 해 볼 수있다. 실행 후

에 Tera Term에서 임의로 문자를 입력해 보면, 사용자의 콘솔에 입력된 문자가 출력되는 것을 볼

수 있다.

직접 빌드 후에 실행해 보고, 확인 해 보도록 하자. 시리얼 통신 프로그램은 사용자가 사용하고

있는 것은 뭐든 가능하다.

 

wiringPi에서 지원하는 다른 함수는 다음과 같다. 함수 이름으로 기능을 알 수 있으니 별도의 설

명은 안 하도록 하겠다.

 

l  void serialClose(int fd); // open했던 시리얼 포트를 닫는다.

l  void serialPutchar(int fd, unsigned char c);

l  void serialPuts(int fd, char *s);

l  void serialPrintf(int fd, char *message, ….);

l  void serialFlush(int fd); // 수신된 모든 데이터를 삭제한다.

                     
비밀번호 확인 닫기
 
 
 
 
 
 
[RaspberryPi] 21. GPIO - 시리얼 통신 실험 2 samdori 2014/03/16 10469
 


Copyright ⓒ 도서출판 옴사 All Rights Reserved. ☎ : 02-776-4868 ,F: 02-779-6757
상호명 : 옴사(OHM사) 사업장소재지 : 서울특별시 성북구 아리랑로 7길11,206호
사업자등록번호 : 416-18-31168 [사업자정보확인] 통신판매업신고번호 : 제2025-서울 성북-0591 호
대표 : 이민희 개인정보 보호 책임자 : 이민희