init files

This commit is contained in:
rci
2024-09-27 14:31:22 +08:00
parent d04db633b4
commit a2ce7826dc
407 changed files with 123645 additions and 93 deletions
@@ -0,0 +1,622 @@
#include"Hd_SocketModule_PLC.h"
#include <QDebug>
#include <QDateTime>
#include "pbglobalobject.h"
Hd_SocketModule_PLC::Hd_SocketModule_PLC(int type, QObject* parent) :
QObject(parent), m_plcType(type)
{
initUnionGcMembers();
}
void Hd_SocketModule_PLC::initUnionGcMembers()
{
if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::FinsTcp))
{
delete (*m_plcImpl.FinsTcp);//托管对象无法判空
*m_plcImpl.FinsTcp = gcnew HslCommunication::Profinet::Omron::OmronFinsNet();
//也可用指针保存,但是使用时要转回原来的类型,略麻烦
//gcroot<HslCommunication::Profinet::Omron::OmronFinsNet^>* FinsTcp = new gcroot<HslCommunication::Profinet::Omron::OmronFinsNet^>;
//void* plc = static_cast<void*>(FinsTcp);
//gcroot<HslCommunication::Profinet::Omron::OmronFinsNet^>* FinsTcp = static_cast<gcroot<HslCommunication::Profinet::Omron::OmronFinsNet^>*>(plc);
}
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::ModbusTcp))
{
delete (*m_plcImpl.ModBusTcp);
*m_plcImpl.ModBusTcp = gcnew HslCommunication::ModBus::ModbusTcpNet();
}
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::McAsciiTcp))
{
delete (*m_plcImpl.McAscii);
*m_plcImpl.McAscii = gcnew HslCommunication::Profinet::Melsec::MelsecMcAsciiNet();
}
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::McA1ETcp))
{
delete (*m_plcImpl.McA1E);
*m_plcImpl.McA1E = gcnew HslCommunication::Profinet::Melsec::MelsecA1ENet();
}
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::McBinaryTcp))
{
delete (*m_plcImpl.McBinary);
*m_plcImpl.McBinary = gcnew HslCommunication::Profinet::Melsec::MelsecMcNet();
}
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::PanasonicMC))
{
delete (*m_plcImpl.PanasonicMc);
*m_plcImpl.PanasonicMc = gcnew HslCommunication::Profinet::Panasonic::PanasonicMcNet();
}
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::InovanceH5UTcp))
{
delete (*m_plcImpl.InovanceTcp);
*m_plcImpl.InovanceTcp = gcnew HslCommunication::Profinet::Inovance::InovanceH5UTcp();
}
}
Hd_SocketModule_PLC::~Hd_SocketModule_PLC()
{
if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::FinsTcp))
{
delete (*m_plcImpl.FinsTcp);
*m_plcImpl.FinsTcp = nullptr;
delete m_plcImpl.FinsTcp;
m_plcImpl.FinsTcp = nullptr;
}
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::ModbusTcp))
{
delete (*m_plcImpl.ModBusTcp);
*m_plcImpl.ModBusTcp = nullptr;
delete m_plcImpl.ModBusTcp;
m_plcImpl.ModBusTcp = nullptr;
}
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::McAsciiTcp))
{
delete (*m_plcImpl.McAscii);
*m_plcImpl.McAscii = nullptr;
delete m_plcImpl.McAscii;
m_plcImpl.McAscii = nullptr;
}
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::McA1ETcp))
{
delete (*m_plcImpl.McA1E);
*m_plcImpl.McA1E = nullptr;
delete m_plcImpl.McA1E;
m_plcImpl.McA1E = nullptr;
}
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::McBinaryTcp))
{
delete (*m_plcImpl.McBinary);
*m_plcImpl.McBinary = nullptr;
delete m_plcImpl.McBinary;
m_plcImpl.McBinary = nullptr;
}
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::PanasonicMC))
{
delete (*m_plcImpl.PanasonicMc);
*m_plcImpl.PanasonicMc = nullptr;
delete m_plcImpl.PanasonicMc;
m_plcImpl.PanasonicMc = nullptr;
}
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::InovanceH5UTcp))
{
delete (*m_plcImpl.InovanceTcp);
*m_plcImpl.InovanceTcp = nullptr;
delete m_plcImpl.InovanceTcp;
m_plcImpl.InovanceTcp = nullptr;
}
qDebug() << " ~Hd_SocketModule_PLC success!";
}
bool Hd_SocketModule_PLC::setParameter(const QMap<QString, QString>& param)
{
m_params = param;
return true;
}
QMap<QString, QString> Hd_SocketModule_PLC::parameters()
{
return m_params;
}
//加载模块dll导出函数,构造类
bool Hd_SocketModule_PLC::init()
{
System::String^ Code = gcnew System::String("b5f8f9f7-c075-4913-ae6e-d7d2cc6f2de1");
if (HslCommunication::Authorization::SetAuthorizationCode(Code))
qDebug() << "Register HSLCode Success" << endl;
else
qDebug() << "Register HSLCode Fail" << endl;
if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::FinsTcp))
return initFinsTcp();
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::ModbusTcp))
return initModbusTcp();
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::McAsciiTcp))
return initMcAscii();
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::McA1ETcp))
return initMcA1E();
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::McBinaryTcp))
return initMcBinary();
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::PanasonicMC))
return initPanasonicMc();
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::InovanceH5UTcp))
return initInovanceTcp();
return true;
}
bool Hd_SocketModule_PLC::setData(const QByteArray& data)
{
if (data.isEmpty())
{
qCritical() << " data is null";
return false;
}
QMutexLocker locker(m_writeMutex);
Sleep(m_sleepTime);
QList<QByteArray> byteList = data.split('_');
if (byteList.size() != 4)
{
qCritical() << data + " size() != 4, command error." << endl;
return false;
}
if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::ModbusTcp))
byteList[2] = byteList[2].mid(1, byteList[2].length() - 1);
if (byteList[0] == "read")//"read_byte_D3000_300"
{
auto readFunc = [=]() {
System::String^ address = gcnew System::String(byteList[2].toStdString().c_str());
HslCommunication::OperateResult<cli::array<unsigned char>^>^ result;
if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::FinsTcp))
result = (*m_plcImpl.FinsTcp)->Read(address, byteList[3].toInt());
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::ModbusTcp))
result = (*m_plcImpl.ModBusTcp)->Read(address, byteList[3].toInt());
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::McAsciiTcp))
result = (*m_plcImpl.McAscii)->Read(address, byteList[3].toInt());
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::McA1ETcp))
result = (*m_plcImpl.McA1E)->Read(address, byteList[3].toInt());
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::McBinaryTcp))
result = (*m_plcImpl.McBinary)->Read(address, byteList[3].toInt());
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::PanasonicMC))
result = (*m_plcImpl.PanasonicMc)->Read(address, byteList[3].toInt());
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::InovanceH5UTcp))
result = (*m_plcImpl.InovanceTcp)->Read(address, byteList[3].toInt());
return result;
};
auto readSucFunc = [&](HslCommunication::OperateResult<cli::array<unsigned char>^>^& result) {
QByteArray byte;
for (int i = 0; i < byteList[3].toInt() * 2; i++)
byte.append(result->Content[i]);
//qDebug() << "read bytes:" << byte;
m_readData.append(byte);
};
auto result = readFunc();
if (result->IsSuccess)
{
readSucFunc(result);
return true;
}
qDebug() << data + "read failed" << endl;
int retryCount = 3;
while (retryCount-- > 0)
{
closeSocket();
initUnionGcMembers();
if (!init())//成功
{
Sleep(m_sleepTime);
continue;
}
auto res = readFunc();
if (!res->IsSuccess)
{
Sleep(m_sleepTime);
continue;
}
readSucFunc(res);
return true;
}
return false;
}
else if (byteList[0] == "write")//例"write_short_D1003_1", "write_short_D1003_1,1,1,1"
{
if (byteList[1] != "short" && byteList[1] != "float" &&
byteList[1] != "double" && byteList[1] != "string")
return false;
QList<QByteArray> valueList = byteList[3].split(',');
for (auto val = 0; val < 5; val++)
{
bool res = false;
if (byteList[1] == "short")
res = writeShortData(byteList[2], valueList);
else if (byteList[1] == "float")
res = writeFloatData(byteList[2], valueList);
else if (byteList[1] == "double")
res = writeDoubleData(byteList[2], valueList);
else
res = writeStringData(byteList[2], byteList[3]);
if (res)
break;
qCritical() << "val: " << val << " write failed! byteList: " << byteList;
m_failedData.enqueue(data);
Sleep(m_sleepTime);
}
}
return true;
}
bool Hd_SocketModule_PLC::data(QByteArray& data)
{
QMutexLocker locker(m_readMutex);
if (m_readData.isEmpty())
data = {};
else
data.append(m_readData.dequeue());
return true;
}
bool Hd_SocketModule_PLC::initFinsTcp()
{
//"init_ip_port_sA1_dA1_dA2"
QStringList init = m_params["init"].split("_");
m_sleepTime = m_params["initParams"].split("_")[1].toUInt();
if (init[0] != "init" && init.size() != 6)
{
qDebug() << "init FinsTcp param error" << endl;
return false;
}
(*m_plcImpl.FinsTcp)->IpAddress = gcnew System::String(init[1].toStdString().c_str());
(*m_plcImpl.FinsTcp)->Port = init[2].toUInt();
(*m_plcImpl.FinsTcp)->DA1 = (unsigned char)(init[4].toUInt());
(*m_plcImpl.FinsTcp)->DA2 = (unsigned char)(init[5].toUInt());
(*m_plcImpl.FinsTcp)->ConnectTimeOut = 500;//连接超时0.5秒
(*m_plcImpl.FinsTcp)->ReceiveTimeOut = 500;//收发超时0.5秒
int sa1 = (unsigned char)(init[3].toUInt());
int loopCount = 20;
while (loopCount > 0)
{
(*m_plcImpl.FinsTcp)->SA1 = (unsigned char)sa1;
if ((*m_plcImpl.FinsTcp)->ConnectServer()->IsSuccess)
{
qDebug() << "FinsTcp Connect Success! SA1: " << sa1 << endl;
return true;
}
--loopCount;
++sa1;
qCritical() << "FinsTcp Connect failed! SA1: " << sa1 << endl;
Sleep(m_sleepTime);
}
return false;
}
bool Hd_SocketModule_PLC::initModbusTcp()
{
//"init_ip_port_station"
QStringList init = m_params["init"].split("_");
m_sleepTime = m_params["initParams"].split("_")[1].toUInt();
if (init[0] != "init" && init.size() != 4)
{
qDebug() << "init Modbus param error" << endl;
return false;
}
(*m_plcImpl.ModBusTcp)->IpAddress = gcnew System::String(init[1].toStdString().c_str());
(*m_plcImpl.ModBusTcp)->Port = init[2].toUInt();
(*m_plcImpl.ModBusTcp)->Station = (unsigned char)init[3].toUInt();
//(*m_plcImpl.ModBusTcp)->ConnectTimeOut = 500;//连接超时0.5秒
//(*m_plcImpl.ModBusTcp)->ReceiveTimeOut = 500;//收发超时0.5秒
int loopCount = 20;
while (loopCount > 0)
{
if ((*m_plcImpl.ModBusTcp)->ConnectServer()->IsSuccess)
{
qDebug() << "ModBusTcp Connect Success!" << endl;
return true;
}
qCritical() << "ModBusTcp Connect failed!" << endl;
--loopCount;
Sleep(m_sleepTime);
}
return false;
}
bool Hd_SocketModule_PLC::initMcAscii()
{
//"init_ip_port"
QStringList init = m_params["init"].split("_");
m_sleepTime = m_params["initParams"].split("_")[1].toUInt();
if (init[0] != "init" && init.size() != 3)
{
qDebug() << "init McAscii param error" << endl;
return false;
}
(*m_plcImpl.McAscii)->IpAddress = gcnew System::String(init[1].toStdString().c_str());
(*m_plcImpl.McAscii)->Port = init[2].toUInt();
(*m_plcImpl.McAscii)->ConnectTimeOut = 500;//连接超时0.5秒
(*m_plcImpl.McAscii)->ReceiveTimeOut = 500;//收发超时0.5秒
int loopCount = 20;
while (loopCount > 0)
{
if ((*m_plcImpl.McAscii)->ConnectServer()->IsSuccess)
{
qDebug() << "McAscii Connect Success!" << endl;
return true;
}
qCritical() << "McAscii Connect failed!" << endl;
--loopCount;
Sleep(m_sleepTime);
}
return false;
}
bool Hd_SocketModule_PLC::initMcA1E()
{
//"init_ip_port"
QStringList init = m_params["init"].split("_");
m_sleepTime = m_params["initParams"].split("_")[1].toUInt();
if (init[0] != "init" && init.size() != 3)
{
qDebug() << "init McA1E param error" << endl;
return false;
}
(*m_plcImpl.McA1E)->IpAddress = gcnew System::String(init[1].toStdString().c_str());
(*m_plcImpl.McA1E)->Port = init[2].toUInt();
(*m_plcImpl.McA1E)->ConnectTimeOut = 500;//连接超时0.5秒
(*m_plcImpl.McA1E)->ReceiveTimeOut = 500;//收发超时0.5秒
int loopCount = 20;
while (loopCount > 0)
{
if ((*m_plcImpl.McA1E)->ConnectServer()->IsSuccess)
{
qDebug() << "McA1E Connect Success!" << endl;
return true;
}
qCritical() << "McA1E Connect failed!" << endl;
--loopCount;
Sleep(m_sleepTime);
}
return false;
}
bool Hd_SocketModule_PLC::initMcBinary()
{
//"init_ip_port"
QStringList init = m_params["init"].split("_");
m_sleepTime = m_params["initParams"].split("_")[1].toUInt();
if (init[0] != "init" && init.size() != 3)
{
qDebug() << "init McBinary param error" << endl;
return false;
}
(*m_plcImpl.McBinary)->IpAddress = gcnew System::String(init[1].toStdString().c_str());
(*m_plcImpl.McBinary)->Port = init[2].toUInt();
(*m_plcImpl.McBinary)->ConnectTimeOut = 500;//连接超时0.5秒
(*m_plcImpl.McBinary)->ReceiveTimeOut = 500;//收发超时0.5秒
int loopCount = 20;
while (loopCount > 0)
{
if ((*m_plcImpl.McBinary)->ConnectServer()->IsSuccess)
{
qDebug() << "McBinary Connect Success!" << endl;
return true;
}
qCritical() << "McBinary Connect failed!" << endl;
--loopCount;
Sleep(m_sleepTime);
}
return false;
}
bool Hd_SocketModule_PLC::initPanasonicMc()
{
//"init_ip_port"
QStringList init = m_params["init"].split("_");
m_sleepTime = m_params["initParams"].split("_")[1].toUInt();
if (init[0] != "init" && init.size() != 3)
{
qDebug() << "init PanasonicMc param error" << endl;
return false;
}
(*m_plcImpl.PanasonicMc)->IpAddress = gcnew System::String(init[1].toStdString().c_str());
(*m_plcImpl.PanasonicMc)->Port = init[2].toUInt();
(*m_plcImpl.PanasonicMc)->ConnectTimeOut = 500;//连接超时0.5秒
(*m_plcImpl.PanasonicMc)->ReceiveTimeOut = 500;//收发超时0.5秒
int loopCount = 20;
while (loopCount > 0)
{
if ((*m_plcImpl.PanasonicMc)->ConnectServer()->IsSuccess)
{
qDebug() << "PanasonicMc Connect Success!" << endl;
return true;
}
qCritical() << "PanasonicMc Connect failed!" << endl;
--loopCount;
Sleep(m_sleepTime);
}
return false;
}
bool Hd_SocketModule_PLC::initInovanceTcp()
{
//"init_ip_port"
QStringList init = m_params["init"].split("_");
m_sleepTime = m_params["initParams"].split("_")[1].toUInt();
if (init[0] != "init" && init.size() != 3)
{
qDebug() << "init InovanceTcp param error" << endl;
return false;
}
(*m_plcImpl.InovanceTcp)->IpAddress = gcnew System::String(init[1].toStdString().c_str());
(*m_plcImpl.InovanceTcp)->Port = init[2].toUInt();
(*m_plcImpl.InovanceTcp)->ConnectTimeOut = 500;//连接超时0.5秒
(*m_plcImpl.InovanceTcp)->ReceiveTimeOut = 500;//收发超时0.5秒
int loopCount = 20;
while (loopCount > 0)
{
if ((*m_plcImpl.InovanceTcp)->ConnectServer()->IsSuccess)
{
qDebug() << "InovanceTcp Connect Success!" << endl;
return true;
}
qCritical() << "InovanceTcp Connect failed!" << endl;
--loopCount;
Sleep(m_sleepTime);
}
return false;
}
bool Hd_SocketModule_PLC::closeSocket()
{
bool res = false;
if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::FinsTcp))
res = (*m_plcImpl.FinsTcp)->ConnectClose()->IsSuccess;
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::ModbusTcp))
res = (*m_plcImpl.ModBusTcp)->ConnectClose()->IsSuccess;
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::McAsciiTcp))
res = (*m_plcImpl.McAscii)->ConnectClose()->IsSuccess;
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::McA1ETcp))
res = (*m_plcImpl.McA1E)->ConnectClose()->IsSuccess;
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::McBinaryTcp))
res = (*m_plcImpl.McBinary)->ConnectClose()->IsSuccess;
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::PanasonicMC))
res = (*m_plcImpl.PanasonicMc)->ConnectClose()->IsSuccess;
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::InovanceH5UTcp))
res = (*m_plcImpl.InovanceTcp)->ConnectClose()->IsSuccess;
if (!res)
qCritical() << "ConnectClose() failed!";
return res;
}
bool Hd_SocketModule_PLC::writeShortData(const QByteArray& addr, const QList<QByteArray>& data)
{
cli::array<short>^ writeList = gcnew cli::array<short>(data.length());
for (int i = 0; i < data.length(); i++)
writeList[i] = data[i].toShort();
System::String^ address = gcnew System::String(addr.toStdString().c_str());
if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::FinsTcp))
return (*m_plcImpl.FinsTcp)->HslCommunication::Core::Net::NetworkDeviceBase::Write(address, writeList)->IsSuccess;
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::ModbusTcp))
return (*m_plcImpl.ModBusTcp)->HslCommunication::Core::Net::NetworkDeviceBase::Write(address, writeList)->IsSuccess;
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::McAsciiTcp))
return (*m_plcImpl.McAscii)->HslCommunication::Core::Net::NetworkDeviceBase::Write(address, writeList)->IsSuccess;
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::McA1ETcp))
return (*m_plcImpl.McA1E)->HslCommunication::Core::Net::NetworkDeviceBase::Write(address, writeList)->IsSuccess;
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::McBinaryTcp))
return (*m_plcImpl.McBinary)->HslCommunication::Core::Net::NetworkDeviceBase::Write(address, writeList)->IsSuccess;
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::PanasonicMC))
return (*m_plcImpl.PanasonicMc)->HslCommunication::Core::Net::NetworkDeviceBase::Write(address, writeList)->IsSuccess;
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::InovanceH5UTcp))
return (*m_plcImpl.InovanceTcp)->HslCommunication::Core::Net::NetworkDeviceBase::Write(address, writeList)->IsSuccess;
return false;
}
bool Hd_SocketModule_PLC::writeFloatData(const QByteArray& addr, const QList<QByteArray>& data)
{
cli::array<float>^ writeList = gcnew cli::array<float>(data.length());
for (int i = 0; i < data.length(); i++)
writeList[i] = data[i].toFloat();
System::String^ address = gcnew System::String(addr.toStdString().c_str());
if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::FinsTcp))
return (*m_plcImpl.FinsTcp)->HslCommunication::Core::Net::NetworkDeviceBase::Write(address, writeList)->IsSuccess;
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::ModbusTcp))
return (*m_plcImpl.ModBusTcp)->HslCommunication::Core::Net::NetworkDeviceBase::Write(address, writeList)->IsSuccess;
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::McAsciiTcp))
return (*m_plcImpl.McAscii)->HslCommunication::Core::Net::NetworkDeviceBase::Write(address, writeList)->IsSuccess;
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::McA1ETcp))
return (*m_plcImpl.McA1E)->HslCommunication::Core::Net::NetworkDeviceBase::Write(address, writeList)->IsSuccess;
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::McBinaryTcp))
return (*m_plcImpl.McBinary)->HslCommunication::Core::Net::NetworkDeviceBase::Write(address, writeList)->IsSuccess;
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::PanasonicMC))
return (*m_plcImpl.PanasonicMc)->HslCommunication::Core::Net::NetworkDeviceBase::Write(address, writeList)->IsSuccess;
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::InovanceH5UTcp))
return (*m_plcImpl.InovanceTcp)->HslCommunication::Core::Net::NetworkDeviceBase::Write(address, writeList)->IsSuccess;
return false;
}
bool Hd_SocketModule_PLC::writeDoubleData(const QByteArray& addr, const QList<QByteArray>& data)
{
cli::array<double>^ writeList = gcnew cli::array<double>(data.length());
for (int i = 0; i < data.length(); i++)
writeList[i] = data[i].toDouble();
System::String^ address = gcnew System::String(addr.toStdString().c_str());
if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::FinsTcp))
return (*m_plcImpl.FinsTcp)->HslCommunication::Core::Net::NetworkDeviceBase::Write(address, writeList)->IsSuccess;
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::ModbusTcp))
return (*m_plcImpl.ModBusTcp)->HslCommunication::Core::Net::NetworkDeviceBase::Write(address, writeList)->IsSuccess;
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::McAsciiTcp))
return (*m_plcImpl.McAscii)->HslCommunication::Core::Net::NetworkDeviceBase::Write(address, writeList)->IsSuccess;
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::McA1ETcp))
return (*m_plcImpl.McA1E)->HslCommunication::Core::Net::NetworkDeviceBase::Write(address, writeList)->IsSuccess;
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::McBinaryTcp))
return (*m_plcImpl.McBinary)->HslCommunication::Core::Net::NetworkDeviceBase::Write(address, writeList)->IsSuccess;
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::PanasonicMC))
return (*m_plcImpl.PanasonicMc)->HslCommunication::Core::Net::NetworkDeviceBase::Write(address, writeList)->IsSuccess;
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::InovanceH5UTcp))
return (*m_plcImpl.InovanceTcp)->HslCommunication::Core::Net::NetworkDeviceBase::Write(address, writeList)->IsSuccess;
return false;
}
bool Hd_SocketModule_PLC::writeStringData(const QByteArray& addr, const QByteArray& data)
{
System::String^ address = gcnew System::String(addr.toStdString().c_str());
System::String^ writeValue = gcnew System::String(data.toStdString().c_str());
if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::FinsTcp))
return (*m_plcImpl.FinsTcp)->HslCommunication::Core::Net::NetworkDeviceBase::Write(address, writeValue)->IsSuccess;
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::ModbusTcp))
return (*m_plcImpl.ModBusTcp)->HslCommunication::Core::Net::NetworkDeviceBase::Write(address, writeValue)->IsSuccess;
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::McAsciiTcp))
return (*m_plcImpl.McAscii)->HslCommunication::Core::Net::NetworkDeviceBase::Write(address, writeValue)->IsSuccess;
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::McA1ETcp))
return (*m_plcImpl.McA1E)->HslCommunication::Core::Net::NetworkDeviceBase::Write(address, writeValue)->IsSuccess;
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::McBinaryTcp))
return (*m_plcImpl.McBinary)->HslCommunication::Core::Net::NetworkDeviceBase::Write(address, writeValue)->IsSuccess;
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::PanasonicMC))
return (*m_plcImpl.PanasonicMc)->HslCommunication::Core::Net::NetworkDeviceBase::Write(address, writeValue)->IsSuccess;
else if (m_plcType == static_cast<int>(PLC_MODULE_TYPE::InovanceH5UTcp))
return (*m_plcImpl.InovanceTcp)->HslCommunication::Core::Net::NetworkDeviceBase::Write(address, writeValue)->IsSuccess;
return false;
}