我是靠谱客的博主 感动发箍,最近开发中收集的这篇文章主要介绍一个改写Modebus心跳值的小程序,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在某项目中,因为没有设置实际线边仓,我们在调试小车的时候添加了一个虚拟线边仓来模拟上下料,但是当小车到达线边仓上料或下料的时候,要手动给Modebus心跳的信号,非常麻烦。为了解决这个问题,郑工手写了一个程序,来控制虚拟线边仓的心跳,实现自动化操作。

下边给出代码:
mainwindow.h部分的代码:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QTimer>
#include <QModbusTcpClient>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

    void connectModbus(QString ip, int port);


public slots:
    void timeToPing();

private:
    Ui::MainWindow *ui;

    QTimer *timer;  //此处可以使用指针,也可以使用变量
    QModbusTcpClient *client;  //此处可以使用指针,也可以使用变量
    bool ping = false;
};
#endif // MAINWINDOW_H

下面是mainwindow.cpp部分的代码:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>


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

    //
    timer = new QTimer;
    connect(timer, &QTimer::timeout, this, &MainWindow::timeToPing);  //用连接函数将定时器与timetoping改写心跳值函数连接起来
    timer->start(500);  //将定时器的间隔设置为500ms
    client = new QModbusTcpClient();
}

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

void MainWindow::connectModbus(QString ip, int port) //创建连接目标modbus的函数
{
    client->setConnectionParameter(QModbusDevice::NetworkPortParameter, port); //获取port
    client->setConnectionParameter(QModbusDevice::NetworkAddressParameter, ip);//获取IP
    client->connectDevice();//连接modbus
}

void MainWindow::timeToPing()
{
    //qDebug() << "time out!";
    connectModbus("127.0.0.1", 5502);//先连接目标modbus
    QVector<quint16> data;
    data << ping;
    QModbusDataUnit dataUnit(QModbusDataUnit::Coils, 1958, data);//此处控制目标盒子心跳的ID是1958
    client->sendWriteRequest(dataUnit, 1); //函数第二参数指的是读写coil的Slave ID,此处的ID是1
    ping = !ping;  //心跳的值不停地变为0或1
}

将该小程序打包:
找到运行该程序后的编译文件路径:
C:UsersMakerDocumentsQt Creatorbuild-autoPing-Desktop_Qt_5_14_2_MinGW_64_bit-Debug(这个是我电脑上的路径)

进入/debug可以看到有以下文件:
在这里插入图片描述
在这里新建一个文件夹/pack(我们将小程序打包到这个文件夹里面),将autoPing.exe文件拷贝进去,然后运行Qt 5.14.2(MinGW 7.3.0 64bit)在命令行中输入上面的pack文件夹所在的路径:
在这里插入图片描述
再输入windeployqt autoPing.exe:
在这里插入图片描述
到这里可以看到命令提示符窗口中有许多输出提示:
在这里插入图片描述
在这里插入图片描述
现在可以看到pack文件夹里已经有autoPing.exe的配置文件和相关库了。将autoPing.exe发送至桌面快捷方式,点击该快捷方式即可以运行程序。

最后

以上就是感动发箍为你收集整理的一个改写Modebus心跳值的小程序的全部内容,希望文章能够帮你解决一个改写Modebus心跳值的小程序所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部