Linux下串⼝操作-嵌⼊式-C语⾔实现
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;()c语言是啥
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);
return0;
}
这样设置好了以后,串⼝的初始化基本就完成了。
3.⽤串⼝发送⼀串数据
利⽤串⼝发送⼀串数据,
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 ; }

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。