1、valueMainUI增加英文翻译功能(未完成)

2、修复圆定位算法圆找不准问题
3、修复valueMainUI与PLC通讯时不能识别PLC断开连接的状态问题
master
bob.pan 4 years ago
parent 3354618de8
commit ef4426a264

@ -240,7 +240,6 @@ cv::Mat ImageProcess::findCircleByBackground(const Mat &srcImg, const Mat& backg
} }
if (nIndex != -1) if (nIndex != -1)
{ {
radius = EDCircle[nIndex].r * REAIZE;
center.x = (EDCircle[nIndex].center.x * REAIZE); center.x = (EDCircle[nIndex].center.x * REAIZE);
center.y = (EDCircle[nIndex].center.y * REAIZE); center.y = (EDCircle[nIndex].center.y * REAIZE);
return DetectCircle(srcImg, backgroundImg, center, radius, bEqual, cParam); return DetectCircle(srcImg, backgroundImg, center, radius, bEqual, cParam);

@ -139,9 +139,9 @@ void QPLCDevice::onAckTrigerCam(int stationID)
sendByteData(sdata.toLatin1()); sendByteData(sdata.toLatin1());
} }
Q_SLOT void QPLCDevice::on_client_connect_status(QString ip, int port, ServerStatus status) Q_SLOT void QPLCDevice::on_client_connect_status(QString strID, ServerStatus status)
{ {
QString clientName = QString("%1:%2").arg(ip).arg(port); QString clientName = strID;
switch (status) { switch (status) {
case TCPSERVER_ON_CLIENT_CONNECTED: case TCPSERVER_ON_CLIENT_CONNECTED:
if (!m_clientList.contains(clientName)) if (!m_clientList.contains(clientName))

@ -28,7 +28,7 @@ public:
void onSendHeartBit();//发送心跳 void onSendHeartBit();//发送心跳
void onAckTrigerCam(int stationID);//发送触发应答 void onAckTrigerCam(int stationID);//发送触发应答
Q_SLOT void on_serv_status_changed(int id, ServerStatus status); Q_SLOT void on_serv_status_changed(int id, ServerStatus status);
Q_SLOT void on_client_connect_status(QString ip, int port, ServerStatus status); Q_SLOT void on_client_connect_status(QString strID, ServerStatus status);
bool getClinetInfo(QString &client); bool getClinetInfo(QString &client);
signals: signals:

@ -1122,6 +1122,14 @@ void lpMainWin::closeEvent(QCloseEvent *event)
return event->accept(); return event->accept();
} }
void lpMainWin::changeEvent(QEvent *event)
{
if (event->type() == QEvent::LanguageChange)
{
ui.retranslateUi(this);
}
}
void lpMainWin::onSetModel() void lpMainWin::onSetModel()
{ {
/* /*

@ -23,7 +23,6 @@
#include "CoreCtrl/CDllDesigner.h" #include "CoreCtrl/CDllDesigner.h"
#include "lpdesigner.h" #include "lpdesigner.h"
#include "lpImageCaliUI.h" #include "lpImageCaliUI.h"
//#include "QPLCDevice.h"
#include "lpSystemConfigUI.h" #include "lpSystemConfigUI.h"
#include <QSystemTrayIcon> #include <QSystemTrayIcon>
#include "QCryptokeyUI.h" #include "QCryptokeyUI.h"
@ -149,6 +148,7 @@ private:
protected: protected:
virtual void timerEvent(QTimerEvent *event); virtual void timerEvent(QTimerEvent *event);
virtual void closeEvent(QCloseEvent *event); virtual void closeEvent(QCloseEvent *event);
virtual void changeEvent(QEvent *event);
private: private:
Ui::lpMainWin ui; Ui::lpMainWin ui;

@ -20,11 +20,16 @@ public:
Q_SLOT void on_data_to_send(int sess_id, QSharedPointer<QByteArray>); Q_SLOT void on_data_to_send(int sess_id, QSharedPointer<QByteArray>);
QString getClientIP(); QString getClientIP();
int getClientPort(); int getClientPort();
void setClientID(QString strID) {
m_strID = strID;
};
QString getClientID()const {
return m_strID;
};
signals: signals:
void data_received(int, QSharedPointer<QByteArray>); void data_received(int, QSharedPointer<QByteArray>);
void sess_disconnected(int); void sess_disconnected(int);
private: private:
void socket_close(); void socket_close();
@ -34,5 +39,6 @@ private:
QTcpSocket *psocket_{ nullptr }; QTcpSocket *psocket_{ nullptr };
int socket_descriptor_; int socket_descriptor_;
RecvDataFunc _func; RecvDataFunc _func;
QString m_strID;
}; };
#endif //__TP_RAW_CLIENTSESSION_H__ #endif //__TP_RAW_CLIENTSESSION_H__

@ -94,8 +94,10 @@ void lptkRawTcpServer::incomingConnection(qintptr socketDescriptor)
int n = strIP.lastIndexOf(":"); int n = strIP.lastIndexOf(":");
strIP = strIP.mid(n).remove(":"); strIP = strIP.mid(n).remove(":");
int port = pclientSess->getClientPort(); int port = pclientSess->getClientPort();
QString strID = QString("%1:%2").arg(strIP).arg(port);
pclientSess->setClientID(strID);
emit client_status_changed(socketDescriptor, TCPSERVER_ON_CLIENT_CONNECTED); emit client_status_changed(socketDescriptor, TCPSERVER_ON_CLIENT_CONNECTED);
emit client_connect_status(strIP, port, TCPSERVER_ON_CLIENT_CONNECTED); emit client_connect_status(strID, TCPSERVER_ON_CLIENT_CONNECTED);
} }
void lptkRawTcpServer::on_data_received(int sess_id, QSharedPointer<QByteArray> data_ptr) void lptkRawTcpServer::on_data_received(int sess_id, QSharedPointer<QByteArray> data_ptr)
@ -123,11 +125,8 @@ void lptkRawTcpServer::on_sess_disconnected(int sess_id)
cli_sess.pThrd_->exit(0); cli_sess.pThrd_->exit(0);
} }
QString strIP = cli_sess.pSess_->getClientIP(); QString strID = cli_sess.pSess_->getClientID();
int n = strIP.lastIndexOf(":"); emit client_connect_status(strID, TCPSERVER_ON_CLIENT_DISCONNECTED);
strIP = strIP.mid(n).remove(":");
int port = cli_sess.pSess_->getClientPort();
emit client_connect_status(strIP, port, TCPSERVER_ON_CLIENT_DISCONNECTED);
delete cli_sess.pThrd_; delete cli_sess.pThrd_;
delete cli_sess.pSess_; delete cli_sess.pSess_;

@ -43,7 +43,7 @@ signals:
void client_status_changed(int, ServerStatus); void client_status_changed(int, ServerStatus);
void data_received(int, QSharedPointer<QByteArray>); void data_received(int, QSharedPointer<QByteArray>);
void data_to_send(int, QSharedPointer<QByteArray>); void data_to_send(int, QSharedPointer<QByteArray>);
void client_connect_status(QString ip, int port, ServerStatus); void client_connect_status(QString strID, ServerStatus);
public slots: public slots:
void on_sess_disconnected(int); void on_sess_disconnected(int);

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -16,12 +16,16 @@ QTCPDebugUI::~QTCPDebugUI()
void QTCPDebugUI::appendRecvData(QByteArray data) void QTCPDebugUI::appendRecvData(QByteArray data)
{ {
QString msg = QString("recv %1->%2").arg(QDateTime::currentDateTime().toString("hh:mm:ss")).arg(QString(data)); QString msg = QString("recv %1->%2").arg(QDateTime::currentDateTime().toString("hh:mm:ss")).arg(QString(data));
if (ui.plainTextEdit->toPlainText().size() > 10000)
ui.plainTextEdit->clear();
ui.plainTextEdit->appendPlainText(msg); ui.plainTextEdit->appendPlainText(msg);
} }
void QTCPDebugUI::appendSendData(QByteArray data) void QTCPDebugUI::appendSendData(QByteArray data)
{ {
QString msg = QString("send %1->%2").arg(QDateTime::currentDateTime().toString("hh:mm:ss")).arg(QString(data)); QString msg = QString("send %1->%2").arg(QDateTime::currentDateTime().toString("hh:mm:ss")).arg(QString(data));
if (ui.plainTextEdit->toPlainText().size() > 10000)
ui.plainTextEdit->clear();
ui.plainTextEdit->appendPlainText(msg); ui.plainTextEdit->appendPlainText(msg);
} }
@ -38,6 +42,14 @@ void QTCPDebugUI::showEvent(QShowEvent *event)
ui.checkBox_Send->setChecked(false); ui.checkBox_Send->setChecked(false);
} }
void QTCPDebugUI::changeEvent(QEvent *event)
{
if (event->type() == QEvent::LanguageChange)
{
ui.retranslateUi(this);
}
}
Q_SLOT void QTCPDebugUI::onStateChange(int state) Q_SLOT void QTCPDebugUI::onStateChange(int state)
{ {
QString strObj = sender()->objectName(); QString strObj = sender()->objectName();

@ -17,6 +17,7 @@ public:
protected: protected:
virtual void closeEvent(QCloseEvent *event); virtual void closeEvent(QCloseEvent *event);
virtual void showEvent(QShowEvent *event); virtual void showEvent(QShowEvent *event);
virtual void changeEvent(QEvent *event);
Q_SLOT void onStateChange(int state); Q_SLOT void onStateChange(int state);
private: private:

@ -80,6 +80,14 @@ void lpConfigUI::timerEvent(QTimerEvent *event)
} }
} }
void lpConfigUI::changeEvent(QEvent *event)
{
if (event->type() == QEvent::LanguageChange)
{
ui.retranslateUi(this);
}
}
void lpConfigUI::onInitCheckBox() void lpConfigUI::onInitCheckBox()
{ {
bool bAutoRun = CheckAutoRunLink(); bool bAutoRun = CheckAutoRunLink();

@ -12,17 +12,18 @@ public:
lpConfigUI(QWidget *parent = Q_NULLPTR); lpConfigUI(QWidget *parent = Q_NULLPTR);
~lpConfigUI(); ~lpConfigUI();
protected:
Q_SLOT void onButtonClicked();
virtual void showEvent(QShowEvent *event);
virtual void timerEvent(QTimerEvent *event);
private: private:
void onInitCheckBox(); void onInitCheckBox();
Q_SLOT void onCheckBoxChanged(int state); Q_SLOT void onCheckBoxChanged(int state);
signals: signals:
void sgUpdateConfig(); void sgUpdateConfig();
protected:
Q_SLOT void onButtonClicked();
virtual void showEvent(QShowEvent *event);
virtual void timerEvent(QTimerEvent *event);
virtual void changeEvent(QEvent *event);
private: private:
bool CheckDesktopLink(); bool CheckDesktopLink();
void CreateDesktopLink(); void CreateDesktopLink();

@ -34,3 +34,11 @@ Q_SLOT void lpDebugUI::onButtonClicked()
emit sgButtonClicked(4); emit sgButtonClicked(4);
} }
} }
void lpDebugUI::changeEvent(QEvent *event)
{
if (event->type() == QEvent::LanguageChange)
{
ui.retranslateUi(this);
}
}

@ -13,8 +13,11 @@ public:
~lpDebugUI(); ~lpDebugUI();
Q_SLOT void onButtonClicked(); Q_SLOT void onButtonClicked();
signals: signals:
void sgButtonClicked(int ID); void sgButtonClicked(int ID);
protected:
virtual void changeEvent(QEvent *event);
private: private:
Ui::lpDebugUI ui; Ui::lpDebugUI ui;
}; };

@ -9,6 +9,9 @@
#include <QSettings> #include <QSettings>
#include <QToolButton> #include <QToolButton>
#include <QMenu> #include <QMenu>
#include <QDir>
#include <QFile>
#include "lpGlobalData.h" #include "lpGlobalData.h"
#pragma execution_character_set("utf-8") #pragma execution_character_set("utf-8")
@ -116,7 +119,11 @@ valueMainUI::valueMainUI(QWidget *parent)
connect(m_pPlcDevice, SIGNAL(sgSendDataCallBack(QByteArray)), this, SLOT(onShowSendTcpData(QByteArray))); connect(m_pPlcDevice, SIGNAL(sgSendDataCallBack(QByteArray)), this, SLOT(onShowSendTcpData(QByteArray)));
connect(m_pPlcDevice, SIGNAL(sgRecvDataCallBack(QByteArray)), this, SLOT(onShowRecvTcpData(QByteArray))); connect(m_pPlcDevice, SIGNAL(sgRecvDataCallBack(QByteArray)), this, SLOT(onShowRecvTcpData(QByteArray)));
} }
{//加载语言设置
QSettings languageSetting("hubdetect.ini", QSettings::IniFormat);
QString strLanguage = languageSetting.value("language", "Chinese").toString();
SetLanguage(strLanguage);
}
{ {
m_SysTimerID = startTimer(1000);//系统定时刷新定时器 m_SysTimerID = startTimer(1000);//系统定时刷新定时器
m_timerStartID = startTimer(1000);//启动从机客户端 m_timerStartID = startTimer(1000);//启动从机客户端
@ -218,6 +225,8 @@ Q_SLOT void valueMainUI::onRecvDataStr_A(const QJsonObject& json)
QString sMsg = QString("%1 : %2->%3 %4 (%5,%6)") QString sMsg = QString("%1 : %2->%3 %4 (%5,%6)")
.arg(QDateTime::currentDateTime().toString("hh:mm:ss")) .arg(QDateTime::currentDateTime().toString("hh:mm:ss"))
.arg(strName).arg(score).arg(angle).arg(cnt_x).arg(cnt_y); .arg(strName).arg(score).arg(angle).arg(cnt_x).arg(cnt_y);
if (ui.textEdit->toPlainText().size() > 10000)
ui.textEdit->clear();
ui.textEdit->append(sMsg); ui.textEdit->append(sMsg);
switch (resultType) switch (resultType)
{ {
@ -306,6 +315,8 @@ Q_SLOT void valueMainUI::onRecvDataStr_B(const QJsonObject& json)
QString sMsg = QString("%1 : %2->%3 %4 (%5,%6)") QString sMsg = QString("%1 : %2->%3 %4 (%5,%6)")
.arg(QDateTime::currentDateTime().toString("hh:mm:ss")) .arg(QDateTime::currentDateTime().toString("hh:mm:ss"))
.arg(strName).arg(score).arg(angle).arg(cnt_x).arg(cnt_y); .arg(strName).arg(score).arg(angle).arg(cnt_x).arg(cnt_y);
if (ui.textEdit_2->toPlainText().size() > 10000)
ui.textEdit_2->clear();
ui.textEdit_2->append(sMsg); ui.textEdit_2->append(sMsg);
switch (resultType) switch (resultType)
@ -546,7 +557,10 @@ void valueMainUI::timerEvent(QTimerEvent *event)
onConnectA(); onConnectA();
m_CoutA = 0; m_CoutA = 0;
m_bServerA = false; m_bServerA = false;
if (ui.textEdit->toPlainText().size() > 10000)
ui.textEdit->clear();
ui.textEdit->append(tr("连接超时,尝试重新连接检测软件")); ui.textEdit->append(tr("连接超时,尝试重新连接检测软件"));
} }
if (m_CoutB > 15) if (m_CoutB > 15)
@ -554,6 +568,8 @@ void valueMainUI::timerEvent(QTimerEvent *event)
m_bServerB = false; m_bServerB = false;
m_CoutB = 0; m_CoutB = 0;
onConnectB(); onConnectB();
if (ui.textEdit_2->toPlainText().size() > 10000)
ui.textEdit_2->clear();
ui.textEdit_2->append(tr("连接超时,尝试重新连接检测软件")); ui.textEdit_2->append(tr("连接超时,尝试重新连接检测软件"));
} }
@ -655,6 +671,14 @@ void valueMainUI::closeEvent(QCloseEvent *event)
return event->accept(); return event->accept();
} }
void valueMainUI::changeEvent(QEvent *event)
{
if (event->type() == QEvent::LanguageChange)
{
ui.retranslateUi(this);
}
}
Q_SLOT void valueMainUI::onDebugClicked(int nID) Q_SLOT void valueMainUI::onDebugClicked(int nID)
{//调试测试页面按钮响应事件 自定义命令 {//调试测试页面按钮响应事件 自定义命令
if (nID == 1)//A侧相机单次触发 if (nID == 1)//A侧相机单次触发
@ -1018,3 +1042,87 @@ Q_SLOT void valueMainUI::onShowSendTcpData(QByteArray data)
m_pTcpDebugUI->appendSendData(data); m_pTcpDebugUI->appendSendData(data);
} }
} }
void valueMainUI::SetLanguage(QString strLangage)
{
QString strDirPath = QString(QCoreApplication::applicationDirPath() + "/language/");
QString translatorFileName = strLangage;
if (!translatorFileName.isEmpty())
{
if (m_VecTranPtr.size() > 0)
{
while (m_VecTranPtr.size())
{
QTranslator *pVa = m_VecTranPtr.takeFirst();
qApp->removeTranslator(pVa);
delete pVa;
pVa = NULL;
}
}
QLocale::setDefault(QLocale(translatorFileName));
QString transDir = strDirPath + translatorFileName;
SearchQmFile(transDir);
}
}
void valueMainUI::SearchQmFile(const QString & strDir)
{
QDir dir(strDir);
if (!dir.exists())
{
return;
}
dir.setFilter(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot);
dir.setSorting(QDir::DirsFirst); // 文件夹优先
// 转换成一个List
QFileInfoList list = dir.entryInfoList();
if (list.size() < 1)
{
return;
}
int i = 0;
do
{
QFileInfo fileInfo = list.at(i);
QString tt = fileInfo.fileName();
// 如果是文件夹
bool bisDir = fileInfo.isDir();
if (bisDir)
{
SearchQmFile(fileInfo.filePath());
}
else
{
bool bQm = fileInfo.fileName().endsWith(".qm");
SetTranslator(fileInfo.filePath());
}
i++;
} while (i < list.size());
}
void valueMainUI::SetTranslator(const QString strPath)
{
if (strPath.isEmpty())
{
return;
}
QTranslator *pTrans = new QTranslator;
if (pTrans->load(strPath)) // 如果加载成功
{
qApp->installTranslator(pTrans);
m_VecTranPtr.append(pTrans);
}
else
{
delete pTrans;
pTrans = NULL;
}
}
Q_SLOT void valueMainUI::onLanguageChange(QString strLanguage)
{
QSettings languageSetting("hubdetect.ini", QSettings::IniFormat);
languageSetting.setValue("language", strLanguage);
SetLanguage(strLanguage);
}

@ -13,6 +13,9 @@
#include "libTcpClient.h" #include "libTcpClient.h"
#include "../QPLCDevice.h" #include "../QPLCDevice.h"
#include "QTCPDebugUI.h" #include "QTCPDebugUI.h"
#include <QTranslator>
class valueMainUI : public QMainWindow class valueMainUI : public QMainWindow
{ {
Q_OBJECT Q_OBJECT
@ -64,9 +67,15 @@ private://trayIcon
Q_SLOT void onShowRecvTcpData(QByteArray data); Q_SLOT void onShowRecvTcpData(QByteArray data);
Q_SLOT void onShowSendTcpData(QByteArray data); Q_SLOT void onShowSendTcpData(QByteArray data);
//language
void SetLanguage(QString strLangage);
void SearchQmFile(const QString & strDir);
void SetTranslator(const QString strPath);
Q_SLOT void onLanguageChange(QString strLanguage);
protected: protected:
virtual void timerEvent(QTimerEvent *event); virtual void timerEvent(QTimerEvent *event);
virtual void closeEvent(QCloseEvent *event); virtual void closeEvent(QCloseEvent *event);
virtual void changeEvent(QEvent *event);
private: private:
Ui::valueMainUIClass ui; Ui::valueMainUIClass ui;
@ -77,11 +86,6 @@ private:
QLabel* m_pLabelB{ nullptr }; QLabel* m_pLabelB{ nullptr };
QLabel* m_pLabelPLC{ nullptr }; QLabel* m_pLabelPLC{ nullptr };
QLabel* m_pLabelSystem{ nullptr }; QLabel* m_pLabelSystem{ nullptr };
// QLabel* m_pLabelRes_A{ nullptr };
// QLabel* m_pLabelRes_B{ nullptr };
// QLabel* m_pLabelState_A{ nullptr };
// QLabel* m_pLabelState_B{ nullptr };
private: private:
int m_timerA{ 0 }; int m_timerA{ 0 };
int m_timerB{ 0 }; int m_timerB{ 0 };
@ -112,6 +116,8 @@ private:
bool m_bExit{ false }; bool m_bExit{ false };
QPLCDevice* m_pPlcDevice{ nullptr }; QPLCDevice* m_pPlcDevice{ nullptr };
QVector<QTranslator* > m_VecTranPtr;//国际化语言包管理
}; };
#endif #endif

@ -213,6 +213,9 @@
<ItemGroup> <ItemGroup>
<Image Include="Resources\icon.ico" /> <Image Include="Resources\icon.ico" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<None Include="valuemainui_en.ts" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Condition="Exists('$(QtMsBuild)\qt.targets')"> <ImportGroup Condition="Exists('$(QtMsBuild)\qt.targets')">
<Import Project="$(QtMsBuild)\qt.targets" /> <Import Project="$(QtMsBuild)\qt.targets" />

@ -34,6 +34,11 @@
<Filter Include="lpRawTcp"> <Filter Include="lpRawTcp">
<UniqueIdentifier>{6b2afa7b-bb76-4d9e-9870-8a19fb08089a}</UniqueIdentifier> <UniqueIdentifier>{6b2afa7b-bb76-4d9e-9870-8a19fb08089a}</UniqueIdentifier>
</Filter> </Filter>
<Filter Include="Translation Files">
<UniqueIdentifier>{639EADAA-A684-42e4-A9AD-28FC9BCB8F7C}</UniqueIdentifier>
<Extensions>ts</Extensions>
<ParseFiles>false</ParseFiles>
</Filter>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="main.cpp"> <ClCompile Include="main.cpp">
@ -189,4 +194,9 @@
<ItemGroup> <ItemGroup>
<Image Include="Resources\icon.ico" /> <Image Include="Resources\icon.ico" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<None Include="valuemainui_en.ts">
<Filter>Translation Files</Filter>
</None>
</ItemGroup>
</Project> </Project>

@ -0,0 +1,449 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="en_US">
<context>
<name>QObject</name>
<message>
<location filename="valueMainUI.cpp" line="448"/>
<location filename="valueMainUI.cpp" line="470"/>
<location filename="valueMainUI.cpp" line="657"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.cpp" line="449"/>
<source>A,</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.cpp" line="451"/>
<location filename="valueMainUI.cpp" line="473"/>
<location filename="valueMainUI.cpp" line="660"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.cpp" line="471"/>
<source>B,</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.cpp" line="658"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.cpp" line="661"/>
<source></source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QTCPDebugUI</name>
<message>
<location filename="QTCPDebugUI.ui" line="14"/>
<source>QTCPDebugUI</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="QTCPDebugUI.ui" line="25"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="QTCPDebugUI.ui" line="37"/>
<source></source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RoiImgViewer</name>
<message>
<location filename="../../src/tpMain/algela/RoiImgViewer.cpp" line="519"/>
<location filename="../../src/tpMain/algela/RoiImgViewer.cpp" line="533"/>
<source>line item is not created</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/tpMain/algela/RoiImgViewer.cpp" line="553"/>
<source>line item is already created</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/tpMain/algela/RoiImgViewer.cpp" line="564"/>
<source>rect item is already created</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>lpConfigUI</name>
<message>
<location filename="lpConfigUI.ui" line="14"/>
<source>lpConfigUI</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpConfigUI.ui" line="25"/>
<source>:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpConfigUI.ui" line="38"/>
<source>A</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpConfigUI.ui" line="79"/>
<source>A</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpConfigUI.ui" line="100"/>
<location filename="lpConfigUI.ui" line="178"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpConfigUI.ui" line="116"/>
<source>B</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpConfigUI.ui" line="157"/>
<source>B</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpConfigUI.ui" line="192"/>
<source>使</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpConfigUI.ui" line="209"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpConfigUI.ui" line="234"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpConfigUI.ui" line="246"/>
<source>退</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpConfigUI.ui" line="273"/>
<source>PLC</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpConfigUI.ui" line="279"/>
<source>TCP</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpConfigUI.ui" line="286"/>
<source>1000</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpConfigUI.ui" line="314"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpConfigUI.ui" line="327"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpConfigUI.ui" line="339"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpConfigUI.ui" line="350"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpConfigUI.ui" line="358"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpConfigUI.ui" line="363"/>
<source>English</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>lpDebugUI</name>
<message>
<location filename="lpDebugUI.ui" line="14"/>
<source>lpDebugUI</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpDebugUI.ui" line="31"/>
<source>A</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpDebugUI.ui" line="49"/>
<source>B</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpDebugUI.ui" line="67"/>
<source>A</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpDebugUI.ui" line="85"/>
<source>B</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>valueMainUI</name>
<message>
<location filename="valueMainUI.cpp" line="25"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.cpp" line="43"/>
<source>A</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.cpp" line="44"/>
<source>B</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.cpp" line="45"/>
<source>PLC</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.cpp" line="46"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.cpp" line="91"/>
<location filename="valueMainUI.cpp" line="92"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.cpp" line="186"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.cpp" line="187"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.cpp" line="188"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.cpp" line="189"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.cpp" line="235"/>
<source> %1, %2 °</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.cpp" line="241"/>
<location filename="valueMainUI.cpp" line="332"/>
<source> %1,</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.cpp" line="247"/>
<location filename="valueMainUI.cpp" line="338"/>
<source> %1,</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.cpp" line="253"/>
<location filename="valueMainUI.cpp" line="344"/>
<source> %1,</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.cpp" line="259"/>
<location filename="valueMainUI.cpp" line="350"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.cpp" line="326"/>
<source> %1, %2°</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.cpp" line="489"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.cpp" line="501"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.cpp" line="511"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.cpp" line="562"/>
<location filename="valueMainUI.cpp" line="573"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.cpp" line="581"/>
<source>A()</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.cpp" line="585"/>
<source>A()</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.cpp" line="590"/>
<source>A</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.cpp" line="599"/>
<source>B()</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.cpp" line="603"/>
<source>B()</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.cpp" line="608"/>
<source>B</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.cpp" line="623"/>
<source>PLC %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.cpp" line="628"/>
<source>PLC</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.cpp" line="634"/>
<source>:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.cpp" line="735"/>
<location filename="valueMainUI.cpp" line="752"/>
<source>线!!!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.cpp" line="738"/>
<location filename="valueMainUI.cpp" line="755"/>
<source>线...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.cpp" line="821"/>
<location filename="valueMainUI.cpp" line="852"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.cpp" line="822"/>
<source>退</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.cpp" line="855"/>
<source></source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>valueMainUIClass</name>
<message>
<location filename="valueMainUI.ui" line="14"/>
<source>valueMainUI</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.ui" line="32"/>
<source>B</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.ui" line="81"/>
<location filename="valueMainUI.ui" line="166"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.ui" line="117"/>
<source>A</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.ui" line="196"/>
<source>toolBar</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.ui" line="216"/>
<source>A</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.ui" line="232"/>
<source>B</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.ui" line="248"/>
<location filename="valueMainUI.ui" line="251"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.ui" line="265"/>
<location filename="valueMainUI.ui" line="268"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="valueMainUI.ui" line="282"/>
<location filename="valueMainUI.ui" line="285"/>
<source></source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>
Loading…
Cancel
Save