링크 ux 아래 직렬 통신 매개 변수 설정
링크 ux 아래 직렬 통신 매개 변수 설정
저자: 바다 처럼 세차 게 뛰어다니다
6.7.2 직렬 통신 매개 변수 설정
직렬 통신 매개 변 수 는 포트 율, 데이터 비트, 패 리 티 검사 위치 와 정지 위 치 를 말한다.직렬 포트 를 제어 할 때 도 termio 구조 체 를 사용 해 야 한다.다음은 구체 적 인 코드 와 결합 하여 이 매개 변 수 를 어떻게 설정 하 는 지 설명 할 것 이다.
1. 포트 율 설정
포트 포트 포트 레이트 정 보 를 얻 는 것 은 cfgetispeed 함수 와 cfgetospeed 함 수 를 통 해 이 루어 집 니 다.cfgetispeed 함 수 는 구조 체 termios 획득 에 사 용 됩 니 다.p 의 입력 포트 율 정보, cfgetospeed 함 수 는 구조 체 termios 획득 에 사 용 됩 니 다.p 의 출력 포트 율 정보.이 두 함수 의 구체 적 인 정 보 는 표 6.9 와 같다.
표 6.9 cfgetispeed 함수 와 cfgetospeed 함수
헤더 파일
함수 형식
speed_t cfgetispeed(const struct termios *termios_p); speed_t cfgetospeed(const struct termios *termios_p);
반환 값
성공 하 다.
실패 하 다.
errno 설정 여부
테 르 미 오 스 로 돌아 가기p 구조의 입 출력 포트 의 포트 율
?1
예.
cfsetispeed 함수 와 cfsetospeed 함 수 는 포트 의 입 출력 포트 율 을 설정 하 는 데 사 용 됩 니 다.일반적으로 입 출력 포트 율 은 같다.cfsetispeed 함수 와 cfsetospeed 함수 의 함수 성명 정 보 는 표 6.10 과 같다.
표 6.10 cfsetispeed 함수 와 cfsetospeed 함수
헤더 파일
함수 형식
int cfsetispeed(struct termios *termios_p, speed_t speed); int cfsetospeed(struct termios *termios_p, speed_t speed);
반환 값
성공 하 다.
실패 하 다.
errno 설정 여부
테 르 미 오 스 로 돌아 가기p 구조의 입 출력 포트 의 포트 율
?1
예.
cfsetispeed 함수 와 cfsetospeed 함 수 는 구조 체 termios 를 수정 합 니 다.p 의 포트 율 정 보 는 매개 변수 speed 는 표 6.11 에 열 거 된 매크로 를 사용 할 수 있 습 니 다.
표 6.11 speed 매개 변수 상용 포트 율 정보
거대 하 다. 정 하 다 의리
포트 율 (단위: bit / s)
거대 하 다. 정 하 다 의리
포트 율 (단위: bit / s)
B0
0
B1800
1800
B50
50
B2400
2400
B75
75
B4800
4800
B110
110
B9600
9600
B134
134
B19200
19200
B150
150
B38400
38400
B200
200
B57600
57600
B300
300
B115200
115200
B600
600
B230400
230400
B1200
1200
cfsetispeed 함수 와 cfsetospeed 함 수 를 사용 하여 직렬 포트 레이트 설정 구체 적 인 코드 는 다음 과 같 습 니 다.
#include //
#include
#include < termios.h >
……
struct termios opt;
……
// termios tcgetattr(fd, &Opt); // , cfsetispeed(&opt,B9600 );
cfsetospeed(&opt,B9600);
// termios tcsetattr(fd,TCANOW,&Opt);// ,
……
2. 데이터 비트
데이터 비트 는 바이트 마다 실제 데이터 가 차지 하 는 비트 수 를 말한다.데이터 위 치 를 수정 하려 면 termios 구조 체 중 c 를 수정 할 수 있 습 니 다.cflag 멤버 가 이 루어 집 니 다.CS5, CS6, CS7, CS8 은 각각 데이터 비트 가 5, 6, 7, 8 임 을 나타 낸다.주의해 야 할 것 은 데이터 위 치 를 설정 할 때 CSIZE 를 사용 하여 위치 차단 을 해 야 한 다 는 것 이다.구체 적 인 설정 코드 는 다음 과 같다.
#include //
#include
#include < termios.h >
……
struct termios opt;
.......
// : 。 termios
tcgetattr(fd, &Opt);
…
// Opt.c_cflag&=~CSIZE; // 8bit Opt.c_cflag |=CS8; …
// : 。 termios
tcsetattr(fd,TCANOW,&Opt);
……
3. 패 리 티 검사 위치
패 리 티 검 사 는 패 리 티 검사, 기 검사, 빈 칸 등 방식 을 선택 할 수도 있 고 검증 을 사용 하지 않 을 수도 있 습 니 다.짝 짓 기 검사 로 설정 하려 면 먼저 termios 구조 체 중 ccflag 는 PARENB 로 고 를 설정 하고 PARODD 로 고 를 제거 합 니 다.기이 한 검 사 를 설정 하려 면 termios 구조 체 중 c 를 동시에 설정 해 야 합 니 다.cflag 는 PARENB 로고 와 PARODD 로 고 를 설정 합 니 다.어떤 검사 도 사용 하지 않 으 려 면 termios 구조 체 에서 c 를 제거 하 십시오.cflag 의 PARENB 자리.표 6.12 는 패 리 티 검 사 를 설정 하 는 구체 적 인 방법 이다.
표 6.12 패 리 티 검사 위치 설정
설치 하 다. 두다
구비 하 다 몸. 대신 야드.
검사 없 음
opt.c_cflag &= ~PARENB;
기이 한 검사
opt.c_cflag |= (PARODD | PARENB);
짝수 검사
opt.c_cflag &= ~ PARENB; opt.c_cflag &= ~PARODD;
스페이스 바
opt.c_cflag &= ~PARENB; opt.c_cflag &= ~CSTOPB;
다음은 직렬 통신 의 패 리 티 검 사 를 패 리 티 검사 로 설정 하 는 예 를 드 립 니 다. 구체 적 인 코드 는 다음 과 같 습 니 다.
#include //
#include
#include < termios.h >
……
struct termios opt;
……
// termios
tcgetattr(fd, &Opt);
…
opt.c_cflag &= ~ PARENB;
opt.c_cflag &= ~PARODD;
…
// termios
tcsetattr(fd,TCANOW,&Opt);
……
4. 데이터 흐름 제어
데이터 흐름 제 어 는 어떤 방법 으로 데이터 전송의 시작 과 끝 을 표시 하 는 지 를 말한다.데이터 흐름 제어 없 이 하드웨어 를 사용 하여 흐름 제어 와 소프트웨어 를 사용 하여 흐름 제 어 를 할 수 있 습 니 다.데이터 흐름 제어 설정 은 표 6.13 과 같다.
표 6.13 데이터 흐름 제어 설정
설치 하 다. 두다
구비 하 다 몸. 대신 야드.
데이터 흐름 제어 사용 하지 않 음
opt.c_cflag &= ~CRTSCTS
하드웨어
opt.c_cflag |= CRTSCTS
소프트웨어.
opt.c_cflag | = IXON|IXOFF|IXANY
하드웨어 흐름 제 어 를 사용 하려 면 상응하는 연결 케이블 (즉 RTS, CTS 의 두 선 이 연결 되 어야 하기 때문에) 을 사용 해 야 하기 때문에 자주 사용 하 는 흐름 제어 방법 은 소프트웨어 를 사용 하여 흐름 제 어 를 해 야 한다 (하드웨어 흐름 MS 가 더 크 지만 소프트웨어 흐름 이 더 자주 사용 된다).데이터 흐름 제 어 를 사용 하지 않 는 관련 코드 를 설정 합 니 다.
#include //
#include
#include < termios.h >
……
struct termios opt;
……
// termios
tcgetattr(fd, &opt);
…
opt.c_cflag &= ~CRTSCTS…
/ / 수 정 된 termios 데 이 터 를 직렬 포트 에 tcsetattr (fd, TCANOW, & Opt) 로 설정 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.