Linux下C语言读写串口

作者:编程家 分类: linux 时间:2025-08-05

介绍:

在Linux系统下,使用C语言进行串口的读写是一项常见的任务。串口通信在嵌入式系统、传感器网络以及各种嵌入式应用中都有广泛的应用。本文将介绍如何在Linux环境下使用C语言进行串口的读写操作,并提供一个简单的示例代码来帮助读者理解。

打开串口:

首先,我们需要打开串口。在Linux中,串口设备通常表示为类似"/dev/ttyS0"或"/dev/ttyUSB0"的文件。要打开串口,我们使用标准的文件操作函数`open`,并指定合适的标志位。

c

#include

#include

#include

#include

int openSerialPort(const char *portName) {

int serialPort = open(portName, O_RDWR | O_NOCTTY | O_NDELAY);

if (serialPort == -1) {

perror("无法打开串口");

return -1;

}

// 更多的串口设置将在后面介绍

return serialPort;

}

配置串口:

配置串口是确保通信正常进行的关键步骤。我们使用`termios`结构和相应的函数进行串口配置。以下是一些基本的串口配置选项:

c

void configureSerialPort(int serialPort) {

struct termios options;

tcgetattr(serialPort, &options);

cfsetispeed(&options, B9600); // 输入波特率

cfsetospeed(&options, B9600); // 输出波特率

options.c_cflag |= (CLOCAL | CREAD); // 忽略调制解调器状态线、启用接收器

options.c_cflag &= ~PARENB; // 禁用奇偶校验

options.c_cflag &= ~CSTOPB; // 1位停止位

options.c_cflag &= ~CSIZE; // 清除数据位设置

options.c_cflag |= CS8; // 8位数据位

tcsetattr(serialPort, TCSANOW, &options);

}

读写串口:

有了打开和配置串口的基础,我们可以使用`read`和`write`函数进行串口的读写操作。下面是一个简单的读写函数:

c

int readFromSerialPort(int serialPort, char *buffer, int bufferSize) {

return read(serialPort, buffer, bufferSize);

}

int writeToSerialPort(int serialPort, const char *data, int dataSize) {

return write(serialPort, data, dataSize);

}

关闭串口:

在使用完串口后,务必关闭它以释放系统资源。使用`close`函数即可完成此操作:

c

void closeSerialPort(int serialPort) {

close(serialPort);

}

示例代码:

下面是一个简单的示例代码,演示了如何打开、配置、读写和关闭串口:

c

int main() {

const char *portName = "/dev/ttyS0";

int serialPort = openSerialPort(portName);

if (serialPort != -1) {

configureSerialPort(serialPort);

// 读取数据

char readBuffer[256];

int bytesRead = readFromSerialPort(serialPort, readBuffer, sizeof(readBuffer));

printf("读取了 %d 字节的数据:%s%

", bytesRead, readBuffer);

// 写入数据

const char *dataToWrite = "Hello, Serial!";

int bytesWritten = writeToSerialPort(serialPort, dataToWrite, strlen(dataToWrite));

printf("写入了 %d 字节的数据%

", bytesWritten);

// 关闭串口

closeSerialPort(serialPort);

}

return 0;

}

在Linux环境下使用C语言进行串口的读写操作需要打开串口设备、配置串口参数以及使用标准的读写函数。本文提供了一个简单的示例代码,希望读者通过这个示例能够更好地理解如何在C语言中进行串口通信。在实际应用中,根据具体需求可能需要进一步的串口配置和错误处理。