Qt5调用Snap7

Snap7是一个与西门子PLC通信的开源库, 在网上下载了一个例子, 研究了一天终于通信成功了, 在此记录一下

项目文件

win32:LIBS += C:\Qt\Qt5.7.0\Tools\mingw530_32\i686-w64-mingw32\lib\libws2_32.a
win32:LIBS += C:\Qt\Qt5.7.0\Tools\mingw530_32\i686-w64-mingw32\lib\libwinmm.a

INCLUDEPATH += snap7-full-1.4.2/release/Wrappers/c-cpp/ \
               snap7-full-1.4.2/src/lib/ \
               snap7-full-1.4.2/src/core/ \
               snap7-full-1.4.2/src/sys/

SOURCES += main.cpp\
        mainwindow.cpp \
    snap7-full-1.4.2/release/Wrappers/c-cpp/snap7.cpp \
    snap7-full-1.4.2/src/core/s7_client.cpp \
    snap7-full-1.4.2/src/core/s7_isotcp.cpp \
    snap7-full-1.4.2/src/core/s7_micro_client.cpp \
    snap7-full-1.4.2/src/core/s7_partner.cpp \
    snap7-full-1.4.2/src/core/s7_peer.cpp \
    snap7-full-1.4.2/src/core/s7_server.cpp \
    snap7-full-1.4.2/src/core/s7_text.cpp \
    snap7-full-1.4.2/src/lib/snap7_libmain.cpp \
    snap7-full-1.4.2/src/sys/snap_msgsock.cpp \
    snap7-full-1.4.2/src/sys/snap_sysutils.cpp \
    snap7-full-1.4.2/src/sys/snap_tcpsrvr.cpp \
    snap7-full-1.4.2/src/sys/snap_threads.cpp

HEADERS  += mainwindow.h \
    snap7-full-1.4.2/release/Wrappers/c-cpp/snap7.h \
    snap7-full-1.4.2/src/core/s7_client.h \
    snap7-full-1.4.2/src/core/s7_firmware.h \
    snap7-full-1.4.2/src/core/s7_isotcp.h \
    snap7-full-1.4.2/src/core/s7_micro_client.h \
    snap7-full-1.4.2/src/core/s7_partner.h \
    snap7-full-1.4.2/src/core/s7_peer.h \
    snap7-full-1.4.2/src/core/s7_server.h \
    snap7-full-1.4.2/src/core/s7_text.h \
    snap7-full-1.4.2/src/core/s7_types.h \
    snap7-full-1.4.2/src/lib/snap7_libmain.h \
    snap7-full-1.4.2/src/sys/snap_msgsock.h \
    snap7-full-1.4.2/src/sys/snap_platform.h \
    snap7-full-1.4.2/src/sys/snap_sysutils.h \
    snap7-full-1.4.2/src/sys/snap_tcpsrvr.h \
    snap7-full-1.4.2/src/sys/snap_threads.h \
    snap7-full-1.4.2/src/sys/sol_threads.h \
    snap7-full-1.4.2/src/sys/unix_threads.h \
    snap7-full-1.4.2/src/sys/win_threads.h

libws2_32.a libwinmm.a这两个文件的路径要在本机上找.

连接PLC并进行读写

void MainWindow::on_pushButton_clicked() // 连接
{
    QByteArray ad(ui->lineEdit->text().toUtf8());
    char *Address;
    Address = ad.data();
    int Rack = ui->lineEdit_2->text().toInt();
    int Slot = ui->lineEdit_3->text().toInt();
    int tmp = Client->ConnectTo(Address, Rack, Slot);;
    showLog("建立连接", QString::number(tmp));
}
void MainWindow::on_pushButton_3_clicked() // write DB
{
    qint32 buff = ui->lineEdit_5->text().toInt();
    qDebug() << "write:" << buff;
    Client->DBWrite(8007, 12, 4, &buff);
}

void MainWindow::on_pushButton_4_clicked() // read DB
{
    qint32 buff;
    Client->DBRead(8007, 12, 4, &buff);
    qDebug() << "read:" << buff;
}

测试可以正常读写DB块.在这里插入图片描述

附代码下载链接:https://download.csdn.net/download/qq_18822805/21648626

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值