桐乡做网站的公司,游戏类网站备案,建设信用卡网站是什么,美食网页设计素材在 termios 结构体以及内部终端控制标志中#xff0c;并非所有的参数对于实际的物理串口都是有效的#xff0c;在使用过程中也不需要对于所有标志的作用都有所理解。事实上#xff0c;快速掌握一项技术的核心点也是一种学习能力。对于使用#xff0c;熟悉并掌握操作框架十分…在 termios 结构体以及内部终端控制标志中并非所有的参数对于实际的物理串口都是有效的在使用过程中也不需要对于所有标志的作用都有所理解。事实上快速掌握一项技术的核心点也是一种学习能力。对于使用熟悉并掌握操作框架十分有用。对于串口编程核心步骤也十分鲜明下面首先介绍 termios 相关的 API 函数。 核心配置函数
1. int tcgetattr(int fd, struct termios *termios_p);
函数功能获取当前终端接口配置并将配置写入参数 termios_p 指向的 termios 结构体。一般操作时将配置保存为 old_termios可以在需要时通过 tcsetattr 函数对终端接口进行重新配置。
2. int tcsetattr(int fd, int actions, const struct termios *termios_p);
函数功能使用 termios_p 指向的 termios 结构体对终端接口进行配置参数 actions 控制修改方式共有3种修改方式如下所示
TCSANOW立刻对配置进行修改。TCSADRAIN等当前输出完成后再对配置进行修改。TCSAFLUSH等当前输出完成后再对配置进行修改但丢弃还未从 read 调用返回的当前可用的任何输入。
Note如果需要在程序操作结束恢复终端或者串口的初始状态那么就需要使用 tcgetattr 介绍中的操作步骤进行恢复。终端速度函数 1.speed_t cfgetispeed(const struct termios *);
函数功能获取终端读取速度。 2.speed_t cfgetospeed(const struct termios *);
函数功能获取终端输出速度。 3.int cfsetispeed(const struct termios *, speed_t speed);
函数功能设置终端读取速度。
4.int cfgetispeed(const struct termios *, speed_t speed); 函数功能设置终端输出速度。
Note输入与输出速度是分开控制的根据函数形参这些函数只作用于 termios 结构而不是直接作用于设备。因此如果要设置速度就要首先使用 tcgetattr 获取当前终端配置然后使用上述函数设置速度最后使用 tcsetattr 将 termios 配置写入设备。此外还要注意系统支持的波特率范围通过查看 termios.h 可以获取到。 其他控制函数 1.int tcdrain(int fd);
函数功能让调用程序一直等待直到所有排队的输出都已发送完毕。 2.int tcflow(int fd, int flowtype);
函数功能用于暂停或重新开始输出。 3.int tcflush(int fd, int in_out_selector);
函数功能用于清空输入、输出或者两者同时清空。
Note如果串口程序发生阻塞检查程序中是否调用了上述 API。在打开终端或者串口设备之前对应的输入或者待输出数据缓存在驱动程序中因此要根据实际需求选择是否调用 tcflush 清空相应缓冲区数据。
关于终端串口 API 函数的讲解本篇就到这里在实际应用开发中必须明确程序中配置的标志位和函数的作用在不确定作用的情况下最好保持默认设置。
关于 Linux 串口编程的其他文章可以移步至以下链接 《Linux 串口编程一 一些背景》《Linux 串口编程二 深入了解 termios》《Linux 串口编程三 使用termios与API 进行串口程序开发》《Linux 串口编程四 串口设备程序开发》 有想法或者疑问可以给我邮件或者评论觉得本文对你有帮助就点赞吧~:-D