From 3e514bb131a4d8dba2a03c5c8536390dee865ea6 Mon Sep 17 00:00:00 2001 From: zcy <290198252@qq.com> Date: Mon, 3 May 2021 02:02:25 +0800 Subject: [PATCH] no message --- protoDebuger/NetSelect.qml | 191 +++++++++++++++------------- protoDebuger/ProtoDebug.qml | 7 - protoDebuger/SerialSelect.qml | 2 - protoDebuger/main.cpp | 8 -- protoDebuger/main.qml | 7 + protoDebuger/network_controller.cpp | 46 +++++++ protoDebuger/network_controller.h | 10 +- protoDebuger/serialcontroller.cpp | 1 - protoDebuger/sharedata.cpp | 7 +- 9 files changed, 165 insertions(+), 114 deletions(-) diff --git a/protoDebuger/NetSelect.qml b/protoDebuger/NetSelect.qml index 3720446..5e7a709 100644 --- a/protoDebuger/NetSelect.qml +++ b/protoDebuger/NetSelect.qml @@ -31,95 +31,96 @@ Item { height: parent.height RowLayout { spacing: 5 - Label { - id: label6 + Row{ Layout.leftMargin: 20 - Layout.topMargin: 20 - text: qsTr("打开端口: ") - Layout.preferredHeight: 40 - renderType: Text.QtRendering - Layout.preferredWidth: 125 - wrapMode: Text.NoWrap - font.pointSize: 20 - } - TextEdit { - id: port - Layout.leftMargin: 20 - Layout.topMargin: 20 - width: 80 - height: 40 - text: qsTr("9001") - font.italic: false - font.bold: true - Layout.columnSpan: 2 - Layout.preferredHeight: 33 - Layout.preferredWidth: 50 - selectionColor: "#f0f0f1" - cursorVisible: true - font.pixelSize: 20 - } + Label { + id: label6 + Layout.leftMargin: 20 + Layout.topMargin: 20 + text: qsTr("打开端口: ") + Layout.preferredHeight: 40 + renderType: Text.QtRendering + Layout.preferredWidth: 125 + wrapMode: Text.NoWrap + font.pointSize: 20 + } + TextEdit { + id: port + Layout.leftMargin: 20 + Layout.topMargin: 30 + width: 80 + height: 40 + text: qsTr("9001") + selectionColor: "#f0f0f1" + cursorVisible: true + font.pixelSize: 18 + } + RadioButton { + id: isServer + Layout.leftMargin: 20 + Layout.topMargin: 20 + width: 138 + height: 41 + text: qsTr("服务端") + checked: true - RadioButton { - id: isServer - Layout.leftMargin: 20 - Layout.topMargin: 20 - width: 138 - height: 41 - text: qsTr("服务端") - checked: true - - onClicked:{ - if(isServer.checked == true){ - isServer.checked = false - isServer.checkable = false - }else{ - isServer.checked = true - isServer.checkable = true + onClicked:{ + if(isServer.checked == true){ + isServer.checked = false + isServer.checkable = false + }else{ + isServer.checked = true + isServer.checkable = true + } } } } } RowLayout{ spacing: 5 - Label { - id: label7 + Row{ Layout.leftMargin: 20 - Layout.topMargin: 20 - text: qsTr("协议选择: ") - Layout.preferredHeight: 40 - renderType: Text.QtRendering - Layout.preferredWidth: 125 - wrapMode: Text.NoWrap - font.pointSize: 20 - } - ComboBox { - id: proto_combox - Layout.leftMargin: 20 - Layout.topMargin: 20 - width: 143 - height: 40 + Label { + id: label7 + Layout.leftMargin: 20 + Layout.topMargin: 20 + text: qsTr("协议选择: ") + Layout.preferredHeight: 40 + renderType: Text.QtRendering + Layout.preferredWidth: 125 + wrapMode: Text.NoWrap + font.pointSize: 20 + } + ComboBox { + id: proto_combox + Layout.leftMargin: 20 + Layout.topMargin: 20 + width: 143 + height: 40 - model:[ - "udp", - "tcp" - ] - } - RadioButton { - id: radioSelectWebsocket - Layout.leftMargin: 20 - Layout.topMargin: 20 - width: 138 - height: 41 - text: qsTr("websocket") - checkable: true - checked: true - onClicked:{ - if(radioSelectWebsocket.checked == true){ - radioSelectWebsocket.checked = false - radioSelectWebsocket.checkable = false - }else{ - radioSelectWebsocket.checked = true - radioSelectWebsocket.checkable = true + model:[ + "udp", + "tcp" + ] + } + + RadioButton { + id: radioSelectWebsocket + Layout.leftMargin: 20 + Layout.topMargin: 20 + width: 138 + height: 41 + text: qsTr("websocket") + checkable: true + checked: true + onClicked:{ + if(radioSelectWebsocket.checked == true){ + radioSelectWebsocket.checked = false + radioSelectWebsocket.checkable = false + }else{ + radioSelectWebsocket.checked = true + radioSelectWebsocket.checkable = true + } } } } @@ -166,14 +167,6 @@ Item { text: qsTr("打开网口") onClicked: { - console.log(hostEdit.text) -// TYPE_UDP_SERVER = 0, -// TYPE_TCP_SERVER = 1, -// TYPE_UDP_CLIENT = 2, -// TYPE_TCP_CLIENT = 3, -// Q_INVOKABLE int openNetwork(QString ip,uint32_t port,bool is_ws,int type); - console.log(proto_combox.currentText) - let type_network = -1 if(proto_combox.currentText == "udp" && isServer.checked){ type_network = 0 @@ -196,12 +189,11 @@ Item { radioSelectWebsocket.checked, type_network) if(ret != 0){ - tip.text = "网络连接失败" - tip.visible = true + tip.fail("网络连接失败") + return } - tip.text = "网络连接成功" - tip.visible = true + tip.success("网络连接成功") } } @@ -210,14 +202,31 @@ Item { id: tip text: qsTr("") visible: false + font.pixelSize: 25 + width: 220 + contentItem: Text { + id : tip_item text: tip.text font: tip.font color: "#21be2b" } background: Rectangle { + id: tip_background border.color: "#21be2b" + width: 220 + height: 40 + } + function success(str){ + tip_item.color = "#21be2b" + tip.text = str + tip.visible = true + } + function fail(str){ + tip_item.color = "#ff0000" + tip.text = str + tip.visible = true } delay: 100 timeout: 1000 diff --git a/protoDebuger/ProtoDebug.qml b/protoDebuger/ProtoDebug.qml index 25626eb..42c1ec8 100644 --- a/protoDebuger/ProtoDebug.qml +++ b/protoDebuger/ProtoDebug.qml @@ -150,13 +150,6 @@ Item { } - TextEdit { - id: send_data - width: parent.width - 60 - height: 30 - text: qsTr("Text Edit") - font.pixelSize: 16 - } } } } diff --git a/protoDebuger/SerialSelect.qml b/protoDebuger/SerialSelect.qml index 8011ed2..336ee92 100644 --- a/protoDebuger/SerialSelect.qml +++ b/protoDebuger/SerialSelect.qml @@ -201,8 +201,6 @@ Item { uart_open = false } } - - } } } diff --git a/protoDebuger/main.cpp b/protoDebuger/main.cpp index b45e37c..cd1b15e 100644 --- a/protoDebuger/main.cpp +++ b/protoDebuger/main.cpp @@ -23,13 +23,6 @@ int main(int argc, char *argv[]) QApplication app(argc, argv); QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); -// QQuickView view; -// view.setResizeMode(QQuickView::SizeRootObjectToView); -// view.setSource(QUrl("qrc:/main.qml")); -// view.setTitle ("多用途通信协议调试器,基于lua"); -// view.rootContext()->setContextProperty("DataWrap",&gGlobal); -// view.show(); - QQuickWidget *m_quickWidget=new QQuickWidget(); QUrl source("qrc:/main.qml"); m_quickWidget->setResizeMode(QQuickWidget::SizeRootObjectToView ); @@ -38,6 +31,5 @@ int main(int argc, char *argv[]) m_quickWidget->show(); gGlobal.SetQuickView(m_quickWidget); - return app.exec(); } diff --git a/protoDebuger/main.qml b/protoDebuger/main.qml index 385614f..89e0398 100644 --- a/protoDebuger/main.qml +++ b/protoDebuger/main.qml @@ -93,6 +93,13 @@ Rectangle { color: "white" font.pointSize: 10 } + Text { + text: qsTr("协议调试") + width: parent.width + anchors.centerIn: parent.Center + color: "white" + font.pointSize: 10 + } } } SerialSelect{ diff --git a/protoDebuger/network_controller.cpp b/protoDebuger/network_controller.cpp index f73da91..2acd604 100644 --- a/protoDebuger/network_controller.cpp +++ b/protoDebuger/network_controller.cpp @@ -3,6 +3,10 @@ NetworkController::NetworkController(NetworkController::NetWorkType type, QString ip, uint16_t port) { + mType = type; + if(_checkType(type) == TYPE_UNKOWN){ + + } if(type == NetWorkType::TYPE_TCP_CLIENT){ mTcp = new QTcpSocket(); mCnn = mTcp; @@ -12,6 +16,21 @@ NetworkController::NetworkController(NetworkController::NetWorkType type, QStrin mTcp->connectToHost(ip,port,QIODevice::ReadWrite); } + + if(type == NetWorkType::TYPE_TCP_SERVER){ + + mTcpServer = new QTcpServer(); + connect(mTcpServer,SIGNAL(newConnection()), + this,SLOT(on_server_accept())); + connect(mTcpServer, SIGNAL(acceptError(QAbstractSocket::SocketError socketError)), + this, SLOT(displayError())); + + if (!mTcpServer->listen(QHostAddress::Any, port)) + { + qDebug() << "m_pTcpServer->listen() error"; + } + } + } int NetworkController::SendData(int8_t *data, uint32_t len) @@ -38,9 +57,36 @@ NetworkController::~NetworkController() void NetworkController::on_ready_read() { qDebug()<readAll().toStdString()); + emit(on_data_recv()); } void NetworkController::on_disconect() { qDebug()<<"close"; + if(nullptr != mCnn){ + emit(this->on_conection_close()); + mCnn->close(); + } } + +void NetworkController::on_server_accept() +{ + if(mType == TYPE_TCP_SERVER){ + mTcpServer->pauseAccepting(); + QTcpSocket* pClientConnection = mTcpServer->nextPendingConnection(); + if(nullptr != pClientConnection){ + QObject::connect(pClientConnection, SIGNAL(readyRead()), this, SLOT(on_ready_read())); + QObject::connect(pClientConnection, SIGNAL(disconnected()), this, SLOT(on_disconect())); + } + mTcp = pClientConnection; + } +} + +NetworkController::NetWorkType NetworkController::_checkType(NetWorkType type){ + if(type < TYPE_UNKOWN){ + return type; + }else{ + return TYPE_UNKOWN; + } +} + diff --git a/protoDebuger/network_controller.h b/protoDebuger/network_controller.h index 4842a94..f120e78 100644 --- a/protoDebuger/network_controller.h +++ b/protoDebuger/network_controller.h @@ -6,7 +6,7 @@ #include #include #include - +#include class NetworkController : public QObject { @@ -17,6 +17,7 @@ public: TYPE_TCP_SERVER = 1, TYPE_UDP_CLIENT = 2, TYPE_TCP_CLIENT = 3, + TYPE_UNKOWN = 4, }NetWorkType; NetworkController(NetWorkType type,QString ip,uint16_t port); @@ -28,16 +29,19 @@ public: public slots: void on_ready_read(); void on_disconect(); - + void on_server_accept(); signals: void on_data_recv(); void on_conection_ok(); void on_conection_close(); void on_send_data(QByteArray); private: - NetWorkType type; + NetWorkType _checkType(NetWorkType); + + NetWorkType mType; QUdpSocket *mUDP; QTcpSocket *mTcp; + QTcpServer *mTcpServer; QIODevice *mCnn; QThread mThread; }; diff --git a/protoDebuger/serialcontroller.cpp b/protoDebuger/serialcontroller.cpp index 09d26ef..f932d22 100644 --- a/protoDebuger/serialcontroller.cpp +++ b/protoDebuger/serialcontroller.cpp @@ -92,7 +92,6 @@ void SerialController::GetSetting(QString baudRate, QString dataBits, QString st mBaudrate = baudRate.toUInt(); mDataBits = (QSerialPort::DataBits)dataBits.toUInt(); mParity = QSerialPort::Parity::NoParity; - } void SerialController::ReadyRead() diff --git a/protoDebuger/sharedata.cpp b/protoDebuger/sharedata.cpp index b3c26ce..6ef1b3e 100644 --- a/protoDebuger/sharedata.cpp +++ b/protoDebuger/sharedata.cpp @@ -17,7 +17,6 @@ ShareData::ShareData(QObject *parent) : QObject(parent), QTextStream in(&file); m_lua_string = in.readAll(); - qDebug()<< m_lua_string; int ret = m_lua_.DoString(m_lua_string); if(ret < 0){ qDebug()<<"默认lua脚本加载错误"; @@ -90,6 +89,11 @@ int ShareData::openNetwork(QString ip, unsigned int port, bool is_ws,int type) if(type == NetworkController::TYPE_UDP_CLIENT){ } + if(type == NetworkController::TYPE_TCP_SERVER){ + m_network_ = new NetworkController(NetworkController::TYPE_TCP_SERVER,ip,port); + return 0; + } + return -1; } @@ -145,7 +149,6 @@ int ShareData::saveLuaScript(QString s) } file.close(); return 0; - } bool ShareData::luaStatus()