这个是我实训做的项目,是模拟对无人机姿态的控制,实现对无人机飞行数据的分析,项目主要分为登录窗口,客户端和服务器端
项目主题界面:

需求分析:
1、设计本地登录界面及云端平台界面。
2、根据用户登录信息的不同,选择不同的云端用户级别,具体为user和vip。
3、普通用户只能查看实时数据、自动给出实时建议,超级用户可以查看实时数据、历史数据、统计数据判断是否危险飞行、生成事故报告
4、创建数据库,保存两张表,表1判断云端用户级别及用户登录验证,表2记录一定时间内的飞机姿态数据
5、事故报告以文档(word、pdf)形式生成
功能分析:
1、可以根据用户级别的不同授权不同的内容查看。
2、可以使用模拟终端(滑动按钮)来改变机身角度的值。
3、通过计算机网络将数据进行传输。
4、可以实时改变验证平台上图形的状态。
5、可以实时记录机身角度改变的内容并保存到数据库中
总体设计:

我先从登录界面开始说起吧
登录界面的设计:


登录界面主要分为用户登录和管理员登录,运用了Sqlite轻量级数据库,可实现账号的注册,在普通用户界面加了一个验证码的功能,其实是通过随机数来实现验证,主要的代码如下:
创建数据库和表
//创建数据库
QSqlDatabase db=QSqlDatabase::addDatabase("QSQLITE");
//QSqlDatabase db1=QSqlDatabase::addDatabase("QSQLITE");
//设置数据库名
db.setDatabaseName("pwd.db");
//db1.setDatabaseName("pwd1.db");
//打开数据
if(db.open())
{
qDebug()<<"open database success";
}else
{
qDebug()<<"open database fail";
}
//创建一个存储用户名密码的数据库表
QString tableuser="create table userinfo(username varchar(64),password varchar(64))";
QString tableadmin="create table userinfo1(username1 varchar(64),password1 varchar(64))";
实现注册:
QString username=ui->useredit->text();
QString password=ui->passedit->text();
QString cmd=QString("insert into userinfo values('%1','%2')")
.arg(username).arg(password);
QSqlQuery query;
if(username==NULL||password==NULL)
{
QMessageBox::information(this,"注册提示","用户名或密码不能为空");
}
else if(query.exec(cmd))
{
QMessageBox::information(this,"注册提示","注册成功");
}
服务器的实现:

服务器界面就是一个模拟无人机的圆

这里运用了Qpainter来绘制三角,圆等形状来实现对无人机的模拟,服务器接收来自客户端的消息,来进行角度的改变,接收来自客户端连接的信号:
if(svr->hasPendingConnections()){
socket = svr->nextPendingConnection();
connect(socket,SIGNAL(readyRead()),this,SLOT(slotRecv()));
qDebug() << "有设备连接";
}
接收客户端数据:
QByteArray array = socket->readAll();
QString str = QString::fromUtf8(array);
QString tmp;
int j = 0;
while(j<str.size()){
tmp.clear();
int k = 0;
for(j;j<str.length();j++)
{
if(str[j]>='0'&&str[j]<='9'||

本文介绍了作者完成的一个无人机姿态控制项目,涉及登录界面、用户级别管理、数据库设计、数据传输与图形展示。通过Sqlite数据库、模拟终端操作和网络通信,实现了用户权限区分(普通用户和VIP)、实时数据查看、事故报告生成等功能。
最低0.47元/天 解锁文章
2790





