init files
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
#ifndef Hd_SocketModule_PLC_H
|
||||
#define Hd_SocketModule_PLC_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QMap>
|
||||
#include <QQueue>
|
||||
#include <QMutex>
|
||||
#include <QByteArray>
|
||||
#include <Windows.h>
|
||||
#include <msclr/marshal_cppstd.h>
|
||||
#using "../../bin/HslCommunication.dll"
|
||||
|
||||
#pragma execution_character_set("utf-8")
|
||||
|
||||
/*
|
||||
PLC通信模块管理类
|
||||
*/
|
||||
|
||||
class Hd_SocketModule_PLC : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
union PlcImpl
|
||||
{
|
||||
gcroot<HslCommunication::Profinet::Omron::OmronFinsNet^>* FinsTcp;
|
||||
gcroot<HslCommunication::ModBus::ModbusTcpNet^>* ModBusTcp;
|
||||
gcroot<HslCommunication::Profinet::Melsec::MelsecMcAsciiNet^>* McAscii;
|
||||
gcroot<HslCommunication::Profinet::Melsec::MelsecA1ENet^>* McA1E;
|
||||
gcroot<HslCommunication::Profinet::Melsec::MelsecMcNet^>* McBinary;
|
||||
gcroot<HslCommunication::Profinet::Panasonic::PanasonicMcNet^>* PanasonicMc;
|
||||
gcroot<HslCommunication::Profinet::Inovance::InovanceH5UTcp^>* InovanceTcp;
|
||||
|
||||
PlcImpl()
|
||||
{
|
||||
FinsTcp = new gcroot<HslCommunication::Profinet::Omron::OmronFinsNet^>;
|
||||
ModBusTcp = new gcroot<HslCommunication::ModBus::ModbusTcpNet^>;
|
||||
McAscii = new gcroot<HslCommunication::Profinet::Melsec::MelsecMcAsciiNet^>;
|
||||
McA1E = new gcroot<HslCommunication::Profinet::Melsec::MelsecA1ENet^>;
|
||||
McBinary = new gcroot<HslCommunication::Profinet::Melsec::MelsecMcNet^>;
|
||||
PanasonicMc = new gcroot<HslCommunication::Profinet::Panasonic::PanasonicMcNet^>;
|
||||
InovanceTcp = new gcroot<HslCommunication::Profinet::Inovance::InovanceH5UTcp^>;
|
||||
|
||||
*FinsTcp = nullptr;
|
||||
*ModBusTcp = nullptr;
|
||||
*McAscii = nullptr;
|
||||
*McA1E = nullptr;
|
||||
*McBinary = nullptr;
|
||||
*PanasonicMc = nullptr;
|
||||
*InovanceTcp = nullptr;
|
||||
}
|
||||
};
|
||||
|
||||
public:
|
||||
explicit Hd_SocketModule_PLC(int type = -1, QObject* parent = nullptr);
|
||||
~Hd_SocketModule_PLC();
|
||||
|
||||
//通信的初始化参数
|
||||
virtual bool setParameter(const QMap<QString, QString>& param);
|
||||
|
||||
//通信:获取初始化示例参数
|
||||
virtual QMap<QString, QString> parameters();
|
||||
|
||||
//初始化(创建对象并连接到PLC服务器)
|
||||
virtual bool init();
|
||||
|
||||
//写入数据
|
||||
virtual bool setData(const QByteArray& data);
|
||||
|
||||
//获取数据
|
||||
virtual bool data(QByteArray& data);
|
||||
|
||||
protected:
|
||||
void initUnionGcMembers();
|
||||
bool initFinsTcp();
|
||||
bool initModbusTcp();
|
||||
bool initMcAscii();
|
||||
bool initMcA1E();
|
||||
bool initMcBinary();
|
||||
bool initPanasonicMc();
|
||||
bool initInovanceTcp();
|
||||
bool closeSocket();
|
||||
|
||||
bool writeShortData(const QByteArray& addr, const QList<QByteArray>& data);
|
||||
bool writeFloatData(const QByteArray& addr, const QList<QByteArray>& data);
|
||||
bool writeDoubleData(const QByteArray& addr, const QList<QByteArray>& data);
|
||||
bool writeStringData(const QByteArray& addr, const QByteArray& data);
|
||||
|
||||
private:
|
||||
//参数设置的数据
|
||||
QMap<QString, QString> m_params{};
|
||||
int m_plcType = -1;
|
||||
PlcImpl m_plcImpl;
|
||||
int m_sleepTime = 1;
|
||||
|
||||
QMutex* m_writeMutex = new QMutex();
|
||||
QMutex* m_readMutex = new QMutex();
|
||||
QQueue<QByteArray> m_readData;
|
||||
QQueue<QByteArray> m_failedData;
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user