TCP服务器与ESP8266通信之QT开发TCP服务器客户端(学习笔记)

#1.UI界面布局

	MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    // 初始化窗口
    ui->setupUi(this);
    this->setWindowTitle(tr("TCP Server"));
    bgColor = "#FFFFFF";
    borderColor = "#A6B5B8";
    borderRadius = 3;

    ui->label->setObjectName("label");
    ui->label->setText(tr("IP:"));
    ui->label->move(793,70);

    ui->txtIP1->setObjectName("txtIP1");
    ui->txtIP1->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
    connect(ui->txtIP1, SIGNAL(textChanged(QString)), this, SLOT(textChanged(QString)));

    ui->txtIP2->setObjectName("txtIP1");
    ui->txtIP2->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
    connect(ui->txtIP2, SIGNAL(textChanged(QString)), this, SLOT(textChanged(QString)));

    ui->txtIP3->setObjectName("txtIP1");
    ui->txtIP3->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
    connect(ui->txtIP3, SIGNAL(textChanged(QString)), this, SLOT(textChanged(QString)));

    ui->txtIP4->setObjectName("txtIP1");
    ui->txtIP4->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
    connect(ui->txtIP4, SIGNAL(textChanged(QString)), this, SLOT(textChanged(QString)));


    //设置IP地址校验过滤
    QRegExp regExp("(2[0-5]{2}|2[0-4][0-9]|1?[0-9]{1,2})");
    QRegExpValidator *validator = new QRegExpValidator(regExp, this);
    ui->txtIP1->setValidator(validator);
    ui->txtIP2->setValidator(validator);
    ui->txtIP3->setValidator(validator);
    ui->txtIP4->setValidator(validator);

    //绑定事件过滤器,识别键盘按下
    ui->txtIP1->installEventFilter(this);
    ui->txtIP2->installEventFilter(this);
    ui->txtIP3->installEventFilter(this);
    ui->txtIP4->installEventFilter(this);

    ui->frame->setObjectName("frameIP");
    ui->frame->resize(200,50);
    ui->frame->move(830,50);
    QStringList qss;
    qss.append(QString("QFrame#frameIP{border:1px solid %1;border-radius:%2px;}").arg(borderColor).arg(borderRadius));
    qss.append(QString("QLabel{min-width:15px;background-color:%1;}").arg(bgColor));
    qss.append(QString("QLineEdit{background-color:%1;border:none;}").arg(bgColor));
    qss.append(QString("QLineEdit#txtIP1{border-top-left-radius:%1px;border-bottom-left-radius:%1px;}").arg(borderRadius));
    qss.append(QString("QLineEdit#txtIP4{border-top-right-radius:%1px;border-bottom-right-radius:%1px;}").arg(borderRadius));
    ui->frame->setStyleSheet(qss.join(""));
    QVBoxLayout *verticalLayout = new QVBoxLayout(this);
    verticalLayout->setMargin(0);
    verticalLayout->setSpacing(0);
    verticalLayout->addWidget(ui->frame);

    ui->layout->setParent(ui->frame);
    ui->layout->setMargin(0);
    ui->layout->setSpacing(0);

    ui->layout->setParent(ui->frame);
    ui->layout->setMargin(0);
    ui->layout->setSpacing(0);
    ui->layout->addWidget(ui->txtIP1);
    ui->layout->addWidget(ui->labDot1);
    ui->layout->addWidget(ui->txtIP2);
    ui->layout->addWidget(ui->labDot2);
    ui->layout->addWidget(ui->txtIP3);
    ui->layout->addWidget(ui->labDot3);
    ui->layout->addWidget(ui->txtIP4);
    ui->portlabel->setText(tr("portnum:"));
    ui->portlabel->move(760,138);
    ui->PortLineEdit->move(830,130);

}

以上是部分代码,参考他人编写的部分控件,初步的搭建了UI界面,待完善。。。
以上只是记录学习笔记。。。。。。

##待续。。。。。。。。。
IP地址输入框改编他人的控件,传送门。。。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用HAL库与ESP8266模块进行通信,同时在Qt端实现相关功能。下面是一个简单的示例代码,演示了如何使用HAL库与ESP8266进行通信,并在Qt端实现消息的发送和接收。 首先,你需要在Qt项目中添加串口通信的库文件,比如`QSerialPort`。然后,在Qt的代码中引入相关头文件: ```cpp #include <QSerialPort> #include <QSerialPortInfo> ``` 接下来,你可以创建一个`QSerialPort`对象,并设置相应的串口参数,比如波特率、数据位、校验位等。然后打开串口连接: ```cpp QSerialPort serial; serial.setPortName("COM1"); // 设置串口号 serial.setBaudRate(QSerialPort::Baud115200); // 设置波特率 serial.setDataBits(QSerialPort::Data8); // 设置数据位 serial.setParity(QSerialPort::NoParity); // 设置校验位 serial.setStopBits(QSerialPort::OneStop); // 设置停止位 if (serial.open(QIODevice::ReadWrite)) { // 串口连接成功 } else { // 串口连接失败 } ``` 接下来,你可以使用`QSerialPort`对象的`write`函数发送数据给ESP8266模块。比如发送一个AT指令: ```cpp QString command = "AT\r\n"; serial.write(command.toUtf8()); ``` 然后,你可以通过`QSerialPort`对象的`readyRead`信号来接收从ESP8266模块发送过来的数据。可以在槽函数中处理接收到的数据: ```cpp connect(&serial, SIGNAL(readyRead()), this, SLOT(handleSerialData())); ... void YourClass::handleSerialData() { QByteArray data = serial.readAll(); // 处理接收到的数据 } ``` 这样,你就可以通过Qt端与ESP8266模块进行通信了。当然,具体的通信协议和功能实现需要根据你的需求进行进一步的开发和调试。希望对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值