动力节点首页 全国咨询热线:400-8080-105

绑定手机号,登录
手机号

验证码

微信登录
手机号登录
手机号

验证码

微信登录与注册
微信扫码登录与注册

扫码关注微信公众号完成登录与注册
手机号登录
首页 > 文章

实例解析Linux系统下的串行接口

06-10 17:02 601浏览
举报 T字号
  • 大字
  • 中字
  • 小字

串行接口简称串口(通常指COM接口),是采用串行通信方式的扩展接口。串口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用。串口的特点是通信线路简单,只要一对传输线就可以实现双向通信从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。在Linux中,同样存在着大量的串口,本文我们就来举几个实际的例子分析Linux系统下的串口的设置。

1.串口需要的头文件

#include /*标准输入输出定义*/
#include /*标准函数库定义*/
#include /*Unix 标准函数定义*/
#include
#include  
#include /*文件控制定义*/
#include /*POSIX 终端控制定义*/
#include /*错误号定义*/

2.打开关闭串口

对于串口设备文件的操作与其他文件操作基本相同。可以使用系统调用open(), close()打开或关闭串口。

在Linux下串口文件是在/dev下的,例如串口一为/dev/ttyS0,串口二为/dev/ttyS1。

open(),close()系统调用的原型

#include
#include
#include
int open(const char *path, int oflags);
int open(const char *path, int oflags, mode_t mode);
#include
int close(int fildes);
实例:打开串口ttyS0。
int fd;
 /*以读写方式打开串口*/
fd = open( "/dev/ttyS0", O_RDWR);
if (-1 == fd){ 
 /* 不能打开串口一*/ 
 perror("open serial port error");
 }

3.设置串口

设置串口包括波特率设置、校验位、停止位设置。在串口设置中主要是设置struct termios结构体成员的值。

struct termios结构如下:

#include

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

 };

实例:设置波特率:

struct termios options;
 /*
* 得到当前串口设置,保存在options中
 */
tcgetattr(fd, &options);
/*
* 设置波特率为19200
 */
cfsetispeed(&options, B19200);
 cfsetospeed(&options, B19200);
 /*
* 本地连接和接收使能
 */
options.c_cflag |= (CLOCAL | CREAD);
/*
 * 应用设置(立即应用)
 */
tcsetattr(fd, TCSANOW, &options);

4.读写串口

读写串口和普通的文件操作相同,分别使用read()和write()。

原型:

#include
size_t read(int fields, void *buf, size_t nbytes);
size_t write(int fildes, const void *buf, size_t nbytes);

实例:写串口

char buffer[] = “hello world”;
int length = 11;
int nByte;
nByte = write(fd, buffer, length);

以上就是Linux下的串口的一些基本的知识,串口有着许多的类型,串行接口按电气标准及协议来分包括RS-232-C、RS-422、RS485等。RS-232-C、RS-422与RS-485标准只对接口的电气特性做出规定,不涉及接插件、电缆或协议。想了解这些串口的特性可以观看本动力节点在线的相关视频课程,学习更多的串行接口的知识。

0人推荐
共同学习,写下你的评论
0条评论
代码小兵696
程序员代码小兵696

118篇文章贡献392976字

相关课程 更多>

作者相关文章更多>

推荐相关文章更多>

Java面试题及答案整理

提枪策马乘胜追击04-21 20:01

Spring常见面试题

代码小兵92504-17 16:07

Java零基础实战项目——五子棋

代码小兵98804-25 13:57

Java string类详解

杨晶珍05-11 14:54

6道经典算法面试题

杨晶珍05-12 16:39

发评论

举报

0/150

取消