Linux串口获取实时数据(linux串口接收数据)
由于Linux下支持串口通信,所以很多串口通信任务都是在Linux系统上执行。获取实时数据也不例外,下面介绍Linux下通过串口获取实时数据的方法。
1. 首先,你需要确认你的电脑中有一个可以使用的串口口。Linux系统中,串口口的文件一般位于/dev/开头,如查看你的电脑是否有串口口,可以在命令行输入:
“`bash
$ ls /dev/tty*
“`
若返回/dev/ttyS*类似文件若返回,就表明有串口可以使用。
2. 然后需要去获取实现数据传输的程序,几乎任何一种编程语言只要支持Linux系统都可以实现串口数据收发,本文以C语言为例,编写Linux下发送接收数据的函数:
“`c
#include
#include
#include
#include // POSIX标准设备控制函数
int open_port(char* portname)
{
int fd; // 串口描述符
fd=open( portname, O_RDWR| O_NOCTTY| O_NDELAY );
if(-1 == fd){
return(-1);
}
struct termios option; //终端设置结构体
tcgetattr(fd, &option);
// 修改终端属性
option.c_cflag |= (CLOCAL | CREAD);
option.c_cflag &= ~CSIZE;
option.c_cflag &= ~CRTSCTS;
option.c_cflag |= CS8;
option.c_cflag &= ~CSTOPB;
option.c_iflag |= IGNPAR;
option.c_oflag &= ~OPOST;
option.c_oflag &= ~(ONLCR | OCRNL);
option.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
option.c_cc[VTIME] = 0;
option.c_cc[VMIN] = 1;
// 设置波特率
unsigned int nSpeed = 115200;
cfsetispeed(&option, nSpeed);
cfsetospeed(&option, nSpeed);
tcsetattr(fd, TCSANOW, &option);
// 打开串口成功
return fd;
}
//发送数据
int Write_Data(char *buf, char* write_data,int len)
{
int nWrite;
if(len != 0 ){
nWrite=write(buf,write_data,len);
if(nWrite
printf(“Data writen failed!\n”);
return -1;
}
}
return 0;
}
//读取数据
int Read_Data(char *buf, char* read_data,int len)
{
int ret;
ret = read(buf,read_data,len);
if(ret
printf(“Data read failed!\n”);
return -1;
}
read_data[ret]=’\0′;
return 0;
}
3. 这样,我们就可以从其他设备(如MCU等)通过串口读取我们想要的实时数据了。然后在你要的程序里,我们可以通过如下代码调用open_port()和Read_Data()函数,即可调用我们所定义的函数,完成串口数据的收发:
```c// 打开串口
int uart_fd;char *dev = "/dev/ttyS0";
if ((uart_fd = open_port(dev))
{ printf("Open %s failed !\n", dev);
return -1;}
// 发送与接收数据
char write_data[]="发送数据";char read_data[100];
Write_Data(uart_fd,write_data, strlen(write_data)); Read_Data(uart_fd,read_data,100);
printf("Receive Data:%s\n",read_data);
close(uart_fd);
到这里,Linux系统下串口收发实时数据的介绍就结束了,以上内容仅供参考!