嵌入式操作系统开发板中的串口编程——光敏电阻数据读取

在嵌入式操作系统开发板中一般都会拥有几个串口UART驱动,我们只需要应用程序中打开UART设备节点,初始化设置UART,比如设置停止位、数据位、奇偶校验位、波特率等,这些Linux操作系统给我们提供了现成的结构体,我们只需要调用结构体,设置相应的标志位即可。

下面的程序首先对串口进行初始化设置。

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/mman.h>
#include <linux/videodev2.h>
#include <string.h>
#include <stdlib.h>
//内核中串口定义的头文件
#include <termios.h>int set_serial_uart(int serfd){struct termios new_cfg;//termios结构体能够设置串口的模式struct termios old_cfg;if(tcgetattr(serfd, &old_cfg) != 0){//保存现有串口参数的设置perror("tcgetattr failed\n");return -1;}bzero(&new_cfg, sizeof(new_cfg));new_cfg = old_cfg;//将原始的设置保留cfmakeraw(&new_cfg);//设置波特率cfsetispeed(&new_cfg, B115200);//接收cfsetospeed(&new_cfg, B115200);//发送//激活选项,c_cflag控制模式选项//CLOCAL:忽略调制解调器线路状态//CREAD:使用接收器new_cfg.c_cflag |= CLOCAL | CREAD;//8位数据位new_cfg.c_cflag &= ~CSIZE;new_cfg.c_cflag |= CS8;//奇偶校验位new_cfg.c_cflag &= ~PARENB;//无奇偶校验位//1位停止位new_cfg.c_cflag &= ~CSTOPB;//清楚串口缓冲区tcflush(serfd, TCIOFLUSH);new_cfg.c_cc[VTIME] = 0;//串口等待时间new_cfg.c_cc[VMIN] = 1;//串口接收的最少字符tcflush(serfd, TCIOFLUSH);//串口设置使能tcsetattr(serfd, TCSANOW, &new_cfg);
}

上面我们已经完成了串口UART的初始化设置,下面我们将使用串口和光敏电阻进行通信,实时读取光敏电阻传感器反馈回的数据,判断光敏电阻检测到的当前状态。

下面就是我们使用的光敏电阻传感器模块。4线制的,将VCC和GND分别接到开发板对应的串口上,串口UART的RX接到光敏电阻上的DO引脚,相当于直接接收DO数字开关量。

下面就是最终的测试程序。

#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <termios.h>#define DEVICE_LC "/dev/ttySAC3" //这里是我的开发板的一个串口UART设备节点,将这里换成你的即可。int set_serial_uart(int serfd);int lcflag = 0;//没有太阳int light_control(){int lightfd = 0;int ret = 0;char buf = 0;lightfd = open(DEVICE_LC, O_RDWR | O_NONBLOCK | O_NOCTTY);if(lightfd < 0){printf("open serial failed!\n");return -1;}set_serial_uart(lightfd);while(1){ret = read(lightfd, &buf, sizeof(char));if(buf == 0){printf("没有阳光\n");}else if(buf > 0){printf("有阳光\n");}tcflush(lightfd, TCIOFLUSH);sleep(1);}
}int main(){while(1){light_control();}return 0;
}

后续我会更新一篇读取角度传感器的串口编程,角度传感器的数据读取需要你先下发读数据指令,角度传感器才会发送它的实时数据,有来有回的收发过程。

我是河边小乌龟爬,学习嵌入式软件开发路上的一名小学生,欢迎大家相互交流哇。公众号:河边小乌龟爬。

传感器的串口编程,角度传感器的数据读取需要你先下发读数据指令,角度传感器才会发送它的实时数据,有来有回的收发过程。

我是河边小乌龟爬,学习嵌入式软件开发路上的一名小学生,欢迎大家相互交流哇。公众号:河边小乌龟爬。

(群名称:嵌入式软件开发交流群;群 号:1004953094)

嵌入式操作系统开发板中的串口编程——光敏电阻数据读取相关推荐

  1. 串口烧录android板子,【嵌入式学习笔记二】烧录制作好的镜像到4412开发板中

    说明:本来打算第二份笔记作开发环境搭建的,但是整个开发环境的搭建比较复杂,所以学到后面的时候再回过来系统的讲述一下如何搭建开发环境,这一节内容就讲如何烧录制作好的镜像到开发板中. 一.Android4 ...

  2. 【嵌入式开发】向开发板中烧写Linux系统-型号S3C6410

    作者 : 万境绝尘 转载请著名出处 终于拿到板子了, 嵌入式开发正式开启. 板子型号 : 三星 S3C6410 基于ARM11, 指令集基于arm6指令集; 为毛不是 Cortext A9的板子; 烧 ...

  3. 烧写linux系统到开发板中,【嵌入式开发】向开发板中烧写Linux系统

    作者 : 万境绝尘 终于拿到板子了, 嵌入式开发正式开启. 板子型号 : 三星 S3C6410 基于ARM11, 指令集基于arm6指令集; 为毛不是 Cortext A9的板子; 烧写内容 : Bo ...

  4. 飞凌嵌入式RK3399开发板使用过程中问题实录及解决思路

    飞凌RK3399的开发板,已经推出了一段时间,根据飞凌嵌入式技术服务部统计的客户问题反馈,整理了一份客户在使用RK3399开发板过程中经常遇到的几个问题,并提供了解决思路. RK3399开发板简介: ...

  5. 嵌入式系统开发学习步骤(Linux高级编程学习顺序)

    2019独角兽企业重金招聘Python工程师标准>>> 嵌入式系统开发学习步骤(Linux高级编程学习顺序) 1.Linux 基础 安装Linux操作系统 Linux文件系统 Lin ...

  6. qt工程在linux系统里颜色显示错误_【飞凌嵌入式RK3399开发板试用体验】+QT开发环境搭建测试(二)...

    作者:飞扬的青春 在拿到开发板之后,已经体验了Android操作系统,接下来就是体验Linux下的开发,本次以QT的一个小案例来测试下. 首先是自己先搭建了一个Ubuntu18.04的虚拟机,使用真机 ...

  7. 入门嵌入式,开发板应该怎么选?

    作者 | 学益得智能硬件 入门嵌入式,开发板应该怎么选择?网上推荐的太多,不知道该如何选择. 选择开发板,无非考虑三点因素: 配套学习资源(源码.视频.书籍): 性能(能不能运行学习用到的程序); 性 ...

  8. 嵌入式arm210开发板移植MP3的详细步骤

    MP3移植过程 平台:Fedora14   i386             arm210 写在开头:本篇博客中所用到的一些工具和源码包,都可以在我的另一篇博文"软件开发人员常用网站整理&q ...

  9. 【TX2】TX2开发板系统默认串口有ttyS0(调试口)、ttyTHS1、ttyTHS2、ttyTHS3,通过修改设备树文件,可以新增三个串口

    1.简述 TX2开发板系统默认串口有ttyS0(调试口).ttyTHS1.ttyTHS2.ttyTHS3,通过修改设备树文件,可以新增三个串口. 2.设备树 设备树中关于串口部分的描述 2.1 基础配 ...

  10. 飞凌嵌入式iMX8MP 开发板试用体验--编译内核源码

    FETMX8MP-C核心板基于NXP i.MX 8M Plus处理器开发设计,该系列处理器专注于机器学习与视觉.高级多媒体以及具有高可靠性的工业自动化.旨在满足智慧城市.工业互联网.智能医疗.智慧交通 ...

最新文章

  1. JQ+ajax 提交表单不跳转页面
  2. python3安装opencv
  3. kotlin 查找id_Kotlin程序在矩阵中查找偶数和奇数的频率
  4. 15.用户故事与敏捷方法——Scrum与用户故事笔记
  5. python爬虫架构设置_Python爬虫进阶三之Scrapy框架安装配置
  6. 计算机专业英语影印版试题,计算机专业英语(2008影印版)复习资料
  7. cdr多页面排版_CDR文字排版实战图文教程,CorelDRAW文字排版有哪些技巧?
  8. 2018——走过的路
  9. 台式计算机cpu ram hdd,什么是RAM?
  10. 怎么linux添加guest,如何为Ubuntu 16.04安装VirtualBox Guest Additions
  11. 高数 | 【重积分】线面积分880例题
  12. 需求与商业模式创新-需求9-原型
  13. 【Unity入门】24.碰撞检测
  14. Java对接海康摄像头坑点总结
  15. 人生感悟人生是一场修行
  16. DeeplabV3+ 训练自己的数据集。pytorch
  17. MacBook如何取消开盖自动开机
  18. React fetch请求方式
  19. Python博文_爬虫工程师是干什么的
  20. linux压缩命令大全

热门文章

  1. SQL注入双引号报错注入
  2. [含论文+源码等]基于java+ssh+mysql实现的共享自行车租赁|出租管理系统
  3. 软件测试报告模板--实用--绝对靠谱
  4. 阿里巴巴JAVA开发手册资源分享
  5. 杨永强“兑”现承诺 乐视云发力VaaS
  6. 编译Openwrt(LEDE)for K3固件详细指南
  7. [JS]回调函数例子
  8. 机器学习基石(笔记)
  9. 海康/大华/宇视等网络摄像头云台控制功能探测方法解析
  10. 三角洲并联臂3D打印机入门了解