java串口调试助手_基于 QML的 串口调试助手
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_38416696/article/details/80926090
Qt版本 5.10.0
一,界面如下
二,main.qml
import QtQuick 2.9
import QtQuick.Controls 2.3
import QtQuick.Controls.Material 2.3
import QtQuick.Controls.Styles 1.4
import QtQuick.Layouts 1.3
import "./UI"
ApplicationWindow {
id:root
visible: true
width: 640
height: 480
title: qsTr("串口调试助手")
font.pointSize: 9
Material.theme: Material.Light
Material.accent: Material.Red
Material.foreground: Material.Dark
header:ToolBar {//工具栏
RowLayout {
}
}
Rectangle{
id:rootRectangle
anchors.fill: parent
anchors.margins: 5
//设置
LeftArea{
id:leftArea
anchors.left: rootRectangle.left
anchors.top: rootRectangle.top
width: 180
height: parent.height
}
//发送 与接收显示
CenterArea{
id:centerArea
anchors.left: leftArea.right
anchors.top: parent.top
anchors.right: parent.right
anchors.bottom: parent.bottom
showSend: leftArea.showSend
repeatSend: leftArea.repeatSend
}
}
}
三,左侧 设置
import QtQuick 2.0
import QtQuick.Layouts 1.3
import QtQuick.Controls 2.3
Rectangle{
border.color: "#d7cfcf"
property bool showSend: false
property bool repeatSend: false
Column{
id:leftColumn
anchors.fill: parent
anchors.margins: 5
spacing: 0
//串口设置
Label{
text: qsTr("串口设置")
color: "#000000"
}
GridLayout {
id: grid
columns: 2
rowSpacing: 0
Label {
text: qsTr("串 口")
}
ComboBox {
id:serialName
model: serial.querySerialInfo()// [ "Banana", "Apple", "Coconut" ]
onActivated: {
serial.setPortName(currentText)
}
}
Label {
text: qsTr("波特率")
}
ComboBox {
id:baud
model: [ "9600", "19200", "38400", "57600","115200"]
onActivated: {
serial.setBaud(currentText)
}
}
}
Label{
text: qsTr("接收设置")
color: "#000000"
}
RowLayout{
RadioButton { text: qsTr("ASCII"); checked: true }
RadioButton {
text: qsTr("Hex")
onCheckedChanged: {
if(checked)
serial.setReceiveHex(true)
else
serial.setReceiveHex(false)
}
}
}
CheckBox {
checked: false
text: qsTr("显示发送")
onCheckedChanged: {
showSend=checked
}
}
Label{
text: qsTr("发送设置")
color: "#000000"
}
RowLayout{
RadioButton { text: qsTr("ASCII"); checked: true }
RadioButton {
text: qsTr("Hex")
onCheckedChanged: {
if(checked)
serial.setSedHex(true)
else
serial.setSedHex(false)
}
}
}
CheckBox {
id:repeatSend
checked: false
text: qsTr("重复发送(ms)")
onCheckedChanged: {
showSend=checked
}
}
SpinBox {
id: spinbox
width: 150
from: 0
to:100000
value: 1000
editable: true
visible: repeatSend.checked
}
}
Component.onCompleted: {
serial.setPortName(serialName.currentText)
serial.setBaud(baud.currentText)
}
}
四,右侧 数据显示
import QtQuick 2.0
import QtQuick.Layouts 1.3
import QtQuick.Controls 2.3
import QtQuick.Controls.Material 2.3
Rectangle {
id:root
property bool showSend: false
property bool repeatSend: false
ColumnLayout{
anchors.fill: parent
Rectangle {
id: receiveData
anchors.top: parent.top
anchors.left: parent.left
border.color: "#d7cfcf"
height: parent.height/1.5
width: parent.width
Flickable {
id: flickReceive
anchors.fill: parent
clip: true
anchors.margins: 5
function ensureVisible(r)
{
if (contentX >= r.x)
contentX = r.x;
else if (contentX+width <= r.x+r.width)
contentX = r.x+r.width-width;
if (contentY >= r.y)
contentY = r.y;
else if (contentY+height <= r.y+r.height)
contentY = r.y+r.height-height;
}
TextEdit {
id: editReceive
width: flickReceive.width
focus: false
wrapMode: TextEdit.Wrap
onCursorRectangleChanged: flickReceive.ensureVisible(cursorRectangle)
}
}
}
Rectangle {
id: sendData
width: parent.width
height: parent.height-receiveData.height-buttons.height
border.color: "#d7cfcf"
anchors.top: receiveData.bottom
Flickable {
id: flickSend
anchors.fill: parent
clip: true
anchors.margins: 5
function ensureVisible(r)
{
if (contentX >= r.x)
contentX = r.x;
else if (contentX+width <= r.x+r.width)
contentX = r.x+r.width-width;
if (contentY >= r.y)
contentY = r.y;
else if (contentY+height <= r.y+r.height)
contentY = r.y+r.height-height;
}
TextEdit {
id: editSend
width: flickSend.width
focus: true
wrapMode: TextEdit.Wrap
onCursorRectangleChanged: flickSend.ensureVisible(cursorRectangle)
}
}
}
}
RowLayout{
id:buttons
anchors.bottom: root.bottom
anchors.right: root.right
Button{
text: "打开"
onClicked: {
serial.connect()
}
}
Button{
text: "关闭"
onClicked: {
serial.disConnect()
}
}
Button{
text: "发送"
onClicked: {
serial.sendString(editSend.text)
console.log("send"+showSend)
if(showSend)
editReceive.append(editSend.text)
}
}
}
Connections{
target: serial
onStringReceived:{
editReceive.append(receiveString)
console.log("receive:"+receiveString)
}
}
}
五,main.cpp
#include
#include
#include
#include "./Control/serialPort.h"
int main(int argc, char *argv[])
{
#if defined(Q_OS_WIN)
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
#endif
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
SerialThread serial;
engine.rootContext()->setContextProperty("serial",&serial);
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
if (engine.rootObjects().isEmpty())
return -1;
return app.exec();
}
————————————————
版权声明:本文为CSDN博主「落霞不与孤鹜齐飞」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_38416696/article/details/80926090
java串口调试助手_基于 QML的 串口调试助手相关推荐
- 基于QT的串口调试助手
大家好,我是KookNut39,在CSDN写文,分享一些自己认为在学习过程中比较重要的东西,致力于帮助初学者入门,希望可以帮助你进步.最近在更新C/C++方面的知识,感兴趣的欢迎关注博主,可以去专栏查 ...
- 串口调试助手,有需要的拿去用
近半年都学搞单片机开发,STM8,STM32的单片机.以前都是写PC端的程序,一个偶然的机会转到单片机项目上,找了些书看了几天差不多就可以功手做了.任何事情只要你下决心去做,就一定可以做成,只是花的时 ...
- java串口调试助手开发记录
一.首先搭建平台,我用的是eclipse+rxtx+SWT. 安装eclipse就是安装java包后,然后下载eclipse即可.因为eclipse是绿色的,不用安装,下载即可用. 下载rxtx.在网 ...
- 【Qt串口调试助手】1.1 - Qt5编写串口调试助手,Qt串口编程
这章来学习串口数据流操作.仿照已有成品制作一个用Qt开发的串口调试助手. 介于篇幅有限,本篇只介绍一个最简单的能收发的串口调试助手的制作.后续篇幅会陆续对剩余代码进行讲解,并添加各种功能,对显示.操作 ...
- android 串口调试助手_Arduino入门 第八节-串口通讯(基础篇)
串口是单片机中一种重要的数据通讯接口,本期我们就来学习一下Arduino的串口基础操作.首先我们来了解一下Arduino开发板的串口资源.在UNO及NANO板上,只有一组串口(Serial0),这个串 ...
- 串口调试助手fx2n_串口调试助手详细讲解(结合实操),通讯问题不再是问题...
经常会有学员问我,老师老师,我的plc和变频器通讯不上了,不知道什么原因,您能帮我看看么. 其实吧,这个一般远程是帮不上你什么的,还是要你自己去测试,找出问题,那么怎么测试呢,今天就给大家做一个详细的 ...
- 一款基于Qt的跨平台开源串口调试助手EasySerial
文章目录 1. 简述 2. 开发步骤 2.1 界面布置 2.2 串口搜索与打开 2.3 ASCII/HEX接收 2.4 接收数据保存 2.5 ASCII/HEX发送 2.6 周期发送 2.7 读取文件 ...
- 基于AT89C52和串口通信助手的串口通信
我们要实现的功能是在程序运行的时候通过单片机的串口向串口调试助手发送一个字符串诸如"hello world",串口通信助手接收到字符串之后显示并由用户反馈回去一个长度为4的字符串并 ...
- 串口调试助手c语言程序,串口调试助手C语言源程序
串口调试助手C语言源程序 串口调试助手源程序 及编程详细过程 作者:龚建伟 2001.6.20 可以任意转载,但必须注明作者和说明来自http://doc.xuehai.net,不得作为商用 目次: ...
最新文章
- 我对Node.js Core的首次贡献中学到了什么
- 亚马逊:区块链模块化,造币流水线化
- python在长字符串中寻找重复子串_Python 入门到精通
- 史上最简单的git教程搭配Github和Gitee一起食用更佳
- linux常见分区格式,linux 分区格式
- Sublime Text 的快捷方式的用法
- C语言的细小知识点整理
- win7关闭休眠_【科普】笔记本电脑,待机/睡眠/休眠有啥区别?(ACPI SPM S0-S5)...
- pip 查看要安装的包所有版本(所有包版本)
- es6 属性名表达式
- OPPO Find X5/Pro搭载一体化流线设计,采用双芯片战略
- docker入门与部署微服务--学习笔记
- Klevgrand Tines for Mac(电钢琴模拟插件)
- 181030每日一句
- 矩阵卷积运算的具体过程
- 屏通触控大师(PM Designer)快速入门
- 为什么要用代理服务器?
- 处理RCV_TRANSACTIONS_INTERFACE的数据
- Squid代理服务器(缓存加速之Web缓存层)
- Win10升级Win11(解决0xc8000402报错)
热门文章
- Ubuntu 18实现有线 无线同时用
- Linux 各种BCD时间与Unix时间戳格式转换
- 就在今天!Unix 之父的密码被破解了
- 汽油车排气管行业调研报告 - 市场现状分析与发展前景预测
- 【Android项目实战 | 从零开始写app一一智慧服务】完结篇系列导航篇、源代码
- 使用计算机配置路由器,怎么使用Windows7的计算机配置磊科无线路由器
- python oracle blob_如何使用Python将BLOB插入Oracle?
- 【Python编程练习100题】P06—P10
- 【硬件学习笔记003】玩转电压基准芯片:TL431及其他常用电压基准芯片
- odoo13 qweb td 中的上下及水增居中问题