ledset增加通信框架
This commit is contained in:
parent
bfb8e549e4
commit
36433b4d75
|
@ -537,6 +537,8 @@ QTabBar::tab:selected {margin-top: 0; border-bottom: none; color: #acf; backgrou
|
|||
connect(btn, &QPushButton::clicked, this, [=] {
|
||||
QByteArray data;
|
||||
addMapData(data);
|
||||
|
||||
|
||||
QMessageBox::information(this, tr("发送成功"), tr("发送成功"));
|
||||
});
|
||||
hBox->addWidget(btn);
|
||||
|
@ -731,10 +733,11 @@ void run() {
|
|||
// bytes.append("\0\x4", 2); //数据长度
|
||||
// bytes.append(4, '\xff'); //目的地址
|
||||
// bytes.append(4, 0); //源地址
|
||||
// bytes.append("\x35\0\xc\xbb", 4); //内存指针
|
||||
// bytes.append("\xB1\x04\0\0", 4); //内存指针
|
||||
// bytes.append(2, 0); //应答填充项
|
||||
// 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);
|
||||
// bytes.append(crc32>>24).append(crc32>>16).append(crc32>>8).append(crc32);
|
||||
// //发送帧开始指令包
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
|
||||
#include "basewin.h"
|
||||
#define HAVE_REMOTE
|
||||
#include <winsock2.h>
|
||||
#include "pcap.h"
|
||||
#include <QThread>
|
||||
#include <QLabel>
|
||||
|
|
|
@ -117,3 +117,15 @@ QByteArray getNetDev(QWidget *parent, QByteArray def) {
|
|||
return name;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
QByteArray sendMsg(QByteArray msg) {
|
||||
return sendMsgNet(msg);
|
||||
}
|
||||
|
||||
QByteArray sendMsgNet(QByteArray msg) {
|
||||
|
||||
|
||||
|
||||
return msg;
|
||||
}
|
||||
|
|
|
@ -6,4 +6,7 @@
|
|||
|
||||
QByteArray getNetDev(QWidget *parent, QByteArray);
|
||||
|
||||
QByteArray sendMsg(QByteArray);
|
||||
QByteArray sendMsgNet(QByteArray);
|
||||
|
||||
#endif // GLOBALFUNC_H
|
||||
|
|
|
@ -10,6 +10,13 @@ CONFIG += embed_translations
|
|||
# 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
|
||||
|
||||
|
||||
INCLUDEPATH += $$PWD/WpdPack_4_1_2/Include
|
||||
LIBS += -L$$PWD/WpdPack_4_1_2/Lib/\
|
||||
-lwpcap\
|
||||
-lpacket
|
||||
-lWs2_32
|
||||
|
||||
msvc {
|
||||
QMAKE_CXXFLAGS += -execution-charset:utf-8
|
||||
QMAKE_CXXFLAGS += -source-charset:utf-8
|
||||
|
@ -36,6 +43,7 @@ SOURCES += \
|
|||
gqt.cpp \
|
||||
main.cpp \
|
||||
mainwin.cpp \
|
||||
pcaprethread.cpp \
|
||||
pcapwin.cpp \
|
||||
screenunit.cpp \
|
||||
table.cpp \
|
||||
|
@ -52,6 +60,7 @@ HEADERS += \
|
|||
globalfunc.h \
|
||||
gqt.h \
|
||||
mainwin.h \
|
||||
pcaprethread.h \
|
||||
pcapwin.h \
|
||||
screenunit.h \
|
||||
table.h \
|
||||
|
@ -71,13 +80,6 @@ RESOURCES += \
|
|||
|
||||
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.
|
||||
qnx: target.path = /tmp/$${TARGET}/bin
|
||||
else: unix:!android: target.path = /opt/$${TARGET}/bin
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
#include <QTranslator>
|
||||
#include <QIcon>
|
||||
#include <QMessageBox>
|
||||
#include <QDebug>
|
||||
#include <QStyleFactory>
|
||||
|
||||
#ifdef _MSC_VER //MSVC编译器
|
||||
#define _WINSOCKAPI_
|
||||
|
@ -18,10 +18,7 @@ LONG WINAPI handleException(_EXCEPTION_POINTERS *excep) {
|
|||
QString errCode = QString::number(excep->ExceptionRecord->ExceptionCode, 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);
|
||||
if(hDumpFile == INVALID_HANDLE_VALUE) {
|
||||
qDebug()<<"handleException hDumpFile INVALID"<<"ExceptionCode"<<errCode<<"ExceptionAddress"<<errAddr;
|
||||
return EXCEPTION_CONTINUE_SEARCH; //未处理异常, 让 windows 弹出错误框并结束 (Qt会卡死一段时间)
|
||||
}
|
||||
if(hDumpFile == INVALID_HANDLE_VALUE) return EXCEPTION_CONTINUE_SEARCH; //未处理异常, 让 windows 弹出错误框并结束 (Qt会卡死一段时间)
|
||||
MINIDUMP_EXCEPTION_INFORMATION dumpInfo{GetCurrentThreadId(), excep, TRUE};
|
||||
MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hDumpFile, MiniDumpNormal, &dumpInfo, NULL, NULL);//写入Dump文件内容
|
||||
CloseHandle(hDumpFile);
|
||||
|
@ -36,47 +33,30 @@ int main(int argc, char *argv[]) {
|
|||
QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
|
||||
QApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::PassThrough);
|
||||
QApplication a(argc, argv);
|
||||
a.setStyle(QStyleFactory::create("Fusion"));
|
||||
a.setWindowIcon(QIcon(":/128.ico"));
|
||||
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;}
|
||||
|
||||
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;}
|
||||
|
||||
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:checked {border-image: url(:/imgs/radio-check.png);}
|
||||
QCheckBox::indicator {border-image: url(:/imgs/checkbox-un.png); width: 1em; height: 1em;}
|
||||
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;}
|
||||
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;}
|
||||
QPushButton[ss="blue"] {background: #07a;}
|
||||
)rrr");
|
||||
/*
|
||||
*/
|
||||
QFont font;
|
||||
font.setFamilies(QStringList{"Arial","Microsoft YaHei UI"});
|
||||
font.setPixelSize(14);
|
||||
|
@ -87,14 +67,15 @@ QSlider::handle:horizontal {width: 8px;}
|
|||
plt.setBrush(QPalette::Base, QColor(0x222222));
|
||||
plt.setBrush(QPalette::AlternateBase, QColor(0x333333));
|
||||
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::ToolTipBase, QColor(0x444466));
|
||||
plt.setBrush(QPalette::ToolTipText, QColor(0xffffff));
|
||||
plt.setBrush(QPalette::ToolTipText, QColor(0xeeeeee));
|
||||
plt.setBrush(QPalette::Light, QColor(0x444444));
|
||||
plt.setBrush(QPalette::Midlight, QColor(0x555555));
|
||||
plt.setBrush(QPalette::Mid, QColor(0x666666));
|
||||
plt.setBrush(QPalette::Dark, QColor(0x777777));
|
||||
plt.setBrush(QPalette::Midlight, QColor(0x666666));
|
||||
plt.setBrush(QPalette::Mid, QColor(0x888888));
|
||||
plt.setBrush(QPalette::Dark, QColor(0xaaaaaa));
|
||||
plt.setBrush(QPalette::BrightText, QColor(0,0,0));
|
||||
plt.setBrush(QPalette::Shadow, QColor(0xaaaaaa));
|
||||
a.setPalette(plt);
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#include "mainwin.h"
|
||||
#include "pcaprethread.h"
|
||||
#include "fast.h"
|
||||
#include "expertwin.h"
|
||||
#include "brightwin.h"
|
||||
|
@ -145,10 +146,11 @@ MainWin::MainWin() {
|
|||
QMessageBox::critical(this, "Error", QString(tr("打开网卡失败"))+errbuf);
|
||||
return;
|
||||
}
|
||||
if(pcapRe) pcap_close(pcapRe);
|
||||
if(reThd) reThd->status = 2;
|
||||
if(pcapSend) pcap_close(pcapSend);
|
||||
pcapRe = pcapR;
|
||||
pcapSend = pcapS;
|
||||
reThd = new PcapReThread(pcapR);
|
||||
reThd->start();
|
||||
QSettings config(QApplication::applicationDirPath()+"/ledset.config", QSettings::IniFormat);//QDir::currentPath()为exe位置
|
||||
config.beginGroup("GLOBAL");
|
||||
config.setValue("net_name", net_name = name);
|
||||
|
@ -159,6 +161,20 @@ MainWin::MainWin() {
|
|||
auto btnRefresh = new QPushButton(tr("刷新"));
|
||||
btnRefresh->setMinimumWidth(80);
|
||||
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");
|
||||
if(pcap_sendpacket(pcapSend, (u_char*)bytes.data(), bytes.size())) {
|
||||
QMessageBox::critical(this, "Error", QString(tr("发送失败: "))+pcap_geterr(pcapSend));
|
||||
|
@ -175,63 +191,23 @@ MainWin::MainWin() {
|
|||
name = getNetDev(this, name);
|
||||
if(! name.isEmpty()) {
|
||||
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);
|
||||
else {
|
||||
pcapSend = pcap_open_live(name.data(), 65536, 0, 50, 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();
|
||||
}
|
||||
|
||||
MainPcapThread::MainPcapThread(pcap_t *pcap) : pcap(pcap) {
|
||||
connect(this, &QThread::finished, this, &QThread::deleteLater);
|
||||
}
|
||||
void MainWin::ProNetData(const u_char *data,int len) {
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -3,26 +3,7 @@
|
|||
|
||||
#include "basewin.h"
|
||||
#include "table.h"
|
||||
#define HAVE_REMOTE
|
||||
#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 *);
|
||||
};
|
||||
#include "pcaprethread.h"
|
||||
|
||||
class MainWin : public BaseWin {
|
||||
Q_OBJECT
|
||||
|
@ -30,13 +11,12 @@ public:
|
|||
MainWin();
|
||||
QWidget *win{0};
|
||||
QByteArray net_name;
|
||||
pcap_t *pcapRe{0};
|
||||
pcap_t *pcapSend{0};
|
||||
MainPcapThread *thd{0};
|
||||
Table *table = nullptr;
|
||||
protected slots:
|
||||
void ProNetData(const u_char *data,int len);
|
||||
PcapReThread *reThd{0};
|
||||
Table *table{0};
|
||||
|
||||
protected slots:
|
||||
void ProNetData(const uint8_t *data, int len);
|
||||
};
|
||||
|
||||
#endif // MAINWIN_H
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
||||
|
|
@ -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
|
|
@ -3,7 +3,6 @@
|
|||
|
||||
#include "basewin.h"
|
||||
#define HAVE_REMOTE
|
||||
#include <winsock2.h>
|
||||
#include "pcap.h"
|
||||
#include <QThread>
|
||||
|
||||
|
|
|
@ -136,430 +136,486 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="38"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="46"/>
|
||||
<source>基本参数</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="51"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="59"/>
|
||||
<source>模组宽度: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="63"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="71"/>
|
||||
<source>模组高度: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="75"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="83"/>
|
||||
<source>数据组数: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="93"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="101"/>
|
||||
<source>驱动芯片: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="104"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="112"/>
|
||||
<source>译码方式: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="108"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="116"/>
|
||||
<source>138译码</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="115"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="123"/>
|
||||
<source>分组方式: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="119"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="127"/>
|
||||
<source>三线并行</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="120"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="128"/>
|
||||
<source>三色1点串</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="121"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="129"/>
|
||||
<source>三色8点串</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="122"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="130"/>
|
||||
<source>三色16点串</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="140"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="148"/>
|
||||
<source>扫描行数</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="152"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="160"/>
|
||||
<source>根据亮线的行/列数确定扫描行/列数: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="158"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="166"/>
|
||||
<source>行</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="161"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="169"/>
|
||||
<source>列</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="170"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="178"/>
|
||||
<source>亮线的行/列数: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="188"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="196"/>
|
||||
<source>芯片245版本: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="212"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="220"/>
|
||||
<source>数据线颜色</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="217"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="225"/>
|
||||
<source>依次点击以下状态, 根据模组颜色选择对应颜色</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="223"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="231"/>
|
||||
<source>状态1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="228"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="254"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="280"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="236"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="262"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="288"/>
|
||||
<source>红</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="233"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="258"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="284"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="241"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="266"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="292"/>
|
||||
<source>绿</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="237"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="263"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="288"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="245"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="271"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="296"/>
|
||||
<source>蓝</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="241"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="267"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="293"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="249"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="275"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="301"/>
|
||||
<source>黑</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="250"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="258"/>
|
||||
<source>状态2</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="276"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="284"/>
|
||||
<source>状态3</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="351"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="359"/>
|
||||
<source>插入虚点</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="362"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="370"/>
|
||||
<source>重新走点</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="371"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="561"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="379"/>
|
||||
<source>完成</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="402"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="411"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="410"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="419"/>
|
||||
<source>提示</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="402"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="410"/>
|
||||
<source>列走完</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="411"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="419"/>
|
||||
<source>行走完</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="430"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="438"/>
|
||||
<source>第一扫灯数:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="433"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="441"/>
|
||||
<source>实: 虚:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="442"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="450"/>
|
||||
<source>上一步</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="446"/>
|
||||
<location filename="../expertsmartpointsetwin.cpp" line="454"/>
|
||||
<source>下一步</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<name>ExpertWin</name>
|
||||
<message>
|
||||
<location filename="../expertwin.cpp" line="196"/>
|
||||
<location filename="../expertwin.cpp" line="225"/>
|
||||
<source>数据线颜色</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertwin.cpp" line="200"/>
|
||||
<location filename="../expertwin.cpp" line="229"/>
|
||||
<source>模组抽行设置</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertwin.cpp" line="258"/>
|
||||
<location filename="../expertwin.cpp" line="284"/>
|
||||
<source>宽度</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertwin.cpp" line="261"/>
|
||||
<location filename="../expertwin.cpp" line="287"/>
|
||||
<source>高度</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertwin.cpp" line="277"/>
|
||||
<location filename="../expertwin.cpp" line="305"/>
|
||||
<source>多开设置</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertwin.cpp" line="280"/>
|
||||
<location filename="../expertwin.cpp" line="308"/>
|
||||
<source>级联方向</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertwin.cpp" line="286"/>
|
||||
<location filename="../expertwin.cpp" line="314"/>
|
||||
<source>无</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertwin.cpp" line="287"/>
|
||||
<location filename="../expertwin.cpp" line="315"/>
|
||||
<source>双开</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertwin.cpp" line="288"/>
|
||||
<location filename="../expertwin.cpp" line="316"/>
|
||||
<source>三开</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertwin.cpp" line="289"/>
|
||||
<location filename="../expertwin.cpp" line="317"/>
|
||||
<source>四开</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertwin.cpp" line="293"/>
|
||||
<source>从左到右</source>
|
||||
<location filename="../expertwin.cpp" line="318"/>
|
||||
<source>五开</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertwin.cpp" line="294"/>
|
||||
<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>
|
||||
<location filename="../expertwin.cpp" line="319"/>
|
||||
<source>六开</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<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>
|
||||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertwin.cpp" line="334"/>
|
||||
<location filename="../expertwin.cpp" line="370"/>
|
||||
<source>视觉刷新率:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertwin.cpp" line="344"/>
|
||||
<location filename="../expertwin.cpp" line="381"/>
|
||||
<source>DCLK频率:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertwin.cpp" line="359"/>
|
||||
<location filename="../expertwin.cpp" line="396"/>
|
||||
<source>DCLK相位:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertwin.cpp" line="366"/>
|
||||
<location filename="../expertwin.cpp" line="403"/>
|
||||
<source>DCLK占空比:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertwin.cpp" line="373"/>
|
||||
<location filename="../expertwin.cpp" line="410"/>
|
||||
<source>换行时间(ns):</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertwin.cpp" line="382"/>
|
||||
<location filename="../expertwin.cpp" line="419"/>
|
||||
<source>亮度有效率:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertwin.cpp" line="384"/>
|
||||
<location filename="../expertwin.cpp" line="421"/>
|
||||
<source>100%</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertwin.cpp" line="388"/>
|
||||
<location filename="../expertwin.cpp" line="425"/>
|
||||
<source>GCLK频率:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertwin.cpp" line="403"/>
|
||||
<location filename="../expertwin.cpp" line="440"/>
|
||||
<source>灰度级数:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertwin.cpp" line="416"/>
|
||||
<location filename="../expertwin.cpp" line="453"/>
|
||||
<source>GCLK占空比:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertwin.cpp" line="423"/>
|
||||
<location filename="../expertwin.cpp" line="460"/>
|
||||
<source>换行位置(ns):</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertwin.cpp" line="434"/>
|
||||
<location filename="../expertwin.cpp" line="471"/>
|
||||
<source>更多设置</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertwin.cpp" line="445"/>
|
||||
<location filename="../expertwin.cpp" line="482"/>
|
||||
<source>打开配置</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertwin.cpp" line="450"/>
|
||||
<location filename="../expertwin.cpp" line="487"/>
|
||||
<source>保存配置</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertwin.cpp" line="465"/>
|
||||
<location filename="../expertwin.cpp" line="552"/>
|
||||
<source>回读数据</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertwin.cpp" line="477"/>
|
||||
<location filename="../expertwin.cpp" line="564"/>
|
||||
<source>状态:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../expertwin.cpp" line="483"/>
|
||||
<location filename="../expertwin.cpp" line="570"/>
|
||||
<source>显示屏连接(正面看屏)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -567,76 +623,82 @@
|
|||
<context>
|
||||
<name>MainWin</name>
|
||||
<message>
|
||||
<location filename="../mainwin.cpp" line="83"/>
|
||||
<location filename="../mainwin.cpp" line="82"/>
|
||||
<source>专家调屏</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwin.cpp" line="87"/>
|
||||
<location filename="../mainwin.cpp" line="86"/>
|
||||
<source>亮度控制</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwin.cpp" line="91"/>
|
||||
<location filename="../mainwin.cpp" line="90"/>
|
||||
<source>相机矫正</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwin.cpp" line="95"/>
|
||||
<location filename="../mainwin.cpp" line="94"/>
|
||||
<source>屏体监控</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwin.cpp" line="99"/>
|
||||
<location filename="../mainwin.cpp" line="98"/>
|
||||
<source>多功能卡</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwin.cpp" line="103"/>
|
||||
<location filename="../mainwin.cpp" line="102"/>
|
||||
<source>协议调试</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwin.cpp" line="111"/>
|
||||
<location filename="../mainwin.cpp" line="107"/>
|
||||
<source>模拟同步</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwin.cpp" line="131"/>
|
||||
<location filename="../mainwin.cpp" line="127"/>
|
||||
<source>版本:221114</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwin.cpp" line="144"/>
|
||||
<location filename="../mainwin.cpp" line="149"/>
|
||||
<location filename="../mainwin.cpp" line="183"/>
|
||||
<location filename="../mainwin.cpp" line="186"/>
|
||||
<location filename="../mainwin.cpp" line="140"/>
|
||||
<location filename="../mainwin.cpp" line="145"/>
|
||||
<location filename="../mainwin.cpp" line="179"/>
|
||||
<location filename="../mainwin.cpp" line="182"/>
|
||||
<source>打开网卡失败</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwin.cpp" line="163"/>
|
||||
<location filename="../mainwin.cpp" line="159"/>
|
||||
<source>刷新</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwin.cpp" line="168"/>
|
||||
<location filename="../mainwin.cpp" line="164"/>
|
||||
<source>发送失败: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwin.cpp" line="223"/>
|
||||
<location filename="../mainwin.cpp" line="219"/>
|
||||
<source>虚拟设备</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwin.cpp" line="224"/>
|
||||
<location filename="../mainwin.cpp" line="220"/>
|
||||
<source>网口:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PcapWin</name>
|
||||
<message>
|
||||
<location filename="../pcapwin.cpp" line="16"/>
|
||||
<location filename="../pcapwin.cpp" line="21"/>
|
||||
<source>打开网卡失败</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../pcapwin.cpp" line="30"/>
|
||||
<source>网口通信</source>
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
#include "basewin.h"
|
||||
|
||||
#define HAVE_REMOTE
|
||||
#include <winsock2.h>
|
||||
#include "pcap.h"
|
||||
#include <winsock2.h>
|
||||
#include <QThread>
|
||||
#include <QSpinBox>
|
||||
#include <QLabel>
|
||||
|
@ -12,9 +12,6 @@
|
|||
#include <QCheckBox>
|
||||
#include "Win32-Extensions.h"
|
||||
|
||||
#pragma comment(lib, "wpcap.lib")
|
||||
#pragma comment(lib, "Ws2_32.lib")
|
||||
|
||||
class VideoSendThread : public QThread {
|
||||
Q_OBJECT
|
||||
public:
|
||||
|
|
Loading…
Reference in New Issue
Block a user