Linux 下串口USB等设备通信编程入门1

本文介绍了Linux操作系统对串口通信的支持,讲解了RS-232-C接口标准和Linux下的串口文件路径。重点阐述了串口通信编程涉及的结构体`struct termios`,包括输入模式、输出模式、控制模式和本地模式标志,以及控制字符的设置。文章还提及了设置波特率、效验位和停止位的方法,并提到了原始模式(Raw Mode)在串口通信中的应用。

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

此文章主要以串口为例子进行讲解,USB只需要修改打开的终端设备就可以
串口简介

串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用。常用的串口是 RS-232-C 接口(又称 EIA RS-232-C)它是在 1970 年由美国电子工业协会(EIA)联合贝尔系统、 调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是"数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准"该标准规定采用一个 25 个脚的 DB25 连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。传输距离在码元畸变小于 4% 的情况下,传输电缆长度应为 50 英尺。

Linux 操作系统从一开始就对串行口提供了很好的支持,本文就 Linux 下的串行口通讯编程进行简单的介绍,如果要非常深入了解,建议看看本文所参考的 《Serial Programming Guide for POSIX Operating Systems》


计算机串口的引脚说明

序号 信号名称 符号 流向 功能
3 发送数据 TXD DTE→DCE DTE发送串行数据
2 接收数据 RXD DTE←DCE DTE 接收串行数据
7 请求发送 RTS DTE→DCE DTE 请求 DCE 将线路切换到发送方式
8 允许发送 CTS DTE←DCE DCE 告诉 DTE 线路已接通可以发送数据
6 数据设备准备好 DSR DTE←DCE DCE 准备好
5 信号地 SG   信号公共地
1 载波检测 DCD DTE←DCE 表示 DCE 接收到远程载波
4 数据终端准备好 DTR DTE→DCE DTE 准备好
9 振铃指示 RI DTE←DCE 表示 DCE 与线路接通,出现振铃

 

串口操作

串口操作需要的头文件

#include     <stdio.h>      /*标准输入输出定义*/
#include     <stdlib.h>     /*标准函数库定义*/
#include     <unistd.h>     /*Unix 标准函数定义*/
#include     <sys/types.h>  
#include     <sys/stat.h>   
#include     <fcntl.h>      /*文件控制定义*/
#include     <termios.h>    /*PPSIX 终端控制定义*/
#include     <errno.h>      /*错误号定义*/


打开串口(USB)

在 Linux 下串口文件是位于 /dev 下的

串口一 为 /dev/ttyS0(/dev/ttyUSB0)

串口二 为 /dev/ttyS1(/dev/ttyUSB1)

打开串口是通过使用标准的文件打开函数操作:

int fd;
/*以读写方式打开串口*/
fd = open( "/dev/ttyS0", O_RDWR);
if (-1 == fd){ 
/* 不能打开串口一*/ 
perror(" 提示错误!");
}

终端设备设置

最基本的设置包括波特率设置,效验位和停止位设置。

串口的设置主要是设置 struct termios 结构体的各成员值。

struct termio
{	unsigned short  c_iflag;	/* 输入模式标志 */	
	unsigned short  c_oflag;		/* 输出模式标志 */	
	unsigned short  c_cflag;		/* 控制模式标志*/	
	unsigned short  c_lflag;		/* local mode flags */	
	unsigned char  c_line;		    /* line discipline */	
	unsigned char  c_cc[NCC];    /* control characters */
};


  其具体意义如下。
  c_iflag:输入模式标志,控制终

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值