Newer
Older
ZXSSCJ / CounterAcq / CounterWindow.cpp
tan yue on 20 Oct 2021 2 KB 20211020 mock counter data frame
#include "CounterWindow.h"
#include "ui_CounterWindow.h"

#include <iostream>
#include <QTimer>
#include <QDateTime>

CounterWindow::CounterWindow(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::CounterWindow)
{
    ui->setupUi(this);

    QString portNames = SettingConfig::getInstance().PORT_NAMES;
    int baudRate = SettingConfig::getInstance().BAUD_RATE;
    QString devCodes = SettingConfig::getInstance().DEV_CODES;

    QStringList comDevList = portNames.split(",");
    QStringList devCodeList = devCodes.split(",");

    for (int i = 0; i < comDevList.size(); i++)
    {
        CounterDevice * device = new CounterDevice(this);

        //
//        connect(device, &CounterDevice::sendDataToDraw,
//                this, &CounterWindow::drawPhaseDataOnPage);

        device->setComName(comDevList.at(i));
        device->setBaudRate(baudRate);

        device->setDevCode(devCodeList.at(i));

//        this->deviceList.append(device);

        device->initSerialPort();
//        device->startWork();
    }

    timer = new QTimer(this);
    timer->start(1000 * 10);
}

CounterWindow::~CounterWindow()
{
    delete ui;
}

void CounterWindow::on_pushButton_clicked()
{
    connect(timer, &QTimer::timeout,
            this, &CounterWindow::mockOneFrame);
}

void CounterWindow::mockOneFrame()
{
    qlonglong deviceId = 9101;

    QKafkaUtil * kafkaUtil = new QKafkaUtil(this);
    kafkaUtil->setBrokers(SettingConfig::getInstance().KAFKA_BROKERS);
    kafkaUtil->setTopic(SettingConfig::getInstance().KAFKA_DATA_TOPIC);
    kafkaUtil->createProducer();

    QDateTime now = QDateTime::currentDateTime();

    QString frameId = QString("%1").arg(now.toSecsSinceEpoch() % 10000);
    qlonglong ts = now.toMSecsSinceEpoch();

    for (int i = 0; i < 16; i++) {
        CounterDataDto channelDataDto;

        channelDataDto.devCode = deviceId;

        channelDataDto.frameId = frameId;
        channelDataDto.channelData = qrand() % 400;
        channelDataDto.channelRefId = 0;
        channelDataDto.channelId = i;
        channelDataDto.milisecond = ts;
        channelDataDto.timestamp = now.toString("yyyyMMddHHmmssZZZ");

        QJsonObject dtoJson = channelDataDto.toJSON();
        dtoJson.insert("clientId", SettingConfig::getInstance().CLIENT_ID);
        dtoJson.insert("deviceId", deviceId);

        std::cout << QString(QJsonDocument(dtoJson).toJson(QJsonDocument::Compact)).toStdString() << std::endl;

        kafkaUtil->produceMessage(QString(QJsonDocument(dtoJson).toJson(QJsonDocument::Compact)));
    }
}

void CounterWindow::on_pushButton_2_clicked()
{
    disconnect(timer, &QTimer::timeout,
               this, &CounterWindow::mockOneFrame);
}