Skip to content

Commit fe590f6

Browse files
committed
1.4.1(T)
增加“auto restart port”的功能,快捷键CTRL+alt+s,打开的图标是绿色插头。关闭的图标是绿色小三角。 设备离线后重新上线,可以自动打开端口。
1 parent 7b67e66 commit fe590f6

14 files changed

+149
-48
lines changed

SerialTool/include/mainwindow.h

-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ private slots:
5757
QLabel *m_rxCntLabel, *m_txCntLabel, *m_portInfoLabel;
5858
QVector<QTranslator*> m_translator;
5959
PortManager *m_port;
60-
PortManager *restart_port;
6160
Controller *m_controller;
6261
};
6362

239 Bytes
Binary file not shown.

SerialTool/language/serialtool_zh_CN.ts

+47-34
Original file line numberDiff line numberDiff line change
@@ -170,121 +170,134 @@
170170
</message>
171171
<message>
172172
<location filename="../ui/mainwindow.ui" line="120"/>
173-
<location filename="../ui/mainwindow.ui" line="233"/>
173+
<location filename="../ui/mainwindow.ui" line="247"/>
174174
<source>Tool Bar</source>
175175
<translation>工具栏</translation>
176176
</message>
177177
<message>
178-
<location filename="../ui/mainwindow.ui" line="152"/>
178+
<location filename="../ui/mainwindow.ui" line="153"/>
179179
<source>Save</source>
180180
<translation>保存</translation>
181181
</message>
182182
<message>
183-
<location filename="../ui/mainwindow.ui" line="155"/>
183+
<location filename="../ui/mainwindow.ui" line="156"/>
184184
<source>Ctrl+S</source>
185185
<translation></translation>
186186
</message>
187187
<message>
188-
<location filename="../ui/mainwindow.ui" line="164"/>
188+
<location filename="../ui/mainwindow.ui" line="165"/>
189189
<source>Options</source>
190190
<translation>选项</translation>
191191
</message>
192192
<message>
193-
<location filename="../ui/mainwindow.ui" line="173"/>
194-
<location filename="../src/mainwindow.cpp" line="268"/>
193+
<location filename="../ui/mainwindow.ui" line="174"/>
194+
<location filename="../src/mainwindow.cpp" line="273"/>
195195
<source>Open Port</source>
196196
<translation>打开端口</translation>
197197
</message>
198198
<message>
199-
<location filename="../ui/mainwindow.ui" line="176"/>
199+
<location filename="../ui/mainwindow.ui" line="177"/>
200200
<source>Alt+S</source>
201201
<translation></translation>
202202
</message>
203203
<message>
204-
<location filename="../ui/mainwindow.ui" line="189"/>
205-
<location filename="../src/mainwindow.cpp" line="218"/>
204+
<location filename="../ui/mainwindow.ui" line="190"/>
205+
<source>Ctrl+Alt+S</source>
206+
<translation>Ctrl+Alt+S</translation>
207+
</message>
208+
<message>
209+
<location filename="../ui/mainwindow.ui" line="203"/>
210+
<location filename="../src/mainwindow.cpp" line="219"/>
206211
<source>Pause Tx/Rx</source>
207212
<translation>暂停发送/接收</translation>
208213
</message>
209214
<message>
210-
<location filename="../ui/mainwindow.ui" line="192"/>
215+
<location filename="../ui/mainwindow.ui" line="206"/>
211216
<source>Alt+R</source>
212217
<translation></translation>
213218
</message>
214219
<message>
215-
<location filename="../ui/mainwindow.ui" line="201"/>
220+
<location filename="../ui/mainwindow.ui" line="187"/>
221+
<location filename="../src/mainwindow.cpp" line="276"/>
222+
<source>Auto Restart Port</source>
223+
<translation>自动重连端口</translation>
224+
</message>
225+
<message>
226+
<location filename="../ui/mainwindow.ui" line="215"/>
216227
<source>Clear Buffer</source>
217228
<translation>清空缓冲</translation>
218229
</message>
219230
<message>
220-
<location filename="../ui/mainwindow.ui" line="204"/>
231+
<location filename="../ui/mainwindow.ui" line="218"/>
221232
<source>Alt+C</source>
222233
<translation></translation>
223234
</message>
224235
<message>
225-
<location filename="../ui/mainwindow.ui" line="213"/>
236+
<location filename="../ui/mainwindow.ui" line="227"/>
226237
<source>Port Settings</source>
227238
<translation>端口设置</translation>
228239
</message>
229240
<message>
230-
<location filename="../ui/mainwindow.ui" line="222"/>
241+
<location filename="../ui/mainwindow.ui" line="236"/>
231242
<source>Close</source>
232243
<translation>关闭</translation>
233244
</message>
234245
<message>
235-
<location filename="../ui/mainwindow.ui" line="244"/>
246+
<location filename="../ui/mainwindow.ui" line="258"/>
236247
<source>Status Bar</source>
237248
<translation>状态栏</translation>
238249
</message>
239250
<message>
240-
<location filename="../ui/mainwindow.ui" line="249"/>
251+
<location filename="../ui/mainwindow.ui" line="263"/>
241252
<source>About</source>
242253
<translation>关于</translation>
243254
</message>
244255
<message>
245-
<location filename="../ui/mainwindow.ui" line="252"/>
256+
<location filename="../ui/mainwindow.ui" line="266"/>
246257
<source>F1</source>
247258
<translation></translation>
248259
</message>
249260
<message>
250-
<location filename="../ui/mainwindow.ui" line="257"/>
251-
<location filename="../ui/mainwindow.ui" line="260"/>
261+
<location filename="../ui/mainwindow.ui" line="271"/>
262+
<location filename="../ui/mainwindow.ui" line="274"/>
252263
<source>Wiki</source>
253264
<translation></translation>
254265
</message>
255266
<message>
256-
<location filename="../ui/mainwindow.ui" line="269"/>
257-
<location filename="../ui/mainwindow.ui" line="272"/>
267+
<location filename="../ui/mainwindow.ui" line="283"/>
268+
<location filename="../ui/mainwindow.ui" line="286"/>
258269
<source>Open</source>
259270
<translation>打开</translation>
260271
</message>
261272
<message>
262-
<location filename="../ui/mainwindow.ui" line="275"/>
273+
<location filename="../ui/mainwindow.ui" line="289"/>
263274
<source>Ctrl+O</source>
264275
<translation></translation>
265276
</message>
266277
<message>
267-
<location filename="../ui/mainwindow.ui" line="284"/>
278+
<location filename="../ui/mainwindow.ui" line="298"/>
268279
<source>Stays On Top</source>
269280
<translation>置于顶层</translation>
270281
</message>
271282
<message>
272-
<location filename="../ui/mainwindow.ui" line="289"/>
273-
<source>Update</source>
274-
<translation>更新</translation>
275-
</message>
276-
<message>
277-
<location filename="../ui/mainwindow.ui" line="294"/>
283+
<location filename="../ui/mainwindow.ui" line="308"/>
278284
<source>Reset Config</source>
279285
<translation>清除设置</translation>
280286
</message>
281287
<message>
282-
<location filename="../src/mainwindow.cpp" line="213"/>
288+
<location filename="../ui/mainwindow.ui" line="303"/>
289+
<source>Update</source>
290+
<translation>更新</translation>
291+
</message>
292+
293+
<message>
294+
<location filename="../src/mainwindow.cpp" line="214"/>
283295
<source>Start Tx/Rx</source>
284296
<translation>开始发送/接收</translation>
285297
</message>
286298
<message>
287-
<location filename="../src/mainwindow.cpp" line="254"/>
299+
<location filename="../src/mainwindow.cpp" line="255"/>
300+
<location filename="../src/mainwindow.cpp" line="258"/>
288301
<source>Close Port</source>
289302
<translation>关闭端口</translation>
290303
</message>
@@ -497,7 +510,7 @@ Please check the port number.</source>
497510
<message>
498511
<location filename="../src/views/terminal/terminalview.h" line="16"/>
499512
<source>Terminal</source>
500-
<translation type="unfinished">终端</translation>
513+
<translation>终端</translation>
501514
</message>
502515
</context>
503516
<context>
@@ -702,13 +715,13 @@ Please check the port number.</source>
702715
<location filename="../src/views/viewmanager.cpp" line="155"/>
703716
<location filename="../src/views/viewmanager.cpp" line="174"/>
704717
<source>Warning</source>
705-
<translation type="unfinished">警告</translation>
718+
<translation>警告</translation>
706719
</message>
707720
<message>
708721
<location filename="../src/views/viewmanager.cpp" line="156"/>
709722
<location filename="../src/views/viewmanager.cpp" line="175"/>
710723
<source>This view does not support this operation.</source>
711-
<translation type="unfinished"></translation>
724+
<translation>本视图不支持此操作。</translation>
712725
</message>
713726
<message>
714727
<location filename="../src/views/viewmanager.cpp" line="165"/>

SerialTool/resource/serialtool.qrc

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
<file>images/clear.ico</file>
1414
<file>images/close.ico</file>
1515
<file>images/port config.ico</file>
16+
<file>images/connectyellow.ico</file>
1617
</qresource>
1718
<qresource prefix="/license">
1819
<file>license.html</file>

SerialTool/src/mainwindow.cpp

+32-8
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#include "controller.h"
1616
#include "port/portmanager.h"
1717
#include "settings/optionsdialog.h"
18+
#include <QDebug>
1819

1920
MainWindow::MainWindow(QWidget *parent) :
2021
QMainWindow(parent),
@@ -52,7 +53,7 @@ MainWindow::MainWindow(QWidget *parent) :
5253
// create connection between axes and scroll bars:
5354
connect(ui->portRunAction, SIGNAL(triggered()), this, SLOT(changeRunFlag()));
5455
connect(ui->portSwitchAction, SIGNAL(triggered()), this, SLOT(onPortSwitchActionTriggered()));
55-
connect(ui->portSwitchAction2, SIGNAL(triggered()), this, SLOT(onPortSwitchAction2Triggered()));
56+
connect(ui->portSwitchAction2, SIGNAL(triggered()), this, SLOT(onPortSwitchAction2Triggered()));
5657
connect(ui->clearAction, SIGNAL(triggered()), this, SLOT(clear()));
5758
connect(ui->actionRemoveConfig, SIGNAL(triggered()), this, SLOT(removeConfig()));
5859
connect(&m_timer, &QTimer::timeout, this, &MainWindow::onSecTimerTimeout);
@@ -232,6 +233,7 @@ void MainWindow::dispPortStatus()
232233
palette.setColor(QPalette::WindowText, status ? Qt::darkGreen : Qt::red);
233234
m_portInfoLabel->setText(string);
234235
m_portInfoLabel->setPalette(palette);
236+
235237
}
236238

237239
// 秒定时器溢出槽函数
@@ -244,18 +246,30 @@ void MainWindow::onSecTimerTimeout()
244246
m_rxCntLabel->setText(str);
245247
str = "TX: " + QString::number(m_controller->transmitCount()) + "Bytes";
246248
m_txCntLabel->setText(str);
249+
250+
QString label = m_portInfoLabel->text();
251+
if(label.contains("CLOSED")){
252+
if(m_port->isOpen()){
253+
ui->portRunAction->setEnabled(true);
254+
m_controller->setEnabled(m_runFlag);
255+
dispPortStatus(); // 更新端口状态显示
256+
qDebug() << "onSecTimerTimeout(), port isOpen but label shows closed";
257+
}
258+
}
259+
247260
}
248261

249262
// 打开端口
250263
void MainWindow::openPort()
251264
{
252265
if (m_port->open()) {
253-
QIcon icon(":/SerialTool/images/close.ico");
266+
QIcon icon(":/SerialTool/images/close.ico");
254267
ui->portSwitchAction->setIcon(icon);
255268
ui->portSwitchAction->setText(tr("Close Port"));
256269

270+
// QIcon icon2(":/SerialTool/images/connectyellow.ico");
257271
ui->portSwitchAction2->setIcon(icon);
258-
ui->portSwitchAction2->setText(tr("Close Port"));
272+
ui->portSwitchAction2->setText(tr("Manual Restart Port"));
259273

260274
ui->portRunAction->setEnabled(true);
261275
m_controller->setEnabled(m_runFlag);
@@ -272,8 +286,9 @@ void MainWindow::closePort()
272286
ui->portSwitchAction->setIcon(icon);
273287
ui->portSwitchAction->setText(tr("Open Port"));
274288

275-
ui->portSwitchAction2->setIcon(icon);
276-
ui->portSwitchAction2->setText(tr("Open Port & Auto Restart"));
289+
QIcon icon2(":/SerialTool/images/start.ico");
290+
ui->portSwitchAction2->setIcon(icon2);
291+
ui->portSwitchAction2->setText(tr("Auto Restart Port"));
277292

278293
ui->portRunAction->setEnabled(false);
279294
m_controller->setEnabled(false);
@@ -288,18 +303,27 @@ void MainWindow::onPortSwitchActionTriggered()
288303
} else { // 端口关闭时打开端口
289304
openPort();
290305
}
306+
m_port->autoOpen(false);
291307
}
292308

293309

294310
// 打开串口槽函数
295311
void MainWindow::onPortSwitchAction2Triggered()
296312
{
297313
if (ui->portRunAction->isEnabled() == true) { // 现在需要关闭端口
298-
closePort();
299-
restart_port=NULL;
314+
// closePort();
315+
316+
QIcon icon(":/SerialTool/images/connect.ico");
317+
318+
ui->portSwitchAction2->setIcon(icon);
319+
ui->portSwitchAction2->setText(tr("Auto Restart Port"));
320+
321+
dispPortStatus(); // 更新端口状态显示
322+
m_port->autoOpen(false);
323+
300324
} else { // 端口关闭时打开端口
301325
openPort();
302-
restart_port=m_port;
326+
qDebug() << (m_port->autoOpen(true)) ;
303327
}
304328
}
305329

SerialTool/src/port/abstractport.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class AbstractPort : public QWidget
2222
virtual bool isOpen() = 0;
2323
virtual bool usePortSetDialog() { return false; }
2424
virtual void portSetDialog() {}
25-
25+
virtual QString autoOpen(bool open)=0;
2626
signals:
2727
void readyRead();
2828
void portError();

SerialTool/src/port/portmanager.cpp

+4
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,10 @@ void PortManager::loadSettings(QSettings *config)
6767
m_config->beginGroup("Settings");
6868
}
6969

70+
QString PortManager::autoOpen(bool open){
71+
return m_currentPort->autoOpen(open);
72+
}
73+
7074
bool PortManager::open()
7175
{
7276
return m_currentPort->open();

SerialTool/src/port/portmanager.h

+3
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,15 @@ class PortManager : public QObject
2626
bool portStatus(QString *string);
2727
bool isOpen();
2828
void portSetDialog();
29+
QString autoOpen(bool open);
2930

3031
signals:
3132
void readyRead();
3233
void portError();
3334
void portChanged();
3435

36+
37+
3538
private:
3639
void setupPort(AbstractPort *port);
3740

0 commit comments

Comments
 (0)