入门篇-学习点滴二
原创
©著作权归作者所有:来自51CTO博客作者rightsoft的原创作品,请联系作者获取转载授权,否则将追究法律责任
串口编程
对于串口的编程操作,不论是在wince还是linux下流程都是差不多的,但是一些操作模式还是有很大的差别的,在这里主要记录学习下linux下面的一些关于串口编程的结构体和函数调用。
首要要说的就得数termios这个结构了,定义如下:
struct termios
{
tcflag c_iflag; //input flags
tcflag c_oflag; //output flags
tcflag c_cflag; //control flags
tcflag c_lflag; //local flags
cc_t c_cc[NCCS] //control charactors
};
这个结构体主要是针对串口的一些配置,串口的一些操作都是围绕它来进行的。
下面看一些与串口操作相关的函数调用
tcgetattr 取属性(termios结构)
tcsetattr 设置属性(termios结构)
cfgetispeed 得到输入速度
cfgetospeed 得到输出速度
cfsetispeed 设置输入速度
cfsetospeed 设置输出速度
tcdrain 等待所有输出都被传输
tcflow 挂起传输或接收
tcflush 刷清未决输入和/或输出
tcsendbreak 送BREAK字符
tcgetpgrp 得到前台进程组ID
tcsetpgrp 设置前台进程组ID
要用到的东西,说完了,下面看下,这个流程对上述函数的调用过程。
1. 打开串口
fd = open( "/dev/ttyS0", O_RDWR|O_NOCTTY|O_NDELAY);//ttyo代表串口1
2. 设置读写的阻塞状态
fcntl(fd, F_SETFL, 0);
3. 检查串口是否已被占用
isatty(STDIN_FILENO);
4. 对该打开串口的当前配置进行保存
tcgetattr( fd,&oldtio);
5. 对串口新配置的设置
bzero( &newtio, sizeof( newtio ) );
newtio.c_cflag |= CLOCAL | CREAD;
newtio.c_cflag &= ~CSIZE;
newtio.c_cflag |= CS8;//数据位为8位
newtio.c_cflag |= PARENB;//使能奇偶校验
newtio.c_cflag |= PARODD;//设置校验为奇校验
newtio.c_iflag |= (INPCK | ISTRIP);
cfsetispeed(&newtio, B115200);//设置输入波特率为115200
cfsetospeed(&newtio, B115200);//设置输出波特率为115200
newtio.c_cflag &= ~CSTOPB;//设置停止位为1位
newtio.c_cc[VTIME] = 0;
newtio.c_cc[VMIN] = 0;
tcflush(fd,TCIFLUSH);//设置flush为输入flush
tcsetattr(fd,TCSANOW,&newtio);//设置新的配置
6. 读写用read,write函数
7. 最后用close关闭打开的串口
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
netty学习(入门篇)
文章目录netty学习(入门篇)netty诞生简介netty服务器netty客户 (入门篇)netty诞生
netty netty io模型 入门 -
NGINX-入门篇 二
nginx-了解入门
NGINX -
Android学习之入门篇
Android模拟器快捷键 F1/PgUp Menu key 菜单键 F2/PgDown Star key 星号键
Android 入门 android 边距 填充空白 -
elasticSearch集群搭建---入门篇二
Elasticsearch(二)1 通过java客户端对es维护1.1 工程搭建创建maven工程添加依赖,在pom.xml文件添加如下依赖:
elasticsearch 客户端操作es Spring Data集成es es集群 集群的配置文件