串口、终端应用程序 API termios
UART简介
串口全称为串行接口,也称为COM接口,串行接口指的是比特一位位顺序传输,通信线路简单。使用两根线就可以实现双向通信,一条为TX,一个为RX。串口通信距离远,但速度相对慢,是一种常用的工业接口。
UART全称为Universal Asynchronous Receiver/Trasmitter,也是异步串行接收器。
USART全称为Universal Synchronous/Asynchronous Receiver/Transmitter,也就是同步/异步串行收发器。相对于UART多了一个同步功能,在硬件上多出一条时钟线。USART可以用作UART。
通讯和通信格式
UART接口与外界通信时,至少用三根线:TXD(发送)、RXD(接收)、GND(地线)。
UART接口电平:
- TTL电平。TXD和RXD这些引脚是TTL电平。低电平表示0,高电平表示1。
- RS232。差分信号。-3~-15V表示逻辑1,+3~+15V表示逻辑0.
UART通信格式:
UART位 | 含义 |
---|---|
空闲位 | 数据线在空闲状态的时候,为逻辑1,高电平,没有数据传输。 |
起始位 | 当要传输数据时,先传输一个0,也就是将数据线拉低,表示开始传输数据。 |
数据位 | 为实际传输的数据,数据位可选5~8位,一般为1个字节8位传输。低位(LSB)先传,高位最后传输。 |
奇偶校验位 | 1启动奇偶校验,0不启动 |
停止位 | 数据传输完成标志位,停止位的位数可选1或2位,常用1位 |
波特率 | 波特率就是UART数据传输的速率,每秒传输的数据位数。 |
介绍
Linux 为上层用户做了一层封装,将这些 ioctl()操作和读写封装成了一套标准的 API,我们就直接使用这一套标准 API 编写自己的串口应用程序。termios API描述了一个通用的终端接口,可提供了控制异步通讯端口,配置和读写。
关于配置,数据结构体struct termios结构体,该数据结构描述了终端的配置信息,这些参数能够控制、影响终端行为、特征。终端设备应用编程主要是对这个结构体进行配置。
termios API
大纲
#include <termiso.h>
#include <unistd.h>int tcgetattr(int fd,struct termios *termios_p);
int tcsetattr(int fd,int potional_actions,struct termios *termios_p);
int tcsendbreak(int fd,int duration);
int tcdrain(int fd);
int tcflush(int fd, int queue_selector);
int tcflow(int fd, int action);
void cfmakeraw(struct termios *termios_p);
speed_t cfgetispeed(const struct termios *termios_p);
speed_t cfgetospeed(const struct termios *termios_p);
int cfsetispeed(struct termios *termios_p, speed_t speed);
int cfsetospeed(struct termios *termios_p, speed_t speed);
int cfsetspeed(struct termios *termios_p, speed_t speed);
termios 结构体
许多函数描述有一个参数termios_p,是一个指针指向了termios结构体。结构体至少包括了以下成员。
tcflag_t c_iflag; //输入模式
tcflag_t c_oflag; //输出模式
tcflag_t c_cflag; //控制模式
tcflag_t c_lflag; //本地模式
cc_t c_cc[NCCS]; //特定字符
这些值被分配到
串口、终端应用程序 API termios相关推荐
- Linux 串口编程二 深入了解 termios
前言 这一系列串口编程重点在应用层编程,但是在讲解原理与相关概念时需要对驱动框架有个基础的认识.如果只是浅尝辄止,以后在遇到串口驱动与应用层程序调试难免遇到瓶颈.关于 tty驱动架构参见我的其他博客: ...
- 深入浅出VC++串口编程--基于Win32 API
1.API描述 在WIN32 API中,串口使用文件方式进行访问,其操作的API基本上与文件操作的API一致. 打开串口 Win32 中用于打开串口的API 函数为CreateFile,其原型为: H ...
- 摘自【北京迅为】itop-3568开发板快速启动手册 第二章 Windows安装串口终端
瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器.RK3568 支持4K 解码和 1080P 编 ...
- 咸鱼硬件—ZTMS串口终端交互
咸鱼硬件-ZTMS串口终端交互 Putty PuTTY中文版是一款免费的远程登录工具,轻盈小巧.无需安装,操作简单易上手.同时还支持串口.REPL功能.这里我们使用PuTTY串口的功能来调试开发板.( ...
- 物联网LoRa系列-8:LoRa终端应用程序开发环境的搭建
目录: 一. LoRa终端应用程序开发环境的目标 二. LoRa终端应用程序开发环境的搭建步骤 一. LoRa终端应用程序开发环境的目标 (1)Protel 99SE:是硬件原理图和PCB开发的工具 ...
- Android 操作串口 (android serial port api)
Android 操作串口 (android serial port api)
- 异常“企图释放并非呼叫方所拥有的多用户终端运行程序”的处理
在使用锁机制时有可能会出现"企图释放并非呼叫方所拥有的多用户终端运行程序"的异常,改异常的出现是因为一个非拥有锁的线程企图释放其他线程占有的锁. 在使用ReaderWriterLo ...
- Qt 实现串口终端控制台,适配RT-Thread的FinSH控制台功能(提供qt源码)
开发环境:Window 10 64bit 开发工具:IAR Embedded Workbench 硬件:stm32f103c8t6 RT-Thread Nano 版本包含了 FinSH 组件,我们可以 ...
- 如何用python写串口通信软件_如何用python写个串口通信的程序?
展开全部 打开串口后启动一个线程来监听串口数据的进入,有数据时,就做数据的处理. 用python写串口通信e68a84e8a2ad32313133353236313431303231363533313 ...
最新文章
- 线上会议丨中国中文信息学会2020学术年会将于12月27日举行
- 2020黑客报告:7位道德黑客赏金收入超100万
- easyui 添加 自定义图标
- sql server 主从数据库同步 利用发布 订阅是实现
- 美团自研无人机登场:15分钟配送到家
- Containerd 的前世今生和级入门教程
- 苹果知名开发者怒“怼”:GitHub 不可信,俄罗斯开发者贡献的项目遭毁灭性打击...
- async await 的用法
- zepto.js学习笔记01
- 关于中职计算机专业,关于中职学校计算机专业改革探讨
- 32个参数累加_「机械设计教程」滚珠丝杠选型过程中考虑的9个参数
- Win系统 - 如何解决 Windows + P 键无法切换双显复制模式?
- 基于微信会议室预约小程序毕业设计设计与实现 开题报告参考
- CSDN的手机APP可以写博客了
- 小说APP源码—小说app开发如何做到小说APP系统快速搭建?
- 什么是全屋定制家居概念?
- mysql数据库登录认证_MySQL数据库的用户认证系统
- 如何组建和管理测试团队
- 2022年高处安装、维护、拆除培训试题模拟考试平台操作
- 解决网站因调用谷歌字体库打开慢(适用wordpress和调用谷歌内容的网站)