ledset增加通信框架

This commit is contained in:
gangphon 2023-03-20 11:30:19 +08:00
parent bfb8e549e4
commit 36433b4d75
13 changed files with 360 additions and 280 deletions

View File

@ -537,6 +537,8 @@ QTabBar::tab:selected {margin-top: 0; border-bottom: none; color: #acf; backgrou
connect(btn, &QPushButton::clicked, this, [=] { connect(btn, &QPushButton::clicked, this, [=] {
QByteArray data; QByteArray data;
addMapData(data); addMapData(data);
QMessageBox::information(this, tr("发送成功"), tr("发送成功")); QMessageBox::information(this, tr("发送成功"), tr("发送成功"));
}); });
hBox->addWidget(btn); hBox->addWidget(btn);
@ -731,10 +733,11 @@ void run() {
// bytes.append("\0\x4", 2); //数据长度 // bytes.append("\0\x4", 2); //数据长度
// bytes.append(4, '\xff'); //目的地址 // bytes.append(4, '\xff'); //目的地址
// bytes.append(4, 0); //源地址 // bytes.append(4, 0); //源地址
// bytes.append("\x35\0\xc\xbb", 4); //内存指针 // bytes.append("\xB1\x04\0\0", 4); //内存指针
// bytes.append(2, 0); //应答填充项 // bytes.append(2, 0); //应答填充项
// auto crc32 = crc32_calc((uint8_t*)bytes.data()+2, bytes.length()-2); // auto crc32 = crc32_calc((uint8_t*)bytes.data()+2, bytes.length()-2);
// bytes.append(crc32>>24).append(crc32>>16).append(crc32>>8).append(crc32); // bytes.append(crc32>>24).append(crc32>>16).append(crc32>>8).append(crc32); //包头校验
// crc32 = crc32_calc((uint8_t*)bytes.data()+bytes.length()-4, 4); // crc32 = crc32_calc((uint8_t*)bytes.data()+bytes.length()-4, 4);
// bytes.append(crc32>>24).append(crc32>>16).append(crc32>>8).append(crc32); // bytes.append(crc32>>24).append(crc32>>16).append(crc32>>8).append(crc32);
// //发送帧开始指令包 // //发送帧开始指令包

View File

@ -3,7 +3,6 @@
#include "basewin.h" #include "basewin.h"
#define HAVE_REMOTE #define HAVE_REMOTE
#include <winsock2.h>
#include "pcap.h" #include "pcap.h"
#include <QThread> #include <QThread>
#include <QLabel> #include <QLabel>

View File

@ -117,3 +117,15 @@ QByteArray getNetDev(QWidget *parent, QByteArray def) {
return name; return name;
} }
} }
QByteArray sendMsg(QByteArray msg) {
return sendMsgNet(msg);
}
QByteArray sendMsgNet(QByteArray msg) {
return msg;
}

View File

@ -6,4 +6,7 @@
QByteArray getNetDev(QWidget *parent, QByteArray); QByteArray getNetDev(QWidget *parent, QByteArray);
QByteArray sendMsg(QByteArray);
QByteArray sendMsgNet(QByteArray);
#endif // GLOBALFUNC_H #endif // GLOBALFUNC_H

View File

@ -10,6 +10,13 @@ CONFIG += embed_translations
# In order to do so, uncomment the following line. # In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
INCLUDEPATH += $$PWD/WpdPack_4_1_2/Include
LIBS += -L$$PWD/WpdPack_4_1_2/Lib/\
-lwpcap\
-lpacket
-lWs2_32
msvc { msvc {
QMAKE_CXXFLAGS += -execution-charset:utf-8 QMAKE_CXXFLAGS += -execution-charset:utf-8
QMAKE_CXXFLAGS += -source-charset:utf-8 QMAKE_CXXFLAGS += -source-charset:utf-8
@ -36,6 +43,7 @@ SOURCES += \
gqt.cpp \ gqt.cpp \
main.cpp \ main.cpp \
mainwin.cpp \ mainwin.cpp \
pcaprethread.cpp \
pcapwin.cpp \ pcapwin.cpp \
screenunit.cpp \ screenunit.cpp \
table.cpp \ table.cpp \
@ -52,6 +60,7 @@ HEADERS += \
globalfunc.h \ globalfunc.h \
gqt.h \ gqt.h \
mainwin.h \ mainwin.h \
pcaprethread.h \
pcapwin.h \ pcapwin.h \
screenunit.h \ screenunit.h \
table.h \ table.h \
@ -71,13 +80,6 @@ RESOURCES += \
RC_ICONS = 128.ico RC_ICONS = 128.ico
INCLUDEPATH += $$PWD/WpdPack_4_1_2/Include
LIBS += -L$$PWD/WpdPack_4_1_2/Lib/\
-lwpcap\
-lpacket
# Default rules for deployment. # Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin else: unix:!android: target.path = /opt/$${TARGET}/bin

View File

@ -5,7 +5,7 @@
#include <QTranslator> #include <QTranslator>
#include <QIcon> #include <QIcon>
#include <QMessageBox> #include <QMessageBox>
#include <QDebug> #include <QStyleFactory>
#ifdef _MSC_VER //MSVC编译器 #ifdef _MSC_VER //MSVC编译器
#define _WINSOCKAPI_ #define _WINSOCKAPI_
@ -18,10 +18,7 @@ LONG WINAPI handleException(_EXCEPTION_POINTERS *excep) {
QString errCode = QString::number(excep->ExceptionRecord->ExceptionCode, 16); QString errCode = QString::number(excep->ExceptionRecord->ExceptionCode, 16);
QString errAddr = QString::number((uint)excep->ExceptionRecord->ExceptionAddress, 16); QString errAddr = QString::number((uint)excep->ExceptionRecord->ExceptionAddress, 16);
HANDLE hDumpFile = CreateFile(L"c:/ledset-crash.dmp", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); HANDLE hDumpFile = CreateFile(L"c:/ledset-crash.dmp", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if(hDumpFile == INVALID_HANDLE_VALUE) { if(hDumpFile == INVALID_HANDLE_VALUE) return EXCEPTION_CONTINUE_SEARCH; //未处理异常, 让 windows 弹出错误框并结束 (Qt会卡死一段时间)
qDebug()<<"handleException hDumpFile INVALID"<<"ExceptionCode"<<errCode<<"ExceptionAddress"<<errAddr;
return EXCEPTION_CONTINUE_SEARCH; //未处理异常, 让 windows 弹出错误框并结束 (Qt会卡死一段时间)
}
MINIDUMP_EXCEPTION_INFORMATION dumpInfo{GetCurrentThreadId(), excep, TRUE}; MINIDUMP_EXCEPTION_INFORMATION dumpInfo{GetCurrentThreadId(), excep, TRUE};
MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hDumpFile, MiniDumpNormal, &dumpInfo, NULL, NULL);//写入Dump文件内容 MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hDumpFile, MiniDumpNormal, &dumpInfo, NULL, NULL);//写入Dump文件内容
CloseHandle(hDumpFile); CloseHandle(hDumpFile);
@ -36,47 +33,30 @@ int main(int argc, char *argv[]) {
QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
QApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::PassThrough); QApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::PassThrough);
QApplication a(argc, argv); QApplication a(argc, argv);
a.setStyle(QStyleFactory::create("Fusion"));
a.setWindowIcon(QIcon(":/128.ico")); a.setWindowIcon(QIcon(":/128.ico"));
a.setStyleSheet(R"rrr( a.setStyleSheet(R"rrr(
QLineEdit {border: 1px solid #777; border-radius: 2px; padding: 2px;}
QAbstractScrollArea {border: 1px solid #777;}
QTableView {gridline-color:#777;}
QMessageBox {background: #333;} QMessageBox {background: #333;}
QGroupBox {border: 1px solid #777; border-radius: 3px; margin-top: 0.5em; padding-top: 0.4em;} QGroupBox {border: 1px solid #777; border-radius: 3px; margin-top: 0.5em; padding-top: 0.4em;}
QGroupBox::title {color: #fff; subcontrol-origin: margin; left: 0.5em;} QGroupBox::title {color: #fff; subcontrol-origin: margin; left: 0.5em;}
QLineEdit, QComboBox, QSpinBox, QPushButton, QAbstractScrollArea {border: 1px solid #888;}
QLineEdit, QComboBox, QSpinBox {border-radius: 2px; padding: 2px; background: #222;}
QPushButton {border-radius: 4px; padding: 2px 6px; background: #444;}
QPushButton:hover {background: #555;}
QPushButton:pressed {background: #666;}
QPushButton:checked {background: #026; border-color: #06f;}
QPushButton:!enabled {background: #666; color: #777;}
QPushButton[ss="min"]{border-radius: 4px; padding: 0; width: 30px; height: 25px; background: #07c;}
QPushButton[ss="close"]{border-radius: 4px; padding: 0; width: 30px; height: 25px; background: #e22;}
QPushButton[ss="blue"] {background: #07a; border: 1px solid #0080bb;}
QPushButton:hover[ss="blue"] {background: #069}
QPushButton:pressed[ss="blue"] {background: #058;}
QRadioButton::indicator {border-image: url(:/imgs/radio-un.png); width: 1em; height: 1em;} QRadioButton::indicator {border-image: url(:/imgs/radio-un.png); width: 1em; height: 1em;}
QRadioButton::indicator:checked {border-image: url(:/imgs/radio-check.png);} QRadioButton::indicator:checked {border-image: url(:/imgs/radio-check.png);}
QCheckBox::indicator {border-image: url(:/imgs/checkbox-un.png); width: 1em; height: 1em;} QCheckBox::indicator {border-image: url(:/imgs/checkbox-un.png); width: 1em; height: 1em;}
QCheckBox::indicator:checked {border-image: url(:/imgs/checkbox-check.png);} QCheckBox::indicator:checked {border-image: url(:/imgs/checkbox-check.png);}
QAbstractScrollArea QScrollBar {background: #222;} QPushButton[ss="min"]{padding: 0; width: 30px; height: 25px; }
QPushButton[ss="close"]{padding: 0; width: 30px; height: 25px; }
QTableView {gridline-color:#777;} QPushButton[ss="blue"] {background: #07a;}
QHeaderView::section, QTableCornerButton:section {background: #444;}
QSlider::horizontal {height: 16px;}
QSlider::groove {background: transparent;}
QSlider::sub-page:horizontal {background: #07c; margin: 5px 0; border-radius: 2px;}
QSlider::add-page:horizontal {background: #888; margin: 5px 0; border-radius: 2px;}
QSlider::handle {background: #eee; border-radius: 2px;}
QSlider::handle:hover {background: #fff;}
QSlider::handle:horizontal {width: 8px;}
)rrr"); )rrr");
/*
*/
QFont font; QFont font;
font.setFamilies(QStringList{"Arial","Microsoft YaHei UI"}); font.setFamilies(QStringList{"Arial","Microsoft YaHei UI"});
font.setPixelSize(14); font.setPixelSize(14);
@ -87,14 +67,15 @@ QSlider::handle:horizontal {width: 8px;}
plt.setBrush(QPalette::Base, QColor(0x222222)); plt.setBrush(QPalette::Base, QColor(0x222222));
plt.setBrush(QPalette::AlternateBase, QColor(0x333333)); plt.setBrush(QPalette::AlternateBase, QColor(0x333333));
plt.setBrush(QPalette::Text, QColor(0xffffff)); plt.setBrush(QPalette::Text, QColor(0xffffff));
plt.setBrush(QPalette::Button, QColor(0x444444)); plt.setBrush(QPalette::PlaceholderText, QColor(0xaaaaaa));
plt.setBrush(QPalette::Button, QColor(0x555555));
plt.setBrush(QPalette::ButtonText, QColor(0xffffff)); plt.setBrush(QPalette::ButtonText, QColor(0xffffff));
plt.setBrush(QPalette::ToolTipBase, QColor(0x444466)); plt.setBrush(QPalette::ToolTipBase, QColor(0x444466));
plt.setBrush(QPalette::ToolTipText, QColor(0xffffff)); plt.setBrush(QPalette::ToolTipText, QColor(0xeeeeee));
plt.setBrush(QPalette::Light, QColor(0x444444)); plt.setBrush(QPalette::Light, QColor(0x444444));
plt.setBrush(QPalette::Midlight, QColor(0x555555)); plt.setBrush(QPalette::Midlight, QColor(0x666666));
plt.setBrush(QPalette::Mid, QColor(0x666666)); plt.setBrush(QPalette::Mid, QColor(0x888888));
plt.setBrush(QPalette::Dark, QColor(0x777777)); plt.setBrush(QPalette::Dark, QColor(0xaaaaaa));
plt.setBrush(QPalette::BrightText, QColor(0,0,0)); plt.setBrush(QPalette::BrightText, QColor(0,0,0));
plt.setBrush(QPalette::Shadow, QColor(0xaaaaaa)); plt.setBrush(QPalette::Shadow, QColor(0xaaaaaa));
a.setPalette(plt); a.setPalette(plt);

View File

@ -1,4 +1,5 @@
#include "mainwin.h" #include "mainwin.h"
#include "pcaprethread.h"
#include "fast.h" #include "fast.h"
#include "expertwin.h" #include "expertwin.h"
#include "brightwin.h" #include "brightwin.h"
@ -145,10 +146,11 @@ MainWin::MainWin() {
QMessageBox::critical(this, "Error", QString(tr("打开网卡失败"))+errbuf); QMessageBox::critical(this, "Error", QString(tr("打开网卡失败"))+errbuf);
return; return;
} }
if(pcapRe) pcap_close(pcapRe); if(reThd) reThd->status = 2;
if(pcapSend) pcap_close(pcapSend); if(pcapSend) pcap_close(pcapSend);
pcapRe = pcapR;
pcapSend = pcapS; pcapSend = pcapS;
reThd = new PcapReThread(pcapR);
reThd->start();
QSettings config(QApplication::applicationDirPath()+"/ledset.config", QSettings::IniFormat);//QDir::currentPath()为exe位置 QSettings config(QApplication::applicationDirPath()+"/ledset.config", QSettings::IniFormat);//QDir::currentPath()为exe位置
config.beginGroup("GLOBAL"); config.beginGroup("GLOBAL");
config.setValue("net_name", net_name = name); config.setValue("net_name", net_name = name);
@ -159,6 +161,20 @@ MainWin::MainWin() {
auto btnRefresh = new QPushButton(tr("刷新")); auto btnRefresh = new QPushButton(tr("刷新"));
btnRefresh->setMinimumWidth(80); btnRefresh->setMinimumWidth(80);
connect(btnRefresh, &QPushButton::clicked, this, [this] { connect(btnRefresh, &QPushButton::clicked, this, [this] {
reThd->addResp({0x1E0, [=](const QByteArray data) {
if(((u_char)data[10])==0xB0 && data[11]==0 && data[12]==1 && data[13]==1) {
auto rr = table->rowCount();
table->setRowCount(rr+1);
uint32_t virtualVCM = data[6]<<8 | data[7] ;
table->setValue(rr, "type", tr("虚拟设备"));
table->setValue(rr, "name", tr("网口:")+QString::number(virtualVCM));
table->setValue(rr, "link", "千兆网直连");
uint32_t vcsNum = data[20] << 24 | data[21] <<16 | data[22] <<8 | data[23] ;
table->setValue(rr, "vcs", QString::number(vcsNum));
table->setValue(rr, "Pinfo", "P:"+QString::number(virtualVCM));
table->setValue(rr, "Oinfo", "备注:可直接配屏,无需发送卡");
}
}});
auto bytes = QByteArray::fromHex("55 55 01 AD 00 01 FF FF FF FF 00 00 00 00 B0 00 01 00 00 00 3B 11 0A 6C 00 00 00 00 21 44 DF 1C"); auto bytes = QByteArray::fromHex("55 55 01 AD 00 01 FF FF FF FF 00 00 00 00 B0 00 01 00 00 00 3B 11 0A 6C 00 00 00 00 21 44 DF 1C");
if(pcap_sendpacket(pcapSend, (u_char*)bytes.data(), bytes.size())) { if(pcap_sendpacket(pcapSend, (u_char*)bytes.data(), bytes.size())) {
QMessageBox::critical(this, "Error", QString(tr("发送失败: "))+pcap_geterr(pcapSend)); QMessageBox::critical(this, "Error", QString(tr("发送失败: "))+pcap_geterr(pcapSend));
@ -175,63 +191,23 @@ MainWin::MainWin() {
name = getNetDev(this, name); name = getNetDev(this, name);
if(! name.isEmpty()) { if(! name.isEmpty()) {
char errbuf[PCAP_ERRBUF_SIZE]{'\0'}; char errbuf[PCAP_ERRBUF_SIZE]{'\0'};
pcapRe = pcap_open_live(name.data(), 65536, PCAP_OPENFLAG_PROMISCUOUS|4|8|16, 50, errbuf); auto pcapRe = pcap_open_live(name.data(), 65536, PCAP_OPENFLAG_PROMISCUOUS|4|8|16, 50, errbuf);
if(pcapRe == 0) QMessageBox::critical(this, "Error", QString(tr("打开网卡失败"))+errbuf); if(pcapRe == 0) QMessageBox::critical(this, "Error", QString(tr("打开网卡失败"))+errbuf);
else { else {
pcapSend = pcap_open_live(name.data(), 65536, 0, 50, errbuf); pcapSend = pcap_open_live(name.data(), 65536, 0, 50, errbuf);
if(pcapSend == 0) QMessageBox::critical(this, "Error", QString(tr("打开网卡失败"))+errbuf); if(pcapSend == 0) QMessageBox::critical(this, "Error", QString(tr("打开网卡失败"))+errbuf);
else config.setValue("net_name", net_name = name); else {
config.setValue("net_name", net_name = name);
reThd = new PcapReThread(pcapRe);
reThd->start();
}
} }
} }
config.endGroup(); config.endGroup();
} }
MainPcapThread::MainPcapThread(pcap_t *pcap) : pcap(pcap) { void MainWin::ProNetData(const u_char *data,int len) {
connect(this, &QThread::finished, this, &QThread::deleteLater);
}
void MainPcapThread::run() {
pcap_pkthdr *header;
const u_char *data;
int res;
while((res = pcap_next_ex(pcap, &header, &data)) >= 0) {
if(status==2) return;
if(status==1 || res == 0) continue; //超时
//if(data[0]!=0x55 || data[1]!=0x55 || (data[6] ==0xff && data[7] ==0xff && data[8] == 0xff && data[9] == 0xff)) continue;
if(data[0]!=0x55 || data[1]!=0x55 )
continue;
emit onMsg(data,header->caplen);
}
emit onError(pcap_geterr(pcap));
}
void MainWin::ProNetData(const u_char *data,int len)
{
if(table != nullptr)
{
uint32_t pio=data[14] << 24 | data[15] <<16 | data[16] <<8 | data[17] ;
uint8_t srv = data[3];
if(srv == 0xEA && pio == 0xB0000101 )
{
table->setRowCount(1);
uint16_t pIndex = data[10]<<8 | data[11];
uint32_t virtualVCM = pIndex ;
uint32_t vcsNum = data[24] << 24 | data[25] <<16 | data[26] <<8 | data[27] ;
table->setValue(0, "type", tr("虚拟设备"));
table->setValue(0, "name", tr("网口:")+QString::number(virtualVCM));
table->setValue(0, "link", "千兆网直连");
table->setValue(0, "vcs", QString::number(vcsNum));
table->setValue(0, "Pinfo", "P:"+QString::number(virtualVCM));
table->setValue(0, "Oinfo", "备注:可直接配屏,无需发送卡");
}
else
{
QString data_str;
for(uint i=0; i<len; i++) {
data_str.append(QString::asprintf("%.2x ", data[i]));
}
// QMessageBox::critical(this, "net data", data_str);
}
}
} }

View File

@ -3,26 +3,7 @@
#include "basewin.h" #include "basewin.h"
#include "table.h" #include "table.h"
#define HAVE_REMOTE #include "pcaprethread.h"
#include <winsock2.h>
#include "pcap.h"
#include <QThread>
class MainPcapThread : public QThread {
Q_OBJECT
public:
explicit MainPcapThread(pcap *pcap);
~MainPcapThread() {
pcap_close(pcap);
}
pcap *pcap;
std::atomic<char> status{0};
protected:
void run();
signals:
void onMsg(const u_char *data,int len);
void onError(char *);
};
class MainWin : public BaseWin { class MainWin : public BaseWin {
Q_OBJECT Q_OBJECT
@ -30,13 +11,12 @@ public:
MainWin(); MainWin();
QWidget *win{0}; QWidget *win{0};
QByteArray net_name; QByteArray net_name;
pcap_t *pcapRe{0};
pcap_t *pcapSend{0}; pcap_t *pcapSend{0};
MainPcapThread *thd{0}; PcapReThread *reThd{0};
Table *table = nullptr; Table *table{0};
protected slots:
void ProNetData(const u_char *data,int len);
protected slots:
void ProNetData(const uint8_t *data, int len);
}; };
#endif // MAINWIN_H #endif // MAINWIN_H

31
ledset/pcaprethread.cpp Normal file
View File

@ -0,0 +1,31 @@
#include "pcaprethread.h"
PcapReThread::PcapReThread(pcap_t *pcap) : pcap(pcap) {
connect(this, &QThread::finished, this, &QThread::deleteLater);
connect(this, &PcapReThread::onMsg, this, [](Resp resp, const QByteArray data) {
resp.callback(data);
});
}
void PcapReThread::run() {
pcap_pkthdr *header;
const u_char *data;
int res;
while((res = pcap_next_ex(pcap, &header, &data)) >= 0) {
if(status==2) return;
if(status==1 || res == 0) continue; //超时
if(data[0]!=0x55 || data[1]!=0x55 ) continue;
int id = data[2]<<8 | data[3];
{
std::lock_guard<std::mutex> lock(mtx);
for(int i=0; i<resps.size(); i++) if(resps[i].id==id) {
auto resp = resps.takeAt(i);
emit onMsg(resp, QByteArray((char*)(data+4), header->caplen));
break;
}
}
}
emit onError(pcap_geterr(pcap));
}

35
ledset/pcaprethread.h Normal file
View File

@ -0,0 +1,35 @@
#ifndef PCAPRETHREAD_H
#define PCAPRETHREAD_H
#include <QThread>
#define HAVE_REMOTE
#include "pcap.h"
struct Resp {
int id;
std::function<void(const QByteArray)> callback;
};
class PcapReThread : public QThread {
Q_OBJECT
public:
explicit PcapReThread(pcap *pcap);
~PcapReThread() {
pcap_close(pcap);
}
void addResp(const Resp &resp) {
std::lock_guard<std::mutex> lock(mtx);
resps.append(resp);
}
std::atomic<char> status{0};
QList<Resp> resps;
std::mutex mtx;
pcap *pcap;
signals:
void onMsg(Resp resp, const QByteArray data);
void onError(char *);
protected:
void run();
};
#endif // PCAPRETHREAD_H

View File

@ -3,7 +3,6 @@
#include "basewin.h" #include "basewin.h"
#define HAVE_REMOTE #define HAVE_REMOTE
#include <winsock2.h>
#include "pcap.h" #include "pcap.h"
#include <QThread> #include <QThread>

View File

@ -136,430 +136,486 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertsmartpointsetwin.cpp" line="38"/> <location filename="../expertsmartpointsetwin.cpp" line="46"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertsmartpointsetwin.cpp" line="51"/> <location filename="../expertsmartpointsetwin.cpp" line="59"/>
<source>: </source> <source>: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertsmartpointsetwin.cpp" line="63"/> <location filename="../expertsmartpointsetwin.cpp" line="71"/>
<source>: </source> <source>: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertsmartpointsetwin.cpp" line="75"/> <location filename="../expertsmartpointsetwin.cpp" line="83"/>
<source>: </source> <source>: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertsmartpointsetwin.cpp" line="93"/> <location filename="../expertsmartpointsetwin.cpp" line="101"/>
<source>: </source> <source>: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertsmartpointsetwin.cpp" line="104"/> <location filename="../expertsmartpointsetwin.cpp" line="112"/>
<source>: </source> <source>: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertsmartpointsetwin.cpp" line="108"/> <location filename="../expertsmartpointsetwin.cpp" line="116"/>
<source>138</source> <source>138</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertsmartpointsetwin.cpp" line="115"/> <location filename="../expertsmartpointsetwin.cpp" line="123"/>
<source>: </source> <source>: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertsmartpointsetwin.cpp" line="119"/> <location filename="../expertsmartpointsetwin.cpp" line="127"/>
<source>线</source> <source>线</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertsmartpointsetwin.cpp" line="120"/> <location filename="../expertsmartpointsetwin.cpp" line="128"/>
<source>1</source> <source>1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertsmartpointsetwin.cpp" line="121"/> <location filename="../expertsmartpointsetwin.cpp" line="129"/>
<source>8</source> <source>8</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertsmartpointsetwin.cpp" line="122"/> <location filename="../expertsmartpointsetwin.cpp" line="130"/>
<source>16</source> <source>16</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertsmartpointsetwin.cpp" line="140"/> <location filename="../expertsmartpointsetwin.cpp" line="148"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertsmartpointsetwin.cpp" line="152"/> <location filename="../expertsmartpointsetwin.cpp" line="160"/>
<source>线//: </source> <source>线//: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertsmartpointsetwin.cpp" line="158"/> <location filename="../expertsmartpointsetwin.cpp" line="166"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertsmartpointsetwin.cpp" line="161"/> <location filename="../expertsmartpointsetwin.cpp" line="169"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertsmartpointsetwin.cpp" line="170"/> <location filename="../expertsmartpointsetwin.cpp" line="178"/>
<source>线/: </source> <source>线/: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertsmartpointsetwin.cpp" line="188"/> <location filename="../expertsmartpointsetwin.cpp" line="196"/>
<source>245: </source> <source>245: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertsmartpointsetwin.cpp" line="212"/> <location filename="../expertsmartpointsetwin.cpp" line="220"/>
<source>线</source> <source>线</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertsmartpointsetwin.cpp" line="217"/> <location filename="../expertsmartpointsetwin.cpp" line="225"/>
<source>, </source> <source>, </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertsmartpointsetwin.cpp" line="223"/> <location filename="../expertsmartpointsetwin.cpp" line="231"/>
<source>1</source> <source>1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertsmartpointsetwin.cpp" line="228"/> <location filename="../expertsmartpointsetwin.cpp" line="236"/>
<location filename="../expertsmartpointsetwin.cpp" line="254"/> <location filename="../expertsmartpointsetwin.cpp" line="262"/>
<location filename="../expertsmartpointsetwin.cpp" line="280"/> <location filename="../expertsmartpointsetwin.cpp" line="288"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertsmartpointsetwin.cpp" line="233"/> <location filename="../expertsmartpointsetwin.cpp" line="241"/>
<location filename="../expertsmartpointsetwin.cpp" line="258"/> <location filename="../expertsmartpointsetwin.cpp" line="266"/>
<location filename="../expertsmartpointsetwin.cpp" line="284"/> <location filename="../expertsmartpointsetwin.cpp" line="292"/>
<source>绿</source> <source>绿</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertsmartpointsetwin.cpp" line="237"/> <location filename="../expertsmartpointsetwin.cpp" line="245"/>
<location filename="../expertsmartpointsetwin.cpp" line="263"/> <location filename="../expertsmartpointsetwin.cpp" line="271"/>
<location filename="../expertsmartpointsetwin.cpp" line="288"/> <location filename="../expertsmartpointsetwin.cpp" line="296"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertsmartpointsetwin.cpp" line="241"/> <location filename="../expertsmartpointsetwin.cpp" line="249"/>
<location filename="../expertsmartpointsetwin.cpp" line="267"/> <location filename="../expertsmartpointsetwin.cpp" line="275"/>
<location filename="../expertsmartpointsetwin.cpp" line="293"/> <location filename="../expertsmartpointsetwin.cpp" line="301"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertsmartpointsetwin.cpp" line="250"/> <location filename="../expertsmartpointsetwin.cpp" line="258"/>
<source>2</source> <source>2</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertsmartpointsetwin.cpp" line="276"/> <location filename="../expertsmartpointsetwin.cpp" line="284"/>
<source>3</source> <source>3</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertsmartpointsetwin.cpp" line="351"/> <location filename="../expertsmartpointsetwin.cpp" line="359"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertsmartpointsetwin.cpp" line="362"/> <location filename="../expertsmartpointsetwin.cpp" line="370"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertsmartpointsetwin.cpp" line="371"/> <location filename="../expertsmartpointsetwin.cpp" line="379"/>
<location filename="../expertsmartpointsetwin.cpp" line="561"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertsmartpointsetwin.cpp" line="402"/> <location filename="../expertsmartpointsetwin.cpp" line="410"/>
<location filename="../expertsmartpointsetwin.cpp" line="411"/> <location filename="../expertsmartpointsetwin.cpp" line="419"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertsmartpointsetwin.cpp" line="402"/> <location filename="../expertsmartpointsetwin.cpp" line="410"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertsmartpointsetwin.cpp" line="411"/> <location filename="../expertsmartpointsetwin.cpp" line="419"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertsmartpointsetwin.cpp" line="430"/> <location filename="../expertsmartpointsetwin.cpp" line="438"/>
<source>:</source> <source>:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertsmartpointsetwin.cpp" line="433"/> <location filename="../expertsmartpointsetwin.cpp" line="441"/>
<source>: :</source> <source>: :</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertsmartpointsetwin.cpp" line="442"/> <location filename="../expertsmartpointsetwin.cpp" line="450"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertsmartpointsetwin.cpp" line="446"/> <location filename="../expertsmartpointsetwin.cpp" line="454"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertsmartpointsetwin.cpp" line="483"/> <location filename="../expertsmartpointsetwin.cpp" line="494"/>
<location filename="../expertsmartpointsetwin.cpp" line="523"/>
<location filename="../expertsmartpointsetwin.cpp" line="544"/>
<location filename="../expertsmartpointsetwin.cpp" line="550"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../expertsmartpointsetwin.cpp" line="494"/>
<location filename="../expertsmartpointsetwin.cpp" line="544"/>
<source> %1 </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../expertsmartpointsetwin.cpp" line="523"/>
<location filename="../expertsmartpointsetwin.cpp" line="550"/>
<source> %1 </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../expertsmartpointsetwin.cpp" line="540"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertsmartpointsetwin.cpp" line="511"/> <location filename="../expertsmartpointsetwin.cpp" line="540"/>
<source>Module file (*.module)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../expertsmartpointsetwin.cpp" line="553"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../expertsmartpointsetwin.cpp" line="516"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../expertsmartpointsetwin.cpp" line="526"/>
<source>: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../expertsmartpointsetwin.cpp" line="527"/>
<source>1X2_3扫</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../expertsmartpointsetwin.cpp" line="531"/>
<source>: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../expertsmartpointsetwin.cpp" line="539"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../expertsmartpointsetwin.cpp" line="542"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../expertsmartpointsetwin.cpp" line="566"/>
<source></source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>ExpertWin</name> <name>ExpertWin</name>
<message> <message>
<location filename="../expertwin.cpp" line="196"/> <location filename="../expertwin.cpp" line="225"/>
<source>线</source> <source>线</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertwin.cpp" line="200"/> <location filename="../expertwin.cpp" line="229"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertwin.cpp" line="258"/> <location filename="../expertwin.cpp" line="284"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertwin.cpp" line="261"/> <location filename="../expertwin.cpp" line="287"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertwin.cpp" line="277"/> <location filename="../expertwin.cpp" line="305"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertwin.cpp" line="280"/> <location filename="../expertwin.cpp" line="308"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertwin.cpp" line="286"/> <location filename="../expertwin.cpp" line="314"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertwin.cpp" line="287"/> <location filename="../expertwin.cpp" line="315"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertwin.cpp" line="288"/> <location filename="../expertwin.cpp" line="316"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertwin.cpp" line="289"/> <location filename="../expertwin.cpp" line="317"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertwin.cpp" line="293"/> <location filename="../expertwin.cpp" line="318"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertwin.cpp" line="294"/> <location filename="../expertwin.cpp" line="319"/>
<source></source> <source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../expertwin.cpp" line="295"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../expertwin.cpp" line="296"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../expertwin.cpp" line="300"/>
<source>180</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../expertwin.cpp" line="302"/>
<source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertwin.cpp" line="320"/> <location filename="../expertwin.cpp" line="320"/>
<source></source> <source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../expertwin.cpp" line="321"/>
<source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertwin.cpp" line="326"/> <location filename="../expertwin.cpp" line="326"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../expertwin.cpp" line="327"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../expertwin.cpp" line="328"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../expertwin.cpp" line="329"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../expertwin.cpp" line="337"/>
<source>180°</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../expertwin.cpp" line="340"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../expertwin.cpp" line="352"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../expertwin.cpp" line="362"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertwin.cpp" line="334"/> <location filename="../expertwin.cpp" line="370"/>
<source>:</source> <source>:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertwin.cpp" line="344"/> <location filename="../expertwin.cpp" line="381"/>
<source>DCLK频率:</source> <source>DCLK频率:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertwin.cpp" line="359"/> <location filename="../expertwin.cpp" line="396"/>
<source>DCLK相位:</source> <source>DCLK相位:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertwin.cpp" line="366"/> <location filename="../expertwin.cpp" line="403"/>
<source>DCLK占空比:</source> <source>DCLK占空比:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertwin.cpp" line="373"/> <location filename="../expertwin.cpp" line="410"/>
<source>(ns):</source> <source>(ns):</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertwin.cpp" line="382"/> <location filename="../expertwin.cpp" line="419"/>
<source>:</source> <source>:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertwin.cpp" line="384"/> <location filename="../expertwin.cpp" line="421"/>
<source>100%</source> <source>100%</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertwin.cpp" line="388"/> <location filename="../expertwin.cpp" line="425"/>
<source>GCLK频率:</source> <source>GCLK频率:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertwin.cpp" line="403"/> <location filename="../expertwin.cpp" line="440"/>
<source>:</source> <source>:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertwin.cpp" line="416"/> <location filename="../expertwin.cpp" line="453"/>
<source>GCLK占空比:</source> <source>GCLK占空比:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertwin.cpp" line="423"/> <location filename="../expertwin.cpp" line="460"/>
<source>(ns):</source> <source>(ns):</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertwin.cpp" line="434"/> <location filename="../expertwin.cpp" line="471"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertwin.cpp" line="445"/> <location filename="../expertwin.cpp" line="482"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertwin.cpp" line="450"/> <location filename="../expertwin.cpp" line="487"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertwin.cpp" line="455"/> <location filename="../expertwin.cpp" line="492"/>
<location filename="../expertwin.cpp" line="514"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../expertwin.cpp" line="492"/>
<source>Box file (*.box)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../expertwin.cpp" line="496"/>
<location filename="../expertwin.cpp" line="502"/>
<location filename="../expertwin.cpp" line="518"/>
<location filename="../expertwin.cpp" line="526"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../expertwin.cpp" line="496"/>
<location filename="../expertwin.cpp" line="518"/>
<source> %1 </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../expertwin.cpp" line="502"/>
<location filename="../expertwin.cpp" line="526"/>
<source> %1 </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../expertwin.cpp" line="505"/>
<location filename="../expertwin.cpp" line="529"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../expertwin.cpp" line="510"/>
<source>Map</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../expertwin.cpp" line="535"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertwin.cpp" line="460"/> <location filename="../expertwin.cpp" line="542"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../expertwin.cpp" line="547"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertwin.cpp" line="465"/> <location filename="../expertwin.cpp" line="552"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertwin.cpp" line="477"/> <location filename="../expertwin.cpp" line="564"/>
<source>:</source> <source>:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../expertwin.cpp" line="483"/> <location filename="../expertwin.cpp" line="570"/>
<source>()</source> <source>()</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -567,76 +623,82 @@
<context> <context>
<name>MainWin</name> <name>MainWin</name>
<message> <message>
<location filename="../mainwin.cpp" line="83"/> <location filename="../mainwin.cpp" line="82"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../mainwin.cpp" line="87"/> <location filename="../mainwin.cpp" line="86"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../mainwin.cpp" line="91"/> <location filename="../mainwin.cpp" line="90"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../mainwin.cpp" line="95"/> <location filename="../mainwin.cpp" line="94"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../mainwin.cpp" line="99"/> <location filename="../mainwin.cpp" line="98"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../mainwin.cpp" line="103"/> <location filename="../mainwin.cpp" line="102"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../mainwin.cpp" line="111"/> <location filename="../mainwin.cpp" line="107"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../mainwin.cpp" line="131"/> <location filename="../mainwin.cpp" line="127"/>
<source>版本:221114</source> <source>版本:221114</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../mainwin.cpp" line="144"/> <location filename="../mainwin.cpp" line="140"/>
<location filename="../mainwin.cpp" line="149"/> <location filename="../mainwin.cpp" line="145"/>
<location filename="../mainwin.cpp" line="183"/> <location filename="../mainwin.cpp" line="179"/>
<location filename="../mainwin.cpp" line="186"/> <location filename="../mainwin.cpp" line="182"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../mainwin.cpp" line="163"/> <location filename="../mainwin.cpp" line="159"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../mainwin.cpp" line="168"/> <location filename="../mainwin.cpp" line="164"/>
<source>: </source> <source>: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../mainwin.cpp" line="223"/> <location filename="../mainwin.cpp" line="219"/>
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../mainwin.cpp" line="224"/> <location filename="../mainwin.cpp" line="220"/>
<source>:</source> <source>:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context> <context>
<name>PcapWin</name> <name>PcapWin</name>
<message>
<location filename="../pcapwin.cpp" line="16"/>
<location filename="../pcapwin.cpp" line="21"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<location filename="../pcapwin.cpp" line="30"/> <location filename="../pcapwin.cpp" line="30"/>
<source></source> <source></source>

View File

@ -3,8 +3,8 @@
#include "basewin.h" #include "basewin.h"
#define HAVE_REMOTE #define HAVE_REMOTE
#include <winsock2.h>
#include "pcap.h" #include "pcap.h"
#include <winsock2.h>
#include <QThread> #include <QThread>
#include <QSpinBox> #include <QSpinBox>
#include <QLabel> #include <QLabel>
@ -12,9 +12,6 @@
#include <QCheckBox> #include <QCheckBox>
#include "Win32-Extensions.h" #include "Win32-Extensions.h"
#pragma comment(lib, "wpcap.lib")
#pragma comment(lib, "Ws2_32.lib")
class VideoSendThread : public QThread { class VideoSendThread : public QThread {
Q_OBJECT Q_OBJECT
public: public: