bps와 baud
통신 속도를 말할 때, bbs 와 baud를 혼동하여 사용하는 경우가 많습니다만 차이점을 한번 짚고 넘어 가도록 하겠습니다. bps 는 bit per sec로 1초에 몇 bit를 전송할 수 있는 지를 말하며 baud 는 1초 동안 몇 번 변조를 했는가를 나타내는 말입니다. 초창기에는 이 값이 서로 같았습니다. 전송하는 변조 하나에 비트 하나를 전송했기 때문인데, 기술의 발달로 하나의 변조에 2개, 3개, 4개씩 비트를 전송하는 기술이 나오면서 차이가 생기기 시작했습니다.
데이터를 전송 또는 수신할 때, 아래와 같이 한번의 변조에 2개의 bit를 묶어서 전송 했다면 1200baud 통신이라고 하더라도 2400bps가 됩니다.
죽, 아래와 같이 bps 와 baud를 생각할 수 있겠습니다.
bps = baud * 한 번에 변조되는 비트 수
그러나 P.C. 통신에서는 bps와 baud를 혼동하여 사용해도 별 문제가 없었던 것은 시리얼 통신은 1개의 변조에 1개의 비트를 전송하기 때문에 bps와 baud 값이 서로 같습니다. 또한 모뎀을 사이에 두고 통신한다고 해도 내 PC가 상대 PC와 직접 통신하는 것이 아니라 실제로는 직접 연결된 모뎀하고의 시리얼 통신이기 때문입니다. 참고로 baud는 "보드"가 아니라 "보오"라고 읽으셔야 됩니다.
baud에는 아래와 같은 종류가 있습니다
110, 300, 120, 2400, 4800, 9600, 1440, 19200, 28800, 38400, 57600, 115200
통신 속도 결정
이제 프로그램에서 보오율을 결정해 보겠습니다. 시리얼 통신에 대한 모든 설정은 termios 구조체를 이용합니다. 이번 예제에는 termios 의 c_cflag 값을 수정하여 보오율을 지정해 주도록 하겠습니다.
int main( void)
{
int fd;
struct termios newtio;fd = open( "/dev/ttyS0", O_RDWR | O_NOCTTY | O_NONBLOCK );
memset( &newtio, 0, sizeof(newtio) );
tcflush (fd, TCIFLUSH );
newtio.c_cflag = B115200; // 통신 속도 115200
tcsetattr(fd, TCSANOW, &newtio );close( fd);
return 0;
}
태그: *시리얼 *serial *통신