1.找到串口的設備號
在linux系統下,所有的設備都是文件,所以要先找到串口這個設備文件,之后就可以對這個串口進行操作。
#define UART_DEV "/dev/tty*" ///dev/tty**串口號
2.打開串口並初始化串口
串口的打開只需要一個open函數就可以打開,下面有一個初始化的函數,先將串口打開,如果打開成功,會返回一個設備描述符
int uart_init(void ) { int fd=0; fd = open(UART_DEV , O_RDWR|O_NOCTTY|O_NDELAY, 0); if (fd < 0) { printf("open error!\n"); return -1; } set_opt(fd); return fd; }
set_opt函數用於設置串口的相關基本參數,一般串口都會設置波特率什么的,其余的參數可以用到的時候再查詢是什么意思,set_opt函數的定義如下:
int set_opt(int fd) { struct termios old_cfg, new_cfg; tcgetattr(fd, &new_cfg); new_cfg.c_cflag |= (CLOCAL | CREAD); cfsetispeed(&new_cfg, B9600);//設置波特率 cfsetospeed(&new_cfg, B9600); new_cfg.c_cflag &= ~CSIZE; new_cfg.c_cflag |= CS8; new_cfg.c_cflag &= ~PARENB; new_cfg.c_cflag &= ~CSTOPB; new_cfg.c_cc[VTIME] = 0; new_cfg.c_cc[VMIN] = 0; tcflush(fd,TCIFLUSH); tcsetattr(fd, TCSANOW, &new_cfg); return 0; }
這樣設置好了以后,串口的初始化基本就完成了。
3.用串口發送一串數據
利用串口發送一串數據,write
int uart_send( int fd, char * str) { int wr_num; char buf[1024]; sprintf(buf, "%s", str); wr_num = write(fd,buf,strlen(buf)); close(fd); return wr_num; }
4.讀出串口接收到的數據,read
int uart_recv(int fd) { int nread; char buf[1024]; nread = read(fd, buf, LEN); if(nread > 0) { printf("%s\n",buf); } close(fd); return nread ; }