/////////////////////////cstorescp.h//////////////
static unsigned long classAddress;
class storescpThread
:public QThread{
Q_OBJECT
public:
~storescpThread();
void StartStoreScp();
protected:
void run();
void connectOrDisconnect();
static void emitMsg( unsigned long user_value,char * filename)
{
storescpThread* pthis = (storescpThread*)user_value;
pthis->setText(filename);
}
private slots:
void connectOrDisconnect();
void ftpListInfo
(const QUrlInfo &urlInfo
);
void ftpCommandFinished(int commandId, bool error);
void updateDataTransferProgress(qint64 readBytes,qint64 totalBytes);
private :
int startSCP();
void setText(T_DIMSE_StoreProgressState state,char * name);
OFCondition storeSCP();
static void storeSCPCallback();
}
/////////////////////////cstorescp.cpp//////////////
{
textEdit=txtEdit;
classAddress =(unsigned long)this ;
ftp=0;
}
int storescpThread::startSCP()
{
/////consuming operation ///////
while (!bTerminated)
{
Sleep(1); // avoid freeze!
if (!dicom_storescp_process())
break;
}
}
void storescpThread::run()
{
startSCP();
exec();
}
void storescpThread::setText(T_DIMSE_StoreProgressState state,char * name)
{
textEdit->append(name);
upLoadFile("030600030230","c:\\1.jp2");
}
void storescpThread::connectOrDisconnect()
{
if (ftp) {
ftp->abort();
ftp->deleteLater();
ftp = 0;
}
connect(ftp, SIGNAL(commandFinished(int, bool)),
this, SLOT(ftpCommandFinished(int, bool)),Qt::DirectConnection );
connect(ftp,
SIGNAL(listInfo
(const QUrlInfo &)),
this,
SLOT(ftpListInfo
(const QUrlInfo &)),Qt
::DirectConnection );
connect(ftp, SIGNAL(dataTransferProgress(qint64, qint64),Qt::DirectConnection ),
this, SLOT(updateDataTransferProgress(qint64, qint64)),Qt::DirectConnection );
ftp->connectToHost("192.168.1.3");
ftp->login("ftpuser","ftpuser");
ftp->cd("/pisdata"); //init dir
fileList.clear();
ftp->list();
}
{
connectOrDisconnect();
ftp->cd(ftpPath);
return false;
ftp->put(&file,"111.jp2");
return true;
}
void storescpThread::ftpCommandFinished(int, bool error)
{
if (ftp
->currentCommand
() == QFtp::ConnectToHost) { return;
}
return;
}
if (ftp
->currentCommand
() == QFtp::Get) { }
if (ftp
->currentCommand
() == QFtp::List) { }
if (ftp
->currentCommand
() == QFtp::Put) {
}
}
void storescpThread::updateDataTransferProgress(qint64 readBytes,
qint64 totalBytes)
{
//progressDialog->setMaximum(totalBytes);
//progressDialog->setValue(readBytes);
}
void storescpThread
::ftpListInfo(const QUrlInfo &urlInfo
) {
fileList<<urlInfo.name() ;
}
void storescpThread::storeSCPCallback()
{
//now call the static function to ftp
emitMsg(classAddress,progress->state,cbdata->imageFileName);
}
OFCondition storescpThread::storeSCP()
{
storeProvider(storeSCPCallback); ////////third party callback function
}
void storescpThread::StartStoreScp()
{
if (!isRunning()) {
start(NormalPriority);
}
}
////////////frmmain.cpp
//textEdit constructed in SetUpUI
frmMainWindow::frmMainWindow()
{
setupUi(this);
mystorescpThread=new storescpThread(textEdit);
mystorescpThread->StartStoreScp();
}
/////////////////////////cstorescp.h//////////////
static unsigned long classAddress;
class storescpThread:public QThread
{
Q_OBJECT
public:
storescpThread(QTextEdit *txtEdit,QObject *parent = 0);
~storescpThread();
void StartStoreScp();
protected:
void run();
void connectOrDisconnect();
static void emitMsg( unsigned long user_value,char * filename)
{
storescpThread* pthis = (storescpThread*)user_value;
pthis->setText(filename);
}
private slots:
void connectOrDisconnect();
bool upLoadFile(QString checkcode,QString filename);
void ftpListInfo(const QUrlInfo &urlInfo);
void ftpCommandFinished(int commandId, bool error);
void updateDataTransferProgress(qint64 readBytes,qint64 totalBytes);
private :
QTextEdit * textEdit;
QFtp *ftp; //连接FTP
QFile *file;
QStringList fileList;
int startSCP();
void setText(T_DIMSE_StoreProgressState state,char * name);
OFCondition storeSCP();
static void storeSCPCallback();
}
/////////////////////////cstorescp.cpp//////////////
storescpThread::storescpThread(QTextEdit *txtEdit,QObject *parent): QThread(parent)
{
textEdit=txtEdit;
classAddress =(unsigned long)this ;
ftp=0;
}
int storescpThread::startSCP()
{
/////consuming operation ///////
while (!bTerminated)
{
Sleep(1); // avoid freeze!
if (!dicom_storescp_process())
break;
}
}
void storescpThread::run()
{
startSCP();
exec();
}
void storescpThread::setText(T_DIMSE_StoreProgressState state,char * name)
{
textEdit->append(name);
upLoadFile("030600030230","c:\\1.jp2");
}
void storescpThread::connectOrDisconnect()
{
if (ftp) {
ftp->abort();
ftp->deleteLater();
ftp = 0;
}
ftp = new QFtp;
connect(ftp, SIGNAL(commandFinished(int, bool)),
this, SLOT(ftpCommandFinished(int, bool)),Qt::DirectConnection );
connect(ftp, SIGNAL(listInfo(const QUrlInfo &)),
this, SLOT(ftpListInfo(const QUrlInfo &)),Qt::DirectConnection );
connect(ftp, SIGNAL(dataTransferProgress(qint64, qint64),Qt::DirectConnection ),
this, SLOT(updateDataTransferProgress(qint64, qint64)),Qt::DirectConnection );
ftp->connectToHost("192.168.1.3");
ftp->login("ftpuser","ftpuser");
ftp->cd("/pisdata"); //init dir
fileList.clear();
ftp->list();
}
bool storescpThread::upLoadFile(QString checkcode,QString filename)
{
connectOrDisconnect();
QString ftpPath="/pisdata/";
ftp->cd(ftpPath);
QFile file(filename);
if (!file.open(QIODevice::ReadOnly))
return false;
QFileInfo fi(filename);
ftp->put(&file,"111.jp2");
return true;
}
void storescpThread::ftpCommandFinished(int, bool error)
{
if (ftp->currentCommand() == QFtp::ConnectToHost) {
return;
}
return;
}
if (ftp->currentCommand() == QFtp::Get) {
}
if (ftp->currentCommand() == QFtp::List) {
QMessageBox::information(0, tr("FTP"),"LIST");
}
if (ftp->currentCommand() == QFtp::Put) {
}
}
void storescpThread::updateDataTransferProgress(qint64 readBytes,
qint64 totalBytes)
{
//progressDialog->setMaximum(totalBytes);
//progressDialog->setValue(readBytes);
}
void storescpThread::ftpListInfo(const QUrlInfo &urlInfo)
{
fileList<<urlInfo.name() ;
}
void storescpThread::storeSCPCallback()
{
//now call the static function to ftp
emitMsg(classAddress,progress->state,cbdata->imageFileName);
}
OFCondition storescpThread::storeSCP()
{
storeProvider(storeSCPCallback); ////////third party callback function
}
void storescpThread::StartStoreScp()
{
if (!isRunning()) {
start(NormalPriority);
}
}
////////////frmmain.cpp
//textEdit constructed in SetUpUI
frmMainWindow::frmMainWindow()
{
setupUi(this);
mystorescpThread=new storescpThread(textEdit);
mystorescpThread->StartStoreScp();
}
To copy to clipboard, switch view to plain text mode
Bookmarks