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

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

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

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#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部分的代码:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#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心跳值内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部