Linux/Android系统开发 串口参数配置源码 serial.c/serial.cpp

这篇博客介绍了适用于Linux和Android系统的C/C++串口配置驱动,包括端口选择、阻塞非阻塞模式、波特率、停止位、数据位和校验位的设置。内容强调了需要系统权限才能成功配置,并提到了已在MTK8735平台上的测试验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

该驱动适用于采用linux和android系统平台的C/C++开发。

用于配置串口相关参数:端口选择、阻塞非阻塞、波特率、停止位、数据位、校验位等。

注:需要系统开启串口操作权限,否则配置失败。

本驱动在MTK8735平台上验证测试,其它平台修改串口端口名称即可。

源代码:

serial.h

//
// Created by taxiang&xuezi on 2018/4/2.
//

#ifndef NDKAPPECG_SERIAL_H
#define NDKAPPECG_SERIAL_H

#ifdef  SERIAL_GLOBALS
#define SERIAL_EXT
#else
#define SERIAL_EXT extern
#endif

#define SERIAL_DBG    1

SERIAL_EXT s32 uart_open(s32 fd,s32 port,s8 block);
SERIAL_EXT s32 uart_set(s32 fd, s32 nSpeed, s32 nBits, s8 nEvent, s32 nStop);
#endif //NDKAPPECG_SERIAL_H
serial.c/serial.cpp

//
// Created by taxiang&xuezi on 2018/4/2.
//

#define SERIAL_GLOBALS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <errno.h>
#include <fcntl.h>
#include <termios.h>
#include <time.h>
#include <unistd.h>
#incl
### 解决编译时 `fatal error: serial/serial.h` 文件不存在或没有该目录的问题 当遇到此类错误时,通常意味着编译器无法找到指定头文件。这可能是由于库未安装、安装不完全或是编译选项配置不当所致。 #### 1. 检查并安装缺失的依赖包 对于特定于串口通信开发所需的 `serial/serial.h` 头文件,可能属于某个软件包的一部分。可以通过查找对应的源码仓库来确认具体的包名,并利用包管理工具进行安装: ```bash sudo apt-get update && sudo apt-get install libserial-dev ``` 这条命令会更新本地APT缓存并将 `libserial-dev` 软件包及其依赖项下载并安装到系统上[^3]。 #### 2. 验证头文件位置及设置正确的包含路径 即使已经成功安装了必要的库,在某些情况下仍需手动告知编译器这些资源的位置。可以使用 `-I` 参数向 GCC 或 G++ 编译指令中添加额外的搜索路径: 假设 `serial/serial.h` 存在于 `/usr/include/serial` 下,则可以在 Makefile 中加入如下定义: ```makefile CXXFLAGS += -I/usr/include/serial/ ``` 或者直接在命令行调用时附加此参数: ```bash g++ source.cpp -o output_program -I/usr/include/serial/ ``` 如果不确定确切路径,可借助 `find` 命令快速定位目标文件的实际存储地点: ```bash sudo find / -name "serial.h" ``` 一旦找到了实际存在的 `.h` 文件路径,就可以相应调整上述方法中的路径指定了[^1]。 #### 3. 使用 pkg-config 自动化处理 为了简化跨平台项目构建过程以及减少硬编码路径带来的维护成本,推荐采用 `pkg-config` 工具来自动生成所需标志位。首先确保已正确注册相应的 `.pc` 文件;之后只需执行类似下面的操作即可获取所有必需的信息: ```bash cflags=$(pkg-config --cflags libserial) libs=$(pkg-config --libs libserial) g++ $cflags source.cpp -o output_program $libs ``` 这种方法不仅提高了脚本移植性,还降低了人为失误的风险[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值