반응형
termios
- POSIX Portable Operating System Interface for UNIX 의 약자 이며, ANSI/ISO 로는 리눅스/유닉스에서 API 제공이 부족하여 API 리눅스/유닉스 에서도 다양한 API 를 제공하기 위해 지원한다. termios 는 POSIX 에서 제공하는 구조체 이다.
- termios 를 사용함으로서 인터페이스를 설정 및 제어한다.
- 5가지의 기능인 (입력, 출력, 제어, 로컬, 특수문자) 가 있다.
tty 는 사용자와 시스템 간의 통신을 연결해 주는 역할을 한다.
#include <termios.h>
#define UART1_FILE "/dev/ttyO1"
struct termios termios;
int fd_uart1_drv1;
int rv;
fd_uart1_drv1 = open(UART1_FILE, O_RDWR | O_NOCTTY | O_NDELAY);
if(fd_uart1_drv1 <0)
tcgetattr(fd_uart1_drv1, &new_termio
new_termios.c_iflag &= ~(IGNBRK | BRKINT | ICRNL | INLCR | PARMRK | INPCK | ISTRIP | IXO
new_termios.c_oflag &= ~(OCRNL | ONLCR | ONLRET | ONOCR | OFILL | OLCUC | OPOS
new_termios.c_lflag &= ~(ECHO | ECHOE | ECHOKE | ECHONL | ICANON | IEXTEN | ISIG | ECHOK | ECHOCTL | ECHOPR
new_termios.c_cflag &= ~(CSIZE | PAREN
new_termios.c_cflag &= ~CRTSC
new_termios.c_cflag |= CS8 | CLOCAL | CRE
new_termios.c_cflag &= ~CBA
new_termios.c_cflag |= B115200; //B115200;//B38400;//B19200;//B115200; //B500000; // 2015.0
new_termios.c_iflag = IGNP
new_termios.c_oflag =
new_termios.c_cc[VMIN] =
new_termios.c_cc[VTIME] =
tcflush(fd_uart1_drv1, TCIFLUS
rv = tcsetattr(fd_uart1_drv1, TCSANOW, &new_termio
tcgetattr(fd_uart1_drv1, &new_termios);
위의 소스는 RS485 통신을 위한 인터페이스 제어 이다.
먼저 tty01 RS485를 open 하여 제어권을 획득한 후
tcgetattr 을사용하여 읽어온 tty 파일에 대한 tty 어트리뷰트를 포함하는 리스트를 반환 한다.
tcgetattr 의 기존 termios 를 가져온 후 flag 를 설정한다.
tcflush 를 사용하여 Queue 데이터를 초기화 한다.
tcsetattr 를 사용하여 flag 를 set 한다.
이로써 RS485 인터페이스 제어 설정을 마치겠다.
반응형
'C' 카테고리의 다른 글
[C언어] sram open 및 설정 (0) | 2021.03.29 |
---|---|
[C언어] 비버퍼링 버퍼링 파일 함수 open, fopen 등 (2) | 2021.03.29 |
[C언어] pthread_t 스레드 생성 sched_param 스레드 스케줄링 (1) | 2021.03.28 |
메모리 직접 접근 (0) | 2020.03.04 |