#include "SaveResultFileDlg.h"
#include "ui_SaveResultFileDlg.h"
#include <QDateTime>
#include <QFileDialog>
#include <iostream>
#include <thread>
#include <QTextCodec>
#include <QMessageBox>
#include <QFrame>
#include <QDir>
SaveResultFileDlg::SaveResultFileDlg(QWidget *parent) :
QDialog(parent),
ui(new Ui::SaveResultFileDlg)
{
ui->setupUi(this);
setAttribute (Qt::WA_DeleteOnClose);
Qt::WindowFlags flags=Qt::Dialog;
flags |=Qt::WindowMinMaxButtonsHint;
flags |=Qt::WindowCloseButtonHint;
setWindowFlags(flags);
initClient();
initServer();
initSerialPort();
bindEvent();
ui->ClientRadioButton->setChecked(true);
ui->stackedWidget->setCurrentIndex(0);
ui->RecStrRadioButton->setChecked(true);
ui->SendStrRadioButton->setChecked(true);
connect(ui->ClientRadioButton, SIGNAL(toggled(bool)), this, SLOT(onClientSlot()));
connect(ui->ServerRadioButton, SIGNAL(toggled(bool)), this, SLOT(onServerSlot()));
connect(ui->SerialPortRadioButton,SIGNAL(toggled(bool)), this,SLOT(onSerialPortSlot()));
connect(ui->SendStrRadioButton, SIGNAL(toggled(bool)), this, SLOT(onSendStSlot()));
connect(ui->SendHexRadioButton, SIGNAL(toggled(bool)), this, SLOT(onSendHexSlot()));
ui->SaveAllcheckBoxTxt->setCheckState(Qt::Unchecked);
//ui->SavePartcheckBoxTxt->setCheckState(Qt::Unchecked);
//connect(ui->SaveAllcheckBoxTxt, SIGNAL(stateChanged(int)), this, SLOT(onSaveAllChanged(int)));
//connect(ui->SavePartcheckBoxTxt, SIGNAL(stateChanged(int)), this, SLOT(onSavePartChanged(int)));
connect(ui->SaveAllcheckBoxTxt,SIGNAL(clicked()),this,SLOT(checkSaveAllChanged()));
//connect(ui->SavePartcheckBoxTxt,SIGNAL(clicked()),this,SLOT(checkSavePartChanged()));
connect(ui->SavePartBtn,SIGNAL(clicked(bool)),this,SLOT(onSaveRecDataFun(bool)));
//ui->RceTextBrowser->document()->setMaximumBlockCount(4);
ui->lineEditPath->setEnabled(false);
connect(ui->NewFileBtn, SIGNAL(clicked(bool)), this, SLOT(onSaveAsFun(bool)));
connect(ui->OKButton, SIGNAL(clicked(bool)), this, SLOT(onOkButton(bool)));
connect(ui->CancelButton, SIGNAL(clicked(bool)), this, SLOT(onCancelButton(bool)));
connect(ui->ClientConnectBtn,SIGNAL(clicked(bool)),this,SLOT(newConnect(bool)));
connect(ui->RceTextBrowser,SIGNAL(cursorPositionChanged()), this,SLOT(autoScroll()));
connect(ui->SendBtn,SIGNAL(clicked(bool)),this,SLOT(sendTextData(bool)));
connect(ui->ReceiveClearBtn,SIGNAL(clicked(bool)),this,SLOT(onRecClearText(bool)));
connect(ui->SendClearBtn,SIGNAL(clicked(bool)),this,SLOT(onSendClearText(bool)));
m_SendTimer = new QTimer(this);
m_SendTimer->setInterval(1000);
connect(m_SendTimer, SIGNAL(timeout()), this, SLOT(onSelectAutoSend()));
//connect(ui->TimeCheckBox, SIGNAL(stateChanged(int)), this, SLOT(onTimeChanged(int)));
ui->TimeCheckBox->setChecked(false);
connect(ui->TimeCheckBox,SIGNAL(clicked()),this,SLOT(checkTimeState()));
Msginfo += QString(tr("网络状态:"));
Msginfo += QString(tr("无连接"));
ui->Msglabel->setText(Msginfo);
ui->Msglabel->setFrameShape(QFrame::Panel);
ui->Msglabel->setFrameShadow(QFrame::Sunken);
SendNuminfo += QString(tr("发送: 0"));
ui->SendNumlabel->setText(SendNuminfo);
ui->SendNumlabel->setFrameShape(QFrame::Panel);
ui->SendNumlabel->setFrameShadow(QFrame::Sunken);
RecNuminfo += QString(tr("收到: 0"));
ui->RecNumlabel->setText(RecNuminfo);
ui->RecNumlabel->setFrameShape(QFrame::Panel);
ui->RecNumlabel->setFrameShadow(QFrame::Sunken);
connect(ui->NumBtn,SIGNAL(clicked(bool)),this,SLOT(onClearNum(bool)));
connect(this, SIGNAL(sigSendTXTPath(QString)),SLOT(onRecTXTPath(QString)));
m_saveALLFilefolder = QCoreApplication::applicationDirPath() +"/TXTProjects";
ui->lineEditPath->setText(m_saveALLFilefolder);
ui->RceTextBrowser->document()->setMaximumBlockCount(1000); // QT限制QTextBrowser最大行数
ui->RecReturnCheckBox->setChecked(false);
}
SaveResultFileDlg::~SaveResultFileDlg()
{
delete ui;
if (m_client != nullptr)
{
m_client->close();
delete m_client;
}
// for (int i=0;i<m_TcpClientSocketList.count();i++)
// {
// QTcpSocket *item=m_TcpClientSocketList.at(i);
// // if(item->state() == QAbstractSocket::ConnectedState)
// {
// //关闭连接
// item->disconnectFromHost();
// item->waitForDisconnected();
// m_TcpClientSocketList.removeAt(i);
// }
// }
if(m_tcpServer != nullptr)
{
m_tcpServer->close();
delete m_tcpServer;
}
if (SerialPort != nullptr)
{
SerialPort->close();
delete SerialPort;
}
}
void SaveResultFileDlg::bindEvent()
{
}
void SaveResultFileDlg::autoScroll()
{
QTextCursor cursor = ui->RceTextBrowser->textCursor(); //设置光标的位置
cursor.movePosition(QTextCursor::End);
ui->RceTextBrowser->setTextCursor(cursor);
//ui->RceTextBrowser->moveCursor(QTextCursor::EndOfLine);
//ui->RceTextBrowser->moveCursor(QTextCursor::End);
// if(ui->RceTextBrowser->document()->blockCount()>10000)
// {
// ui->RceTextBrowser->clear();
// }
}
void SaveResultFileDlg::onClientSlot()
{
if (ui->ClientRadioButton->isChecked())
{
ui->stackedWidget->setCurrentIndex(0);
ui->RceTextBrowser->clear();
// m_RecNum = 0;
// RecNuminfo.clear();
// RecNuminfo += QString(tr("接收:0"));
// m_SendNum = 0;
}
}
void SaveResultFileDlg::onServerSlot()
{
if(ui->ServerRadioButton->isChecked())
{
ui->stackedWidget->setCurrentIndex(1);
ui->RceTextBrowser->clear();
// m_RecNum = 0;
// RecNuminfo.clear();
// RecNuminfo += QString(tr("接收:0"));
// m_SendNum = 0;
}
}
void SaveResultFileDlg::onSerialPortSlot()
{
if(ui->SerialPortRadioButton->isChecked())
{
ui->stackedWidget->setCurrentIndex(2);
ui->RceTextBrowser->clear();
// m_RecNum = 0;
// RecNuminfo.clear();
// RecNuminfo += QString(tr("接收:0"));
// m_SendNum = 0;
}
}
void SaveResultFileDlg::initClient()
{
ui->ClientRadioButton->setChecked(true);
ui->ClientRemoteIPlineEdit->setText("192.168.1.10");
ui->ClientRemotePortLineEdit->setText(QString::number(2000));
m_client = new QTcpSocket(this);
//m_client->abort();
//m_client->connectToHost(CameraIP,Port);//设置客户端的端口号
connect(m_client,SIGNAL(readyRead()),this,SLOT(readMessage()));//用于接受数据
}
void SaveResultFileDlg::newConnect(bool)
{
if (ui->ClientConnectBtn->text() == "连接")
{
m_client->abort();
QString strIP = ui->ClientRemoteIPlineEdit->text();
int port = ui->ClientRemotePortLineEdit->text().toInt();
m_client->connectToHost(strIP,port);//设置客户端的端口号
if(m_client->waitForConnected(1000))
{
//qDebug()<<"连接成功!"<<endl;
m_isClientConnect = true;
}
else
{
m_isClientConnect = false;
QMessageBox::about(this,tr("提示"), "连接超时!");
return;
}
Msginfo.clear();
Msginfo += QString(tr("正常连接"));
//Msginfo += QString(tr("远程IP:"));
Msginfo += strIP;
Msginfo += QString(tr(" : "));
Msginfo += QString::number(port);
ui->Msglabel->setText(Msginfo);
ui->ClientConnectBtn->setText("断开");
ui->ClientRemoteIPlineEdit->setEnabled(false);
ui->ClientRemotePortLineEdit->setEnabled(false);
ui->ServerRadio
QT 客户端服务端串口通讯QSerialPort
需积分: 50 21 浏览量
2018-10-31
14:05:37
上传
评论 1
收藏 10KB 7Z 举报
wanghan312
- 粉丝: 4
- 资源: 13
最新资源
- 计算机专业毕业设计,基于Vue + ECharts的数据可视化系统的设计与实现
- Word1_20240424_000136.docx
- 图片网站图片爬虫Python代码
- 同城佳俪
- MATLAB实现LSTM神经网络预测数值(调用MATLAB自带lstm工具箱)
- %E5%B0%8F%E5%B0%8F%E5%A3%B0%E6%98%8E 3.zip
- jdk和idea安装使用教程
- python绘图时渐变的处理-以一个扇形图的渐变为例.html
- 基于STC15F104W的学习型无线遥控解码原理图+程序+说明和433程序+说明
- RIME-BP霜冰优化BP神经网络多特征分类预测(Matlab实现完整源码和数据)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈