左锦 (zuo170@163.com)
南沙资讯科技园
2003 年 7 月
Linux 操作系统从一开始就对串行口提供了很好的支持,本文就 Linux 下的串行口通讯编程进行简单的介绍。
串口简介
串行口是电脑一种常用的接口,具备连接线少,通讯简单,得到广泛的使用。常用的串口是 RS-232-C 接口(又称 EIA
RS-232-C)他是在 1970 年由美国电子工业协会(EIA)联合贝尔系统、
调制解调器厂家及电脑终端生产厂家一起定制的用于串行通讯的标准。他的全名是"数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换
接口技术标准"该标准规定采用一个 25 个脚的 DB25
连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。传输距离在码元畸变小于 4% 的情况下,传输电缆长度应为 50
英尺。
Linux 操作系统从一开始就对串行口提供了很好的支持,本文就 Linux 下的串行口通讯编程进行简单的介绍,假如要很深入了解,建议看看本文所参考的《Serial Programming Guide for POSIX Operating Systems》
电脑串口的引脚说明
| 序号 |
信号名称 |
符号 |
流向 |
功能 |
| 2 |
发送数据 |
TXD |
DTE→DCE |
DTE发送串行数据 |
| 3 |
接收数据 |
RXD |
DTE←DCE |
DTE 接收串行数据 |
| 4 |
请求发送 |
RTS |
DTE→DCE |
DTE 请求 DCE 将线路转换到发送方式 |
| 5 |
允许发送 |
CTS |
DTE←DCE |
DCE 告诉 DTE 线路已接通能够发送数据 |
| 6 |
数据设备准备好 |
DSR |
DTE←DCE |
DCE 准备好 |
| 7 |
信号地 |
|
|
信号公共地 |
| 8 |
载波检测 |
DCD |
DTE←DCE |
表示 DCE 接收到远程载波 |
| 20 |
数据终端准备好 |
DTR |
DTE→DCE |
DTE 准备好 |
| 22 |
振铃指示 |
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> /*错误号定义*/
|
打开串口
在 Linux 下串口文档是位于 /dev 下的
串口一 为 /dev/ttyS0
串口二 为 /dev/ttyS1
打开串口是通过使用标准的文档打开函数操作:
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 */ };
|
配置这个结构体很复杂,我这里就只说说常见的一些配置:
波特率配置
下面是修改波特率的代码:
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
| | 版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2007 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86263408 86263960 86264018 86267838 86262244 86263408 售前咨询:总机转201 202 203 204 205 206 207 208 售后服务:总机转211
212 213 214 217 218 晚上0点以后拔分机225 |
|
财务咨询:总机转224
223 传真:028-86264041 财务QQ: 635483282
售前咨询QQ: 327314358 241975952 275026793 408235859 2182518 499513144 售后服务QQ: 634349278 809071471 307742704 512359778 287976517 363783715 在线咨询
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号
|