串口通信注释

嵌入式开发板到手后一般都会开放串口,对串口的操作可以说是最基本的操作,那么拿到开发板后怎样操作串口呢?怎样利用串口向外发送数据呢?

我做的是一个通过串口来发送一串字符,实现NBIot的传输,系统是linux系统下的,发送的数据需要是16进制的数据。以下是c语言开发串口的相关代码记录。

1.找到串口的设备号

在linux系统下,所有的设备都是文件,所以要先找到串口这个设备文件,之后就可以对这个串口进行操作。

#define UART_DEV “/dev/ttyAMA2”

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 ;
}

串口的基本操作就是读入读出了,关闭直接close即可。

作者:kingkill315
来源:CSDN
原文:https://blog.csdn.net/kingkill315/article/details/79400180
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值