#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include<snap7.h>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
TS7Client *plc;
private slots:
void on_btn_connect_clicked();
void on_btn_disconnect_clicked();
void on_btn_read_clicked();
void on_pushButton_4_clicked();
void on_btn_read_2_clicked();
void on_pushButton_5_clicked();
private:
Ui::Widget *ui;
word slot_HighChangeLow(word buff);
};
#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
#include<QtDebug>
#include<QMessageBox>
#include<vector>
#include<QByteArray>
#include<QDataStream>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
plc = new TS7Client;
plc->SetConnectionType(0x03);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_btn_connect_clicked()
{ QString strip = ui->lineEdit->text();
std::string stri = strip.toStdString();
const char *ip = stri.c_str();
qDebug()<<"ip:"<<ip<<endl;
int reg = plc->ConnectTo(ip,0,1);
if(reg==0){
QMessageBox::information(this,"tip","sucesss");
}else{
QMessageBox::information(this,"tip","failed");
}
}
void Widget::on_btn_disconnect_clicked()
{
plc->Disconnect();
}
void Widget::on_btn_read_clicked()
{
qint16 buff;
plc->DBRead(1,0,2,&buff);
buff = slot_HighChangeLow(buff);
qDebug()<<buff;
}
void Widget::on_pushButton_4_clicked()
{
word value = ui->lineEdit_2->text().toUShort();
value=slot_HighChangeLow(value);
plc->DBWrite(1,0,2,&value);
}
//16位的高低字节顺序变换
word Widget::slot_HighChangeLow(word buff){
word high = (buff>>8)&0xff;
word low = buff & 0xff;
word buff2 = (low<<8)|high;
return buff2;
}
void Widget::on_btn_read_2_clicked()
{
byte res[256] ={0};
plc->DBRead(1,0,10,&res);
bool a = res[0]>>0&1;
bool b = res[0]>>1&1;
bool c = res[0]>>2&1;
bool d = res[0]>>3&1;
bool e = res[0]>>4&1;
qDebug()<<a<<b<<c<<d<<e;
}
void Widget::on_pushButton_5_clicked()
{
}