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系统下串口收发实时数据的介绍就结束了,以上内容仅供参考!


数据运维技术 » Linux串口获取实时数据(linux串口接收数据)