8795|21

38

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

晒用QT实现的-----人员室内定位与报警系统 [复制链接]

 
我是弱菜一枚,今年刚接触嵌入式,在此晒程序实在是班门弄斧了,望各位大神海涵~

这是今年暑假我们参加物联网大赛时做的一个小项目,凑巧我正好负责QT部分,庆幸当时的资料和拍的照片还在(当时比赛要求开发过程拍照全程记录),稍加整理就发上来啦,哈哈。

项目是在 cortex-A8平台上完成的,由zigbee,蓝牙,cortex-a8网关,服务器以及移动终端组成,实现人员的室内准确定位,运动轨迹追踪,运动模式判断,运动轨迹图绘制,以及室内环境侦测等功能。


我负责的QT部分,在linux下的QT完成程序的编写,生成arm内核后运行在A8上,负责通过串口读取温湿度传感器,红外线,光照传感器和蓝牙模块传来的数据,在通过路由器发送到服务器的同时,将数据进行简单的处理并显示出来,已经接受服务器返回的实现人员状态信息进行报警等功能。


下面是界面,界面修改了好几次,小组里没有专业美工真是忧伤,





这是最初的界面,有点惨不忍睹




这是最终的界面,本身是要做3D效果,后来。。。就没有后来了。。。。 实在算不上酷炫,不过也是PS了一整夜的结果了。。。
温湿度显示,人员状态显示,人员室内位置的实时显示~




调试过程的截屏





PC运行的照片






然后是烧写在cortex-A8上的运行图,这个时候功能基本都实现了



各种传感器模块也发一下吧~




最后发一下QT代码的截图,代码也是很菜 ~ - -。








简单的解释一下代码,因为我们项目大多数数据分析处理都是在服务器完成的,所以QT部分的代码比较简单,只是完成了串口的读取,数据的发送以及传感器数据的显示功能。
qextserialbase.h 和 posix_qextserialport.h 是两个封装好的QT串口通信的类,我只是简单的修改一下波特率和串口名就能用了。
代码主要部分也就 widget.cpp里的一点点了。
readMyCom()用来读串口,然后干脆也把数据显示加进去了,都是用的label显示字符串 .....


//读取串口数据
void Widget::readMyCom()
{

QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
QString yes ="有人活动";
QString no ="无人活动";
if(myCom->bytesAvailable() > 0)
{
qDebug()<<"read:"<bytesAvailable()<<"byte";
//获取串口数据
QByteArray temp = myCom->readAll();
//将数据转化为Qstring格式
QString buffer = QString(temp);
//对字符串进行处理,规范格式
URLSTR = "http://192.168.1.100/";
URLSTR +="?fun=qt&wendu=";
URLSTR+=(buffer.mid(3,2));
qDebug()< URLSTR +="&shidu=";
URLSTR+=(buffer.mid(9,2));
qDebug()< URLSTR +="&renti=";
URLSTR+=(buffer.mid(15,1));
qDebug()< //设置网关屏幕温度显示
ui->wendu->setText((buffer.mid(3,2)));
//设置网关屏幕湿度显示
ui->shidu->setText((buffer.mid(9,2)));
ui->wendu->setStyleSheet("color:red");
ui->shidu->setStyleSheet("color:red");

if(buffer.mid(15,1)=="1")
ui->zhuangtai->setText(yes);
else
ui->zhuangtai->setText(no);
ui->zhuangtai->setStyleSheet("color:red");
//启动httpget函数,向服务器发送和接收数据
senddata();

}
}





发送和接受服务器数据 ~这一部分写的也是够乱的解析url读取服务器数据,进行简单的字符串转换就在label上显示出来啦~人物图片移动用的qmove总是反正是很水啦 见笑


void Widget::senddata()
{

QUrl url(URLSTR);
QNetworkAccessManager manager;
QEventLoop loop;
QTextCodec *codec;
QNetworkReply *reply;
// qDebug() << "Reading String code form " << URLSTR;
reply = manager.get(QNetworkRequest(url));
//请求结束并下载完成后,退出子事件循环
QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
//开启子事件循环
loop.exec();
//获取源码,打开文件
QFile file(FILE_NAME);
if( !file.open(QIODevice::WriteOnly | QIODevice::Text) )
{
qDebug() << "Cannot open the file: " << FILE_NAME;

}
QTextStream out(&file);
//获取服务器返回值
QString codeContent = reply->readAll();

//将获取到的网页源码写入文件
codec = QTextCodec::codecForHtml(codeContent.toAscii());
codeContent = codec->toUnicode(codeContent.toAscii());

qDebug() << codeContent;
qDebug() < qDebug() < int x=codeContent.mid(1,3).toInt();
int y=codeContent.mid(4,3).toInt();
if(x>=0&&x<=800&&y>=0&&y<=600)
{
x=150+x*0.6;
y=20+y*0.46;
ui->laotou->move(x,y);
}
//移动实时定位坐标
QString netok ="连接成功";
QString netbad ="未连接";
if(codeContent.mid(0,1)=="t")
ui->labelnet->setText(netok);
else
ui->labelnet->setText(netbad);
ui->labelnet->setStyleSheet("color:red");
QString sos ="紧急警报!";
if(codeContent.mid(7,1)=="f")
ui->labelbj->setText(sos);
else
ui->labelbj->setText("");
ui->labelbj->setStyleSheet("color:red");

file.close();

}




最后的最后就把代码给大家分享一下吧,我是弱菜,大家拿去嘲讽吧 ~ QT.zip (2.24 MB, 下载次数: 20)

最新回复

无法下载  详情 回复 发表于 2019-1-3 20:16

赞赏

1

查看全部赞赏

点赞 关注
 
 

回复
举报

38

帖子

0

TA的资源

一粒金砂(中级)

推荐
 

IMG_2556.JPG (1.91 MB, 下载次数: 0)

IMG_2556.JPG
 
 
 

回复

38

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
我的图片呢???
 
 
 

回复

2056

帖子

0

TA的资源

五彩晶圆(初级)

4
 
好牛逼。向楼主学习

点评

我是菜鸟~  详情 回复 发表于 2014-11-9 08:29
 
 
 

回复

38

帖子

0

TA的资源

一粒金砂(中级)

5
 
IC爬虫 发表于 2014-11-9 00:02
好牛逼。向楼主学习

我是菜鸟~
 
 
 

回复

234

帖子

0

TA的资源

一粒金砂(高级)

6
 
本帖最后由 foxpro2005 于 2014-11-9 10:08 编辑

确实,界面不怎么样, 不过能做这个程度也算可以了
 
 
 

回复

662

帖子

0

TA的资源

纯净的硅(初级)

7
 
不错的资料,感谢分享
 
 
 

回复

3238

帖子

5

TA的资源

五彩晶圆(中级)

8
 
定位数据是真实准确的嘛?

点评

这个确实误差很大,只能做到人往哪走 小人往哪动。。。。  详情 回复 发表于 2014-11-10 21:27
个人签名淘宝:https://viiot.taobao.com/Q群243090717
多年专业物联网行业经验,个人承接各类物联网外包项目
 
 
 

回复

38

帖子

0

TA的资源

一粒金砂(中级)

9
 
wateras1 发表于 2014-11-10 17:01
定位数据是真实准确的嘛?

这个确实误差很大,只能做到人往哪走 小人往哪动。。。。
 
 
 

回复

3028

帖子

0

TA的资源

五彩晶圆(初级)

10
 

我是弱菜一枚,今年刚接触嵌入式,在此晒程序实在是班门弄斧了,望各位大神海涵~
这个菜鸟很牛逼啊
 
 
 

回复

138

帖子

0

TA的资源

一粒金砂(中级)

11
 
好,我还没开始做呢。学习了。

点评

加油  详情 回复 发表于 2014-11-25 21:16
 
 
 

回复

38

帖子

0

TA的资源

一粒金砂(中级)

12
 
wtliu 发表于 2014-11-25 13:00
好,我还没开始做呢。学习了。

加油
 
 
 

回复

1891

帖子

2

TA的资源

纯净的硅(中级)

13
 
楼主我也在做室内定位,能交流一下吗?
我的qq:574433742
个人签名
分享铸就美好未来。。。




 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(初级)

14
 
学习了
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

15
 
楼主 我阅读权限不够 能否方便发我邮箱呢 急用  邮箱scott1990623@163.com
 
 
 

回复

1万

帖子

2853

TA的资源

管理员

16
 
牛!
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

17
 
很好,谢谢分享。都是弱菜开始的
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(中级)

18
 
赞一个,来学习呀,谢谢楼主啊~
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

19
 
做得挺好得
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

20
 
已经做得不错了
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表