컴퓨터/프로그래밍

C언어 시리얼 통신 브레이크(break) 신호 전송 방법

2022. 6. 25. 12:53

C tcsendbreak() 시리얼 통신 break 신호 전송 함수

시리얼 통신에서 브레이크(break) 신호를 보내려면 tcsendbreak() 함수를 사용하면 됩니다. 상대 쪽에서 break 신호를 주었을 때 수신 버퍼에 0x00이 있어서 0x00을 보내면 break 신호가 전송되는 줄 아는 분이 계시더군요. 이미지나 동영상처럼 바이너리 파일을 전송할 경우 0x00이 있을 수 있는데, 그때마다 break 신호가 발생해서는 안 되겠지요.

  • 헤더 : termios.h
  • 형태:  int tcsendbreak(int fd, int duration)
  • 인수: int fd 시리얼 포트와 연결된 파일 디스크립트
    int duration 전송 시간
  • 반환: 0 == 성공, -1 == 실패 및 errno에 에러코드 대입

int duration  전송 시간은 0일 경우 0.25초에서 0.5초 이내로 0 값의 비트를 전송합니다. 0이 아닌 경우는 정의된 시간만큼 전송한다고 하는데, 자세한 내용은 찾지 못했습니다.

C tcsendbreak() 예제

#include <termios.h>

fd = open( dev_name, O_RDWR ¦ O_NOCTTY );
       
       :
             
tcsendbreak( fd, 0);