zoukankan      html  css  js  c++  java
  • 迅为-i.MX6ULL开发板-QT实战项目DHT11&网络编程实战练习(一)

    迅为-i.MX6ULL开发板-QT实战项目DHT11&网络编程实战练习(一)

    发布时间:2021-7-2 09:49    发布者:落风 |编辑
     
    文章目录1 项目前准备2 软件流程图Linux应用程序本项目为阶段性练习,内容简洁实用,目的在于让初学者能够巩固前面知识,学以致用,逐步提升C++和Qt水平,为学习下面的教程做铺垫。本章节使用的资料已经放到了开发板网盘资料中,路径为“11_Linux系统开发进阶Qt开发_章节使用资料”。

    1 项目前准备
    工具及环境:
    1.开发环境:Ubuntu16.04
    2.工具:Qt creator
    3.迅为电子i.MX6ULL终结者开发板
    MX6ULL终结者开发板已板载了DHT11传感器,且提供的Linux镜像和设备树已配置好了dht11接口,dht11驱动程序使用高版本Linux内核自带的稳定驱动程序,根文件系统使用网盘资料里的Yocto镜像,使用手册有详细的系统移植和 Qt5移植步骤。开发板要保证iio接口正常,如图 1.1:
    cd /sys/bus/iio/devices/iio:device1

    多cat几次, cat in_temp_input ,出现00为结尾的数字为正常

    2 软件流程图
    本实验目的是练习Qt的使用。把dht11采集的温度湿度显示在触摸屏的Qt上,并通过TCP传输到PC机的Qt界面上。应用程序将采集到的数据利用UDP网络套接字传输给终结者的 Qt进程,终结者的Qt将数据转发给PC端的Qt显示界面。流程图如图 2.1:

    3 Linux应用程序
    功能描述:
    1.获取温湿度数据。
    2.将温湿度封装成消息通过UDP发送到i.MX6ULL服务器。
    高版本Linux内核自带了dht11 的驱动,使用者不用再去关心它的时序问题,可以用标准IO读取sysfs的/sys/bus/iio/devices/iio:device1/下的温湿度端口,测试读取成功后将数据发送到Qt进程。
    为了让读者更好地理解Qt的 UDP,所以此处没有用到操作系统进程间通信机制,直接使用UDP网络套接字,代码在readDHT11.c:





    编译:arm-linux-gnueabihf-gcc -o read readDHT11.c

    4 终结者Qt服务器
    Qt服务器功能描述:
    1.接收应用程序发来的数据并解析;
    2.界面显示出:温湿度,PC客户端的连接状态,系统时间;
    3.通过 TCP向 PC客户端发送数据包。

    4.1 界面布局
    温度显示:LCD Number
    湿度显示:LCD Number
    系统时间,连接状态提示: Label
    关闭按钮:push Button
    Mainwindow.ui :


    在属性栏设置主窗口尺寸,宽度为1024,高度为600,添加两个LCD Number组件,设置最小宽度500,最小高度为290,然后垂直布局两个LCD Number,如:图 4.1.2

    给LCD Number添加颜色,右击此组件,选择“改变样式表”,

    在弹出的界面选择“添加颜色”,点击“color”,

    在弹出的颜色选择框中选择想要添加的颜色,然后点击“OK”。

    自动回到样式表编辑器,可以看到添加的color,点击”apply”,然后点击”OK”,发现 LCD Number的颜色已经改变,另外一个 LCD Number的操作方法不再赘述。

    在主界面右上角添加两个 Label,一个用来显示时间,一个显示TCP连接状态,宽度500,高度130,垂直布局,如图 4.1.7:

    添加退出按钮,设置最小高度80,最小宽度100,修改字体大小:

    在按钮左侧添加 Label,最小宽度300,最小高度290,在按钮和Label间添加弹簧,然后水平布局,效果如图 4.1.9:.

    点击主窗口,然后点击栅格布局,效果如图 4.1.10:

    最后改变各控件的名称,方便在代码中调用。
    到此,服务器端基本ui界面组装完成,读者可以在此基础上美化。

    -迅为-i.MX6ULL开发板-QT实战项目DHT11&网络编程实战练习(二)
  • 相关阅读:
    fatal: unable to access ‘https://github.com/Homebrew/brew/‘: Error in the HTTP2 framing layer
    leetcode题目两数和、最大字符串长度、中位数、最长回文子串
    zabbix5.x版本添加自定义监控+263邮件报警
    php过滤特殊字符方法
    js中e相关位置
    少有人走的路-心智成熟的旅程-斯科特·派克
    ios脱壳
    docker 容器开机自启
    Java8 Stream的使用
    Entity Frameworker 的核心 EDM(Entity Data Model)模式
  • 原文地址:https://www.cnblogs.com/liyue3/p/14962387.html
Copyright © 2011-2022 走看看