概述
在某项目中,因为没有设置实际线边仓,我们在调试小车的时候添加了一个虚拟线边仓来模拟上下料,但是当小车到达线边仓上料或下料的时候,要手动给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心跳值的小程序所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复