#树莓派#使用QT实现串口信息检测与网络通信

软件功能

能够对串口传来的信息进行判断,对于不同的信息,发送与之所对应的http请求到服务器,由服务器来进行之后的响应。

软件要求

1.能实现简单的串口信息检测
2.能通过http请求与服务器建立连接
3.有一个直观的界面

软件工作环境

基于树莓派3B+的Raspbian OS
QT5

代码

broadcast.pro

因为程序需要使用串口与网络通信,所以需要加上

QT 		+= serialport
QT 		+= network

以下是完整代码

#-------------------------------------------------
#
# Project created by QtCreator 2019-07-23T09:59:43
#
#-------------------------------------------------

QT       += core gui
QT       += serialport
QT       += network

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = broadcast
TEMPLATE = app

# The following define makes your compiler emit warnings if you use
# any feature of Qt which has been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
DEFINES += UNICODE

# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0


SOURCES += \
        main.cpp \
        broadcast.cpp

HEADERS += \
        broadcast.h

FORMS += \
        broadcast.ui

broadcast.h

串口部分

需要引用的头文件为

#include <QSerialPort>
#include <QSerialPortInfo>

在private中,需要定义串口的指针usb_1、usb_2、usb_3、usb_4(考虑到树莓派有4个USB口,故定义4个指针),实现对4个串口的定义与控制。
同时需要定义4个串口读取的函数:

此处之所以将串口读取另定义函数,是因为一方面是方便后续的集中对比,一方面是方便后续如果需要对串口传来的信息进一步处理的话预留好函数

	QSerialPort *usb_1;
    QSerialPort *usb_2;
    QSerialPort *usb_3;
    QSerialPort *usb_4;
    void readMyCom_1();
    QByteArray temp_1;
    void readMyCom_2();
    QByteArray temp_2;
    void readMyCom_3();
    QByteArray temp_3;
    void readMyCom_4();
    QByteArray temp_4;

temp_1等是为了方便之后对串口传来的信息进行同意判断而定义的全局变量。

完整代码如下:

#ifndef BROADCAST_H
#define BROADCAST_H

#include <QMainWindow>
#include <QSerialPort>
#include <QSerialPortInfo>
#include <QNetworkRequest>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QSettings>


namespace Ui {
   
class broadcast;
}

class broadcast : public QMainWindow
{
   
    Q_OBJECT

public:
    explicit broadcast(QWidget *parent = 0);
    ~broadcast();

private:
    Ui::broadcast *ui;
    QSerialPort *usb_1;
    QSerialPort *usb_2;
    QSerialPort *usb_3;
    QSerialPort *usb_4;
    void readMyCom_1();
    QByteArray temp_1;
    void readMyCom_2();
    QByteArray temp_2;
    void readMyCom_3();
    QByteArray temp_3;
    void readMyCom_4();
    QByteArray temp_4;
    void judge();
    QNetworkRequest request;
    QNetworkAccessManager* naManager;
    QSettings *config;
    QString ip;
    QString port;
    QString project;
    QString id1;
    QString id2;

private slots:
    void server_change_clicked();
    void server_test_clicked();
    void http_finished(QNetworkReply*);
};

#endif // BROADCAST_H

main.cpp

自动生成,无需修改

#include "broadcast.h"
#include <QApplication>

int main(int argc, char *argv[
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值