#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <termios.h>
#include <fcntl.h>
int main( void)
{
int fd;
// ํต์ ํฌํธ๋ฅผ ํ์ผ ๊ฐ๋
์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํ ๋์คํฌ๋ฆฝํฐ ์
๋๋ค.
// ์ด ํ์ผ ๋์คํฌ๋ฆฝํฐ๋ฅผ ์ด์ฉํ์ฌ ํ์ค ์
์ถ๋ ฅ ํจ์๋ฅผ ์ด์ฉํ ์ ์์ต๋๋ค.
struct termios newtio;
// ๋ณด์ค์จ์ด๋ stop bit ํฌ๊ธฐ ๋ฑ์ ์๋ฆฌ์ผ ํต์ ํ๊ฒฝ์ ์ค์ ํ๊ธฐ ์ํด
// termios ๊ตฌ์กฐ์ฒด๋ฅผ ์ ์ธํ์ต๋๋ค.
fd = open( "/dev/ttyS0", O_RDWR ยฆ O_NOCTTY ยฆ O_NONBLOCK );
// /dev/ttyS0๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด open()ํจ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
// O_RDWR์ ํ์ผ ๋์คํฌ๋ฆฝํฐ์ธ fd๋ฅผ ์ฝ๊ธฐ์ ์ฐ๊ธฐ ๋ชจ๋๋ก ์ด๊ธฐ ์ํ ์ง์ ์ด๋ฉฐ
// O_NOCCTY์ O_NONBLOCK๋ ์๋ฆฌ์ผ ํต์ ์ฅ์น์ ๋ง์ถ์ด ์ถ๊ฐํ์ต๋๋ค.
memset( &newtio, 0, sizeof(newtio) );
// ์๋ฆฌ์ผ ํต์ ํ๊ฒฝ ์ค์ ์ ์ํ ๊ตฌ์กฐ์ฒด ๋ณ์ newtio ๊ฐ์ 0 ๋ฐ์ดํธ๋ก ๊นจ๋์ด ์ฑ์๋๋ค.
newtio.c_cflag = B115200; // ํต์ ์๋ 115200
newtio.c_cflag ยฆ= CS8; // ๋ฐ์ดํฐ ๋นํธ๊ฐ 8bit
newtio.c_cflag ยฆ= CLOCAL; // ์ธ๋ถ ๋ชจ๋์ ์ฌ์ฉํ์ง ์๊ณ ๋ด๋ถ ํต์ ํฌํธ ์ฌ์ฉ
newtio.c_cflag ยฆ= CREAD; // ์ฐ๊ธฐ๋ ๊ธฐ๋ณธ, ์ฝ๊ธฐ๋ ๊ฐ๋ฅํ๊ฒ
newtio.c_iflag = 0; // parity ๋นํธ๋ ์์
newtio.c_oflag = 0;
newtio.c_lflag = 0;
newtio.c_cc[VTIME] = 0;
newtio.c_cc[VMIN] = 1;
tcflush (fd, TCIFLUSH );
tcsetattr(fd, TCSANOW, &newtio ); // ํฌํธ์ ๋ํ ํต์ ํ๊ฒฝ์ ์ค์ ํฉ๋๋ค.
write( fd, "forum.falinux.com", 17);
// ํ์ค ์
์ถ๋ ฅ ํจ์๋ฅผ ์ด์ฉํ์ฌ ์๋ฆฌ์ผ ํฌํธ๋ก 17์์ ๋ฌธ์์ด์ ์ ์กํฉ๋๋ค.
close( fd);
// ํต์ ํฌํธ๋ฅผ ๋ซ์ ์ฌ์ฉ์ ์ค์งํฉ๋๋ค.
return 0;
}