day02
使用Qt上位机获取esp8266nodemcu的相关数据并插入数据库中,旨在实现相关控制与插入功能,后续的数据可视化可以参考大佬们的demo
一、准备工作
一块esp8266,安装arduinoIDE、Qt、navecate、mysql/**若没有mysql可直接采用sqllist。二、QT上位机
通信协议采用UDP(TCP同理),通过ip地址与端口实现数据获取与显示,主要用到socket。
代码如下
por文件添加network、与sql。
QT += core gui network
QT += sql
cpp文件。
2.建立界面如图:
绑定端口(.cpp程序)
void Widget::on_pushButton_2_clicked()
{
My_Port = ui->MyPort_Edit->text();
//My_Port为string类型,bind为int型
//绑定端口号,监听发送到端口的所有信息
m_udpSocket->bind(My_Port.toUInt());
}
这里的m_udpSocket为自定义的QUdpSocket指针
3.接受信息:
f1 udpsocket了解udp通信下的接受信号与槽,连接信号与槽实现数据显示;
参考
注意socket套接字触发的信号。
// 接受信息代码:
//接受信息
void Widget::recevMsg()
{
QHostAddress clientIP;
quint16 clientPort;
char buf[1024]={
0};
while (m_udpSocket->hasPendingDatagrams()) {
m_udpSocket->readDatagram(buf,sizeof(buf),&clientIP,&clientPort);
//定义数据格式
QString str = QString("[%1,%2] %3").arg(clientIP.toString()).arg(clientPort).arg(buf);
ui->textEdit->setPlainText(str);
}
// ui->textEdit->clear();
//参考csdn大佬方式
// QByteArray ba;
// while(m_udpSocket->hasPendingDatagrams())
// {
// ba.resize(m_udpSocket->pendingDatagramSize());
// m_udpSocket->readDatagram(ba.data(), ba.size());
// }
}
4.发送信息:
下面展示一些 内联代码片
。注意:socket通信下port为int型,所以要用qint!!!.
void Widget::on_pushButton_clicked()
{
//获取发送内容
QString Data = ui->lineEdit->text();
//获取IP号
qDebug()<<Data;
QString Any_IP = ui->AnyIP_Edit->text