123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289 |
- #include "PrintThread.h"
- PrintThread::PrintThread(QObject* parent) : m_Printer(dynamic_cast<CGH_Printer*>(parent))
- {
- connect(this, SIGNAL(TransCGH(const QString&)), m_Printer, SLOT(SLMUpdate(const QString&)));
- connect(this, SIGNAL(TransPrintProgress(int, int)), m_Printer, SLOT(PrintUpdate(int, int)));
- connect(this, SIGNAL(PrintOK()), m_Printer, SLOT(PrintOKUpdate()));
- connect(this, SIGNAL(PrintCancel()), m_Printer, SLOT(PrintCancelUpdate()));
- // 初始化变量
- MyShutter = new CGH_Shutter();
- HoloLine = 0;
- HoloColumn = 0;
- OffsetX = 0;
- PrintColumn = 0;
- PrintExpose = 0;
- PrintLine = 0;
- PrintQuiet = 0;
- PrintLSpacing = 0;
- PrintCSpacing = 0;
- initPrintX = 0;
- initPrintY = 0;
- PRINTSTOP = FALSE;
- }
- PrintThread::~PrintThread()
- {
- }
- std::string PrintThread::numberToString(int n, int l /*= 3*/)
- {
- string res = to_string(n);
- int length = res.size();
- while (length++ < l) {
- res = "0" + res;
- }
- return res;
- }
- void PrintThread::run()
- {
- Print();
- if (!PRINTSTOP)
- {
- emit PrintOK();
- }
- else
- {
- emit PrintCancel();
- }
- }
- // 从左向右单方向打印
- void PrintThread::Print()
- {
- PRINTSTOP = FALSE;
- // 主线程参数传递到子线程
- Devices = m_Printer->Get_Devices();
- sAxis = m_Printer->Get_sAxis();
- PrintLSpacing = m_Printer->Get_PrintLSpacing();
- PrintCSpacing = m_Printer->Get_PrintCSpacing();
- PrintLine = m_Printer->Get_PrintLine();
- PrintColumn = m_Printer->Get_PrintColumn();
- PrintPrefix = m_Printer->Get_PrintPrefix();
- PrintExpose = m_Printer->Get_PrintExpose();
- PrintQuiet = m_Printer->Get_PrintQuiet();
- PrintResource = m_Printer->Get_PrintResource();
- // 平移台
- HoloLine = PrintLSpacing * PrintLine;
- HoloColumn = PrintCSpacing * PrintColumn;
- initPrintX = -(HoloColumn + PrintCSpacing) / 2;
- initPrintY = -(HoloLine - PrintLSpacing) / 2;
- PI_MOV(Devices[0], sAxis.c_str(), &initPrintX);
- PI_MOV(Devices[1], sAxis.c_str(), &initPrintY);
- BOOL isMoving_sAxisX = TRUE;
- BOOL isMoving_sAxisY = TRUE;
- while (isMoving_sAxisX || isMoving_sAxisY)
- {
- PI_IsMoving(Devices[0], sAxis.c_str(), &isMoving_sAxisX);
- PI_IsMoving(Devices[1], sAxis.c_str(), &isMoving_sAxisY);
- QCoreApplication::processEvents();
- }
- // 开始打印任务
- int LL, CC;
- string Format = ".bmp";
- string sep = "/";
- string Filename, PrintFullname;
- string midl, midr;
- OffsetX = PrintCSpacing;
- OffsetY = PrintLSpacing;
- for (LL = 1; LL <= PrintLine; LL++)
- {
- midl = numberToString(LL);
- for (CC = 1; CC <= PrintColumn; CC++)
- {
- midr = numberToString(CC);
- Filename = PrintPrefix + midl + midr + Format;
- PrintFullname = PrintResource + sep + Filename;
- PI_MVR(Devices[0], sAxis.c_str(), &OffsetX);
- isMoving_sAxisX = TRUE;
- isMoving_sAxisY = TRUE;
- while (isMoving_sAxisX || isMoving_sAxisY)
- {
- PI_IsMoving(Devices[0], sAxis.c_str(), &isMoving_sAxisX);
- PI_IsMoving(Devices[1], sAxis.c_str(), &isMoving_sAxisY);
- QCoreApplication::processEvents();
- }
- emit TransCGH(QString::fromStdString(PrintFullname));
- Sleep(PrintQuiet);// 静台
- MyShutter->open();
- Sleep(PrintExpose);
- MyShutter->close();
- emit TransPrintProgress(LL, CC);
- PRINTSTOP = m_Printer->Get_PRINTSTOP();
- if (PRINTSTOP)
- {
- break;
- }
- }
- PI_MOV(Devices[0], sAxis.c_str(), &initPrintX);
- PI_MVR(Devices[1], sAxis.c_str(), &OffsetY);
- isMoving_sAxisX = TRUE;
- isMoving_sAxisY = TRUE;
- while (isMoving_sAxisX || isMoving_sAxisY)
- {
- PI_IsMoving(Devices[0], sAxis.c_str(), &isMoving_sAxisX);
- PI_IsMoving(Devices[1], sAxis.c_str(), &isMoving_sAxisY);
- QCoreApplication::processEvents();
- }
- if (PRINTSTOP)
- {
- break;
- }
- }
- }
- // “S”型路径打印
- //void PrintThread::Print()
- //{
- // PRINTSTOP = FALSE;
- //
- // // 主线程参数传递到子线程
- // Devices = m_Printer->Get_Devices();
- // sAxis = m_Printer->Get_sAxis();
- // PrintLSpacing = m_Printer->Get_PrintLSpacing();
- // PrintCSpacing = m_Printer->Get_PrintCSpacing();
- // PrintLine = m_Printer->Get_PrintLine();
- // PrintColumn = m_Printer->Get_PrintColumn();
- // PrintPrefix = m_Printer->Get_PrintPrefix();
- // PrintExpose = m_Printer->Get_PrintExpose();
- // PrintQuiet = m_Printer->Get_PrintQuiet();
- // PrintResource = m_Printer->Get_PrintResource();
- //
- // // 平移台
- // HoloLine = PrintLSpacing * PrintLine;
- // HoloColumn = PrintCSpacing * PrintColumn;
- // initPrintX = -(HoloColumn + PrintCSpacing) / 2;
- // initPrintY = -(HoloLine - PrintLSpacing) / 2;
- // PI_MOV(Devices[0], sAxis.c_str(), &initPrintX);
- // PI_MOV(Devices[1], sAxis.c_str(), &initPrintY);
- //
- // BOOL isMoving_sAxisX = TRUE;
- // BOOL isMoving_sAxisY = TRUE;
- // while (isMoving_sAxisX || isMoving_sAxisY)
- // {
- // PI_IsMoving(Devices[0], sAxis.c_str(), &isMoving_sAxisX);
- // PI_IsMoving(Devices[1], sAxis.c_str(), &isMoving_sAxisY);
- //
- // QCoreApplication::processEvents();
- // }
- //
- // // 开始打印任务
- // int LL, CC, KK;
- // string Format = ".bmp";
- // string sep = "/";
- // string Filename, PrintFullname;
- // string midl, midr;
- // OffsetY = PrintLSpacing;
- // for (LL = 1; LL <= PrintLine; LL++)
- // {
- // midl = numberToString(LL);
- //
- // for (CC = 1; CC <= PrintColumn; CC++)
- // {
- // if (LL % 2 == 1)
- // {
- // KK = CC;
- // midr = numberToString(KK);
- // }
- // else
- // {
- // KK = PrintColumn - CC + 1;
- // midr = numberToString(KK);
- // }
- //
- // Filename = PrintPrefix + midl + midr + Format;
- // PrintFullname = PrintResource + sep + Filename;
- //
- // if (LL % 2 == 1)
- // {
- // OffsetX = PrintCSpacing;
- // PI_MVR(Devices[0], sAxis.c_str(), &OffsetX);
- // }
- // else
- // {
- // OffsetX = -1 * PrintCSpacing;
- // PI_MVR(Devices[0], sAxis.c_str(), &OffsetX);
- // }
- //
- // isMoving_sAxisX = TRUE;
- // isMoving_sAxisY = TRUE;
- // while (isMoving_sAxisX || isMoving_sAxisY)
- // {
- // PI_IsMoving(Devices[0], sAxis.c_str(), &isMoving_sAxisX);
- // PI_IsMoving(Devices[1], sAxis.c_str(), &isMoving_sAxisY);
- //
- // QCoreApplication::processEvents();
- // }
- //
- // emit TransCGH(QString::fromStdString(PrintFullname));
- //
- // Sleep(PrintQuiet);// 静台
- //
- // MyShutter->open();
- // Sleep(PrintExpose);
- // MyShutter->close();
- //
- // emit TransPrintProgress(LL, CC);
- //
- // PRINTSTOP = m_Printer->Get_PRINTSTOP();
- // if (PRINTSTOP)
- // {
- // break;
- // }
- // }
- // if (LL % 2 == 1)
- // {
- // OffsetX = PrintCSpacing;
- // PI_MVR(Devices[0], sAxis.c_str(), &OffsetX);
- // }
- // else
- // {
- // OffsetX = -1 * PrintCSpacing;
- // PI_MVR(Devices[0], sAxis.c_str(), &OffsetX);
- // }
- //
- //
- // PI_MVR(Devices[1], sAxis.c_str(), &OffsetY);
- //
- // isMoving_sAxisX = TRUE;
- // isMoving_sAxisY = TRUE;
- // while (isMoving_sAxisX || isMoving_sAxisY)
- // {
- // PI_IsMoving(Devices[0], sAxis.c_str(), &isMoving_sAxisX);
- // PI_IsMoving(Devices[1], sAxis.c_str(), &isMoving_sAxisY);
- //
- // QCoreApplication::processEvents();
- // }
- // if (PRINTSTOP)
- // {
- // break;
- // }
- // }
- //}
|