- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第10章 串口通信编程
第10章 串口通信编程
10.1 串口介绍
10.2 开发串口应用程序
10.3 串口应用实例——手机短信发送
10.1 串 口 介 绍
10.1.1 什么是串口
10.1.2 串口工作原理
10.1.3 串口流量控制
10.1.1 什么是串口
串口是串行接口(Serial Port)的简称,是一种常用的计算机接口。串口有几种标准,常见的是RS232接口。标准串口协议支持的最高数据传输率是115Kbps。一些改进的串口控制器支持更高甚至460Kbps的数据传输率。RS232串口使用D型数据接口,最初有9针和25针两种连接方式。
10.1.2 串口工作原理
串口通过直接连接在两台设备间的线发送和接收数据,两台设备通信最少需要三根线(发送数据、接收数据和接地)才可以通信。以RS232串口为例,通信距离较近时(12m),可以用电缆线直接连接标准RS232端口。如果传输距离远,可以通过调制解调器(MODEM)传输。
针 号
功 能 说 明
缩 写
针 号
功 能 说 明
缩 写
1
数据载波检测
DCD
6
数据设备准备好
DSR
2
接收数据
RXD
7
请求发送
RTS
3
发送数据
TXD
8
清除发送
CTS
4
数据终端准备
DTR
9
振铃指示
BELL
5
信号地
GND
?
?
?
10.1.3 串口流量控制
常见的串口工具软件都提供了RTS/CTS与XON/XOFF选项。这两个选项对应RS232串口的两种流量控制方式。串口流量控制主要应用于调制解调器的数据通信。
1.什么是串口流量控制
2.硬件流量控制
3.软件流量控制
1.什么是串口流量控制
在两个串口之间传输的数据,通常称做串口数据流。串口数据流的两端由于计算机的处理能力差别,常会出现数据丢失的现象。解决串口传输数据丢失的办法是对串口数据传输两端进行流量控制。串口协议中规定了硬件流量控制(RTS/CTS和DTR/CTS)和软件流量控制(XON/OFF)方法。
2.硬件流量控制
常见的串口硬件流量控制方法有以下两种:
RTS/CTS称做“请求发送/清除发送”流量控制
DTR/DSR称做“数据终端就绪/数据设置就绪”流量控制
3.软件流量控制
使用软件流量控制的串口通信电缆只需要连接三条数据线(数据发送、数据接收、地线)即可,软件流量控制使用XON/XOFF协议。软件流量控制的原理与硬件流量控制原理类似。软件流量控制使用特殊的字符表示硬件流量控制中的CTS信号。
10.2 开发串口应用程序
10.2.1 操作串口需要用到的头文件
10.2.2 串口操作方法
10.2.3 串口属性设置
10.2.4 与Windows串口终端通信
10.2.1 操作串口需要用到的头文件
在Linux系统操作串口需要用到以下头文件:
#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 /*错误号定义*/
在编写串口操作程序的最开始引用这些文件即可。
10.2.2 串口操作方法
操作串口的方法与文件类似,可以使用与文件操作相同的方法打开和关闭串口、读写以及使用select()函数监听串口。
14 fd = open( /dev/ttyS0, O_RDWR); // 使用读写方式打开串口
10.2.3 串口属性设置
Linux系统通常使用termios结构存储串口参数,该结构在termios.h头文件定义如下:
struct termios
{ unsigned short c_iflag; /* 输入模式标志 */
unsigned short c_oflag; /* 输出模式标志 */
unsigned short c_cflag; /* 控制模式标志 */
unsigned short c_lflag; /* 本地模式标志 */
unsigned char c_line; /* 线路规则 */
unsigned char c_cc[NCC]; /* 控制字 */
};
10.2.4 与Windows串口终端通信
本节给出一个和Windows串口终端通信的例子。两台PC通过串口相连,其中一台PC运行Windows系统,通过XShell软件(5.5
文档评论(0)