这是大三所做的项目,距离完成项目的时间已经过去快十个月之久了,至于为什么今天想发出来是因为马上面临找工作了,想把所做的项目再复习复习,,希望能温故而知新吧O(∩_∩)O。
项目名称叫“智慧停车场”通过arduino等硬件设施来模拟停车场的场景,用QT写软件来实时监控停车场的周边环境以及车辆停放信息,通过WIFI实现软硬件的通信
这个小项目由window软件(SmartPark)+udp上行传输(用来实现硬件向软件发送数据)+udp下行传输(用来实现软件向硬件发送消息)+TCP登陆注册(登陆注册)+APP等等组成。 后面再陆续详细的说可能有点麻烦
刚完成时候录的视频
http://player.youku.com/player.php/sid/XMzgwNzIyNDgzMg==/v.swf
先从window软件说起吧:`
window主要由主页面类+消息接收类+消息事件处理类+数据库类+udp通信类。。。等等组成
主页面头文件

#ifndef SHOWPAGE_H
#define SHOWPAGE_H
#include<QPaintEvent>
#include<QMouseEvent>
#include <QWidget>
#include<QLabel>
#include<QPushButton>
#include<QTimer>#include "firepage.h"  //触发火焰传感器的效果界面
#include "camera.h"
#include "widget.h"     //一些硬件的控制界面
#include "areaclicked.h"    //重写鼠标点击事件,用来找主界面的坐标
#include"handle.h"  //事件处理类
class showpage : public QWidget
{Q_OBJECT
public:// explicit showpage(QWidget *parent = nullptr);showpage(QWidget *parent=0);~showpage();void carNUM();protected:void paintEvent(QPaintEvent *);void mouseReleaseEvent(QMouseEvent *);signals:public slots:void fristClickedSlot(); //鼠标点击触发的槽函数void secondClickedSlot();void thridClickedSlot();void fristChangSlot(bool);//收到单片机按钮按下信号所触发的槽函数void secondChangSlot(bool);void thridChangSlot(bool);void getCarNumSlot();// 获取当前车位数量信息
private:areaclicked *frist;areaclicked *second;areaclicked *thrid;bool friststat; //定义的三个车位的状态bool secondstat;bool thridstat;//QPixmap car[3];QLabel *label;QLabel *label1;QPushButton *pushButton;int carNum;QTimer *timer;QPushButton *controlFrame;Widget *w;FirePage *fire;Camera myCameraFrame;QPushButton *cameraButton;
};#endif // SHOWPAGE_H

源文件

#include "showpage.h"
#include <QPainter>
#include<QMouseEvent>
#include <QDebug>
#include<QIcon>
#include"handle.h"showpage::showpage(QWidget *parent) : QWidget(parent)
{//设置主窗口的大小图标名称this->setFixedSize(1600,900);this->setWindowIcon(QIcon(":/images/park.ico"));this->setWindowTitle("SmartPark");//初始化车位friststat=false;secondstat=false;thridstat=false;timer=new QTimer(this);label=new QLabel(this);label->setText("当前车位共148个");label->move(1394,818);label->setFont(QFont("Times",12,QFont::Bold));label1=new QLabel(this);label1->move(1394,840);// label1->setText("当前已用车位:148");label1->setFont(QFont("Times",12,QFont::Bold));connect(timer,SIGNAL(timeout()),this,SLOT(getCarNumSlot()));timer->start(100);timer->setInterval(500);// 给定义的Areaclick对象划定范围,即定义的范围收到点击即触发信号;
//    frist =new areaclicked(this);
//    frist->setGeometry(378,267,30,45);
//    connect(frist,SIGNAL(clicked()),
//            this,SLOT(fristClickedSlot()));//    second =new areaclicked(this);
//    second->setGeometry(339,0,360,768);
//    connect(second,SIGNAL(clicked()),
//            this,SLOT(secondClickedSlot()));//    thrid =new areaclicked(this);
//    thrid->setGeometry(712,0,312,768);
//    connect(thrid,SIGNAL(clicked()),
//            this,SLOT(thridClickedSlot()));connect(Handle::getobject(),SIGNAL(firstStatChange(bool)),this,SLOT(fristChangSlot(bool)));connect(Handle::getobject(),SIGNAL(secondStatChange(bool)),this,SLOT(secondChangSlot(bool)));connect(Handle::getobject(),SIGNAL(thridStatChange(bool)),this,SLOT(thridChangSlot(bool)));w=new Widget();controlFrame=new QPushButton(this);controlFrame->setText("控制页面");controlFrame->move(1231,9);connect(controlFrame,&QPushButton::clicked,[=](){w->show();});//监控cameraButton=new QPushButton(this);cameraButton->setText("监控");cameraButton->move(1231,50);connect(cameraButton,&QPushButton::clicked,[=](){myCameraFrame.show();});bool isShow;isShow=false;connect(Handle::getobject(),&Handle::fireStatChange,[=](){if(!isShow){fire=new FirePage();fire->show();}});}showpage::~showpage()
{}void showpage::paintEvent(QPaintEvent *)
{QPainter painter(this);painter.drawPixmap(0,0,this->width(),this->height(),QPixmap(":/images/parkground.jpg"));if(friststat){painter.drawPixmap(378,267,30,45,QPixmap(":/images/littlecar.jpg"));}if(secondstat){painter.drawPixmap(414,267,30,45,QPixmap(":/images/littlecar.jpg"));}if(thridstat){painter.drawPixmap(450,267,30,45,QPixmap(":/images/littlecar.jpg"));}}
//窗口坐标
void showpage::mouseReleaseEvent(QMouseEvent *e)
{qDebug()<<e->x()<<" "<<e->y()<<"    ";
}
//鼠标点击会改变信号
void showpage::fristClickedSlot()
{if(friststat)friststat=false;elsefriststat=true;this->update();
}void showpage::secondClickedSlot()
{if(secondstat)secondstat=false;elsesecondstat=true;this->update();
}void showpage::thridClickedSlot()
{if(thridstat)thridstat=false;elsethridstat=true;this->update();}
//在handle中根据收到的数据触发信号,改变车位状态
void showpage::fristChangSlot(bool stat)
{friststat=stat;this->update();
}void showpage::secondChangSlot(bool stat)
{secondstat=stat;this->update();
}void showpage::thridChangSlot(bool stat)
{thridstat=stat;this->update();
}
//获取
void showpage::getCarNumSlot()
{carNum=0;if(friststat)carNum++;if(secondstat)carNum++;if(thridstat)carNum++;QString a=QString::number(carNum);label1->setText(a.prepend("当前已用车位:"));}

这是用三个按钮模拟车辆停放(背景是一张图片)按钮按下代表车辆停放,本来是准备用红外或者什么的但是测试起来比较麻烦,就简单点用了三个按钮,当然还有许多其他的传感器。
后面将会陆续介绍其他的部分

处女作,,QT+arduino的物联网小项目相关推荐

  1. 制作一个有趣的涂鸦物联网小项目(涂鸦模组SDK开发 CBU BK7231N WiFi+蓝牙模组 HSV彩色控制)

    实现的功能: l  APP控制月球灯 l  本地月球灯控制 l  APP控制"大白"颜色,实现各种颜色变身 l  门状态传感器状态APP显示 l  网络状态指示灯,连接服务器长亮, ...

  2. 物联网小项目智能家居(QT、MQTT、嵌入式开发板、Ubuntu)

    项目框架: 概述:搭建一个物联网的实战小项目,为本阶段的学习做了一次总结及记录.把构建的整个过程分享出来给大家,项目难点在于各种环境的搭建,而代码逻辑并不难. 说明: (1)本项目总共涉及到了4个MQ ...

  3. 森林笔记:Linux+Qt的广告机小项目实践

    设计目标 在我们的日常生活中,会经常看到一些广告机,比如在我见过的电梯中就会有一个小广告机,显示有日期时间.楼层上下,图片广告,小视频播放等等.受此启发,也是做一个小广告机练手. 知识模块 [1]进程 ...

  4. 简单实现基于 STM32F407+ESP8266+RFID 的物联网小项目

    BusChargeSystem-IOT 项目介绍 基于 STM32F407+ESP8266+RFID 的模拟公交车刷卡收费系统(物联网) STM32 通过 RFID 识别获取卡片数据并通过串口发送到 ...

  5. Qt入门超级简单小项目(1)登录对话框

    环境:Windows10+Qt5 1.新建Qt Widgets Application,项目名称为login,类名和基类保持MainWindow和QMainWindow不变. 2.完成项目创建后,向项 ...

  6. Arduino开发小项目—光控灯

    @Arduino开发小项目-光控灯 本篇文章介绍光敏电阻,通过模拟输入采集环境光强来控制LED灯亮度,做一个无需人为干预的自动控制设备. 传感器是一种检测装置,能感受并采集到被测量的信息,在当下物联网 ...

  7. ESP32S2小项目-FM-网络时钟/电台-Arduino开发环境

    ESP32S2小项目,FM,网络时钟/电台,Arduino开发环境 效果展示 文章目录 ESP32S2小项目,FM,网络时钟/电台,Arduino开发环境 效果展示 开机动画: 网络时钟: FM模块: ...

  8. QT小项目--头脑风暴

    QT小项目--头脑风暴 项目演示: 客户端: 单人联网模式 双人匹配对战模式 单机本地练习模式 服务器 服务器主要功能 项目演示: 客户端: 登陆界面,有登陆功能和注册功能,当选择登陆时,如果无此账号 ...

  9. Arduino小项目1---esp8266 WiFi 签到机

    Arduino小项目1---ESP8266 WiFi 签到机 前言 0.使用的材料和软件 1.准备一个HTML网页 A.搭建出适合手机的页面框架 B.在body中加入表单元素 form标签:它的常用属 ...

最新文章

  1. 解锁bios学习总结
  2. 交通预测论文笔记:Spatio-Temporal Graph Convolutional Networks: A Deep Learning Frameworkfor Traffic Forecast
  3. 属性提取器:获取ListView即时更新其元素的最佳方法
  4. Python-100 练习题 02
  5. 中国互联网企业综合实力研究报告(2020)
  6. 换行符‘\n’和回车符‘\r’
  7. 深入玩转K8S之智能化的业务弹性伸缩和滚动更新操作
  8. python 判断是否连接wifi_python操作 linux连接wifi,查看wifi连接状态方法
  9. Python 3.9 正式版要来了,会有哪些新特性?
  10. 拼多多自动上架采集软件免费版教程下载
  11. 在浏览器输入localhost:3000显示需要新应用打开此localhost原因
  12. Dzz任务板初版完成笔记-仿trello私有部署的一款轻量团队任务协作工具。
  13. Python二进制内容转为中文(二进制转中文)
  14. Java线程中的静态方法_Java多线程3:Thread中的静态方法
  15. 邵阳学院计算机系主任,湖南教育大平台-湖南省计算机教育年会在邵阳学院召开...
  16. Android模拟器的ip获取以及模拟器之间socket通信
  17. Python 算法设计与分析 投资问题
  18. iOS经典错误library not found for -lXXX
  19. python 两个等长list的各对应位置元素相加+两个字典相加,相同键元素累加,不同键元素取全集
  20. 利用随机森林进行特征重要性排序

热门文章

  1. Mysql免安装版win精简教程
  2. VMware安装Centos7_64位系统安装步骤
  3. 安恒信息网络空间测绘解决方案:Sumap全球网络空间超级雷达
  4. linux一键分区脚本,【Shell】Linux中分区脚本
  5. linux 打开三维stl文件,三维stl文件查看工具下载
  6. Linux-vim设置
  7. 计算机科学与探索、计算机工程与应用投稿经验分享
  8. 商城电商day 06 三、商品详情业务需求分析
  9. 在计算机英语中input的意思,input是什么意思
  10. 共线性诊断 matlab,求共线性诊断结果的含义