串行接口简称串口(通常指COM接口),是采用串行通信方式的扩展接口。串口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用。串口的特点是通信线路简单,只要一对传输线就可以实现双向通信从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。在Linux中,同样存在着大量的串口,本文我们就来举几个实际的例子分析Linux系统下的串口的设置。
#include /*标准输入输出定义*/
#include /*标准函数库定义*/
#include /*Unix 标准函数定义*/
#include
#include
#include /*文件控制定义*/
#include /*POSIX 终端控制定义*/
#include /*错误号定义*/
对于串口设备文件的操作与其他文件操作基本相同。可以使用系统调用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");
}
设置串口包括波特率设置、校验位、停止位设置。在串口设置中主要是设置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);
读写串口和普通的文件操作相同,分别使用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标准只对接口的电气特性做出规定,不涉及接插件、电缆或协议。想了解这些串口的特性可以观看本动力节点在线的相关视频课程,学习更多的串行接口的知识。
提枪策马乘胜追击04-21 20:01
代码小兵92504-17 16:07
代码小兵98804-25 13:57
杨晶珍05-11 14:54