vl habe ich auch etwas falsch gemacht in der Klasse die mit QFTP arbeitet
Code: Alles auswählen
#include "ftpmanager.h"
FTPManager::FTPManager(QObject *parent)
{
qDebug() << "erstellung 1";
m_pFTP = new QFtp(parent->parent());
qDebug() << "erstellung 2";
m_iDownloadDateiGroesse=0;
m_iUploadDateiGroesse=0;
connect(m_pFTP, SIGNAL(commandFinished(int,bool)),this, SLOT(ftpCommandFinished(int,bool)));
connect(m_pFTP, SIGNAL(dataTransferProgress(qint64,qint64)),this, SLOT(updateDataTransferProgress(qint64,qint64)));
connect(m_pFTP, SIGNAL(readyRead()),this,SLOT(readData()));
connect(m_pFTP, SIGNAL(listInfo(QUrlInfo)), this, SLOT(GetList(QUrlInfo)));
qDebug() << "erstellung 3";
}
FTPManager::~FTPManager()
{
qDebug() << "zerstörung";
}
void FTPManager::InitFtpConnection()
{
;
}
void FTPManager::connectToFtp(QString sServerIp)
{
QString sDummyIp=sServerIp;
int iDummy=sDummyIp.mid(0,3).toInt();
sServerIp=QString::number(iDummy);
iDummy=sDummyIp.mid(4,3).toInt();
sServerIp=sServerIp + "." + QString::number(iDummy);
iDummy=sDummyIp.mid(8,3).toInt();
sServerIp=sServerIp + "." + QString::number(iDummy);
iDummy=sDummyIp.mid(12,3).toInt();
sServerIp=sServerIp + "." + QString::number(iDummy);
int status = m_pFTP->connectToHost(sServerIp, 21);
status=m_pFTP->login();
qDebug() << "Connecting to FTP server " << sServerIp;
status = m_pFTP->cd("StorageCard");
m_pFTP->cd("DATA");
}
void FTPManager::downloadFile(QString sMaschinenListeNummer, QString sType, QString sName, QString sIP)
{
/*
if(ftp->state() == QFtp::Unconnected)
{
connectToFtp(sIP);
}
*/
if(sType == "Tumbler")
{
QString fileName = "PROGPAR";
QString fileEndung =".TAB";
QString sOrdnerName = sType + "_" + sName;
QString sPfad = g_CMaschinenVerwaltung.m_sRezeptDownloadPfad + "\\" + sOrdnerName + "\\";
QDir dir;
dir.mkpath(sPfad);
struktDownload DownloadFile;
DownloadFile.sDateiendung = fileEndung;
DownloadFile.sFileName = fileName;
DownloadFile.sSpeicherPfad = sPfad;
DownloadFile.sIP = sIP;
m_lDownloadqueue.append(DownloadFile);
}else if(sType == "Injektor")
{
QString fileName = "Programm";
QString fileEndung =".TAB";
QString sOrdnerName = sType + "_" + sName;
QString sPfad = g_CMaschinenVerwaltung.m_sRezeptDownloadPfad + "\\" + sOrdnerName + "\\";
QDir dir;
dir.mkpath(sPfad);
struktDownload DownloadFile;
DownloadFile.sDateiendung = fileEndung;
DownloadFile.sFileName = fileName;
DownloadFile.sSpeicherPfad = sPfad;
DownloadFile.sIP = sIP;
m_lDownloadqueue.append(DownloadFile);
}else if(sType == "Lakemischer")
{
QString fileName = "PROGPAR";
QString fileEndung =".TAB";
QString sOrdnerName = sType + "_" + sName;
QString sPfad = g_CMaschinenVerwaltung.m_sRezeptDownloadPfad + "\\" + sOrdnerName + "\\";
QDir dir;
dir.mkpath(sPfad);
struktDownload DownloadFile;
DownloadFile.sDateiendung = fileEndung;
DownloadFile.sFileName = fileName;
DownloadFile.sSpeicherPfad = sPfad;
DownloadFile.sIP = sIP;
m_lDownloadqueue.append(DownloadFile);
fileName = "ZUTATPAR";
DownloadFile.sDateiendung = fileEndung;
DownloadFile.sFileName = fileName;
DownloadFile.sSpeicherPfad = sPfad;
DownloadFile.sIP = sIP;
m_lDownloadqueue.append(DownloadFile);
}else if(sType == "Steaker")
{
}else
{
}
downloadMehrereDateien();
/*
actionFile = new QFile(sSpeicherPfad);
while(actionFile->exists())
{
sSpeicherPfad =sPfad + fileName + QString::number(fileErweiterung) + fileEndung;
actionFile->setFileName(sSpeicherPfad);
fileErweiterung++;
};
if (!actionFile->open(QIODevice::WriteOnly))
{
qDebug() << "Datei kann nicht geöffnet werden";
delete actionFile;
return;
}
ftp->get(sDownlodFileName, actionFile);
*/
}
void FTPManager::downloadMehrereDateien()
{
int error=0;
if(m_lDownloadqueue.count() > 0)
{
int fileErweiterung = 1;
QString sDateiUndSpeicherpfad = "", sDownlodFileName = "";
struktDownload DownloadFile = m_lDownloadqueue.takeAt(0);
if(m_pFTP->state() == QFtp::Unconnected)
{
connectToFtp(DownloadFile.sIP);
}
sDateiUndSpeicherpfad = DownloadFile.sSpeicherPfad + DownloadFile.sFileName + DownloadFile.sDateiendung;
sDownlodFileName = DownloadFile.sFileName + DownloadFile.sDateiendung;
actionFile = new QFile(sDateiUndSpeicherpfad);
while( actionFile->exists() )
{
sDateiUndSpeicherpfad =DownloadFile.sSpeicherPfad + DownloadFile.sFileName + QString::number(fileErweiterung) + ".TAB";
actionFile->setFileName(sDateiUndSpeicherpfad);
fileErweiterung++;
};
if (!actionFile->open(QIODevice::WriteOnly))
{
qDebug() << "Datei kann nicht geöffnet werden";
delete actionFile;
downloadMehrereDateien();
}else
{
m_sAktDownloadDateiName = DownloadFile.sFileName + DownloadFile.sDateiendung;
m_pFTP->list();
m_pFTP->get(sDownlodFileName, actionFile);
}
}else
{
m_pFTP->close();
}
}
void FTPManager::UploadFile(QString sMaschinenType, QString sMaschinenName, QString sDateiName, QString sIP)
{
QString sDateiErweiterung="",sOrdnerName="",sSpeicherPfad="", sDummy="";
struktUpload dummyUploadStruk;
if( sMaschinenType == "Tumbler" )
{
sDateiErweiterung = sDateiName;
sDateiErweiterung.replace("PROGPAR","",Qt::CaseInsensitive);
sDateiErweiterung.replace(".TAB","",Qt::CaseInsensitive);
//ProgPar
sOrdnerName = sMaschinenType + "_" + sMaschinenName;
sSpeicherPfad = g_CMaschinenVerwaltung.m_sRezeptDownloadPfad + "\\" + sOrdnerName + "\\" + sDateiName;
dummyUploadStruk.sIP = sIP;
dummyUploadStruk.sSpeicherPfadPlusDatei = sSpeicherPfad;
dummyUploadStruk.sUploadZielName = "ProgPar.tab";
m_lUploadqueue.append(dummyUploadStruk);
}else if( sMaschinenType == "Lakemischer" )
{
sDateiErweiterung = sDateiName;
sDateiErweiterung.replace("PROGPAR","",Qt::CaseInsensitive);
sDateiErweiterung.replace(".TAB","",Qt::CaseInsensitive);
//ProgPar
sOrdnerName = sMaschinenType + "_" + sMaschinenName;
sSpeicherPfad = g_CMaschinenVerwaltung.m_sRezeptDownloadPfad + "\\" + sOrdnerName + "\\" + sDateiName;
dummyUploadStruk.sIP = sIP;
dummyUploadStruk.sSpeicherPfadPlusDatei = sSpeicherPfad;
dummyUploadStruk.sUploadZielName = "ProgPar.tab";
m_lUploadqueue.append(dummyUploadStruk);
//ZutatPar
sDateiName = "ZUTATPAR.TAB";
sSpeicherPfad = g_CMaschinenVerwaltung.m_sRezeptDownloadPfad + "\\" + sOrdnerName + "\\" + "ZUTATPAR" + sDateiErweiterung + ".TAB";;
dummyUploadStruk.sIP = sIP;
dummyUploadStruk.sSpeicherPfadPlusDatei = sSpeicherPfad;
dummyUploadStruk.sUploadZielName = sDateiName;
m_lUploadqueue.append(dummyUploadStruk);
}else if( sMaschinenType == "Injektor" )
{
sDateiErweiterung = sDateiName;
sDateiErweiterung.replace("Programm","",Qt::CaseInsensitive);
sDateiErweiterung.replace(".TAB","",Qt::CaseInsensitive);
//ProgPar
sOrdnerName = sMaschinenType + "_" + sMaschinenName;
sSpeicherPfad = g_CMaschinenVerwaltung.m_sRezeptDownloadPfad + "\\" + sOrdnerName + "\\" + sDateiName;
dummyUploadStruk.sIP = sIP;
dummyUploadStruk.sSpeicherPfadPlusDatei = sSpeicherPfad;
dummyUploadStruk.sUploadZielName = "Programm.tab";
m_lUploadqueue.append(dummyUploadStruk);
}else
{
sDateiErweiterung = sDateiName;
sDateiErweiterung.replace("PROGPAR","",Qt::CaseInsensitive);
sDateiErweiterung.replace(".TAB","",Qt::CaseInsensitive);
//ProgPar
sOrdnerName = sMaschinenType + "_" + sMaschinenName;
sSpeicherPfad = g_CMaschinenVerwaltung.m_sRezeptDownloadPfad + "\\" + sOrdnerName + "\\" + sDateiName;
dummyUploadStruk.sIP = sIP;
dummyUploadStruk.sSpeicherPfadPlusDatei = sSpeicherPfad;
dummyUploadStruk.sUploadZielName = "ProgPar.tab";
m_lUploadqueue.append(dummyUploadStruk);
}
UploadMehrereDateien();
}
void FTPManager::UploadMehrereDateien()
{
if(m_lUploadqueue.count() > 0)
{
struktUpload UploadFile = m_lUploadqueue.takeAt(0);
if(m_pFTP->state() == QFtp::Unconnected)
{
connectToFtp(UploadFile.sIP);
}
actionFile = new QFile(UploadFile.sSpeicherPfadPlusDatei);//Ort wo die datei auf dem pc liegt
m_iUploadDateiGroesse = actionFile->size();
if(!actionFile->open(QIODevice::ReadWrite))
{
qDebug() << "Datei kann nicht geöffnet werden";
delete actionFile;
downloadMehrereDateien();
}else
{
m_pFTP->setTransferMode(QFtp::Active);
m_pFTP->put(actionFile, UploadFile.sUploadZielName);//sUploadFileName name die die datei auf der sps haben soll
}
}else
{
m_pFTP->close();
}
}
void FTPManager::readData()
{
QString dummy= QString(m_pFTP->readAll());
qDebug() << "Read File Content-->" << dummy << "Read File END ";
}
void FTPManager::ftpCommandFinished(int id, bool error)
{
qDebug() << "FTPManager::ftpCommandFinished";
if (m_pFTP->currentCommand() == QFtp::ConnectToHost)
{
if (error)
{
QMessageBox msgBox;
msgBox.setText(tr("Verbindungsfehler"));
msgBox.setInformativeText(tr("Konnte keine Verbindung\n"
"zu der Maschine herstellen"));
msgBox.setStandardButtons(QMessageBox::Ok);
msgBox.setDefaultButton(QMessageBox::No);
msgBox.setIcon(QMessageBox::Warning);
msgBox.exec();
qDebug() << "konnte keine verbindung aufbauen";
return;
}
qDebug() << "Verbindung aufgebaut";
return;
}
if (m_pFTP->currentCommand() == QFtp::Login)
{
qDebug() << "Login";
}
if (m_pFTP->currentCommand() == QFtp::Get)
{
if (error)
{
qDebug() << "Download abgebrochen";
actionFile->close();
actionFile->remove();
m_pFTP->close();
delete actionFile;
emit DownloadFinish();
} else
{
qDebug() << "Wurd heruntergeladen";
actionFile->close();
emit DownloadFinish();
delete actionFile;
downloadMehrereDateien();
}
}
if (m_pFTP->currentCommand() == QFtp::Put)
{
if (error)
{
qDebug() << "Upload abgebrochen";
actionFile->close();
actionFile->remove();
m_pFTP->close();
delete actionFile;
emit UploadFinish();
}else
{
qDebug() << "Wurd hochgeladen";
actionFile->close();
emit UploadFinish();
delete actionFile;
UploadMehrereDateien();
}
}
}
void FTPManager::updateDataTransferProgress(qint64 readBytes, qint64 totalBytes)
{
qDebug() << "FTPManager::updateDataTransferProgress";
if (m_pFTP->currentCommand() == QFtp::Get)
{
qDebug() << "Get updateDataTransferProgress";
emit OwndataTransferProgress(readBytes,m_iDownloadDateiGroesse);
}
if (m_pFTP->currentCommand() == QFtp::Put)
{
qDebug() << "Put updateDataTransferProgress";
emit OwndataTransferProgress(readBytes,m_iUploadDateiGroesse);
}
}
void FTPManager::Upload(QString sMaschinenType, QString sMaschinenName, QString sDateiName, QString sIP)
{
UploadFile(sMaschinenType, sMaschinenName, sDateiName, sIP);
}
void FTPManager::Download(QString sMaschinenListeNummer, QString sType, QString sName, QString sIP)
{
downloadFile(sMaschinenListeNummer, sType, sName, sIP);
}
void FTPManager::GetList(const QUrlInfo &urlInfo)
{
if(urlInfo.name().toUpper() == m_sAktDownloadDateiName)
{
m_iDownloadDateiGroesse = urlInfo.size();
}
}
Oder kann es sein das ich als ich QFTP in mein QT integriert habe etwas schief gelaufen ist ?
Den ich benutze 5.6, ja ich weis mal soll eigendlich QNetworkAccessManager benutzen, jedoch war es damit nicht möglich von der SPS die Daten runter bzw. hochzuladen.