링크 ux 아래 직렬 통신 매개 변수 설정

5392 단어
다음으로 전송:http://blog.sina.com.cn/s/blog_690878d50101aion.html
링크 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) 로 설정 합 니 다.

좋은 웹페이지 즐겨찾기