前端与嵌入式开发通信之QWebChannel(Qt)

前端与嵌入式开发通信之QWebChannel

最近开发中需要用到和c++开发的操作台进行通信的的需求,就找到了这个技术,记录一下

首先需要安装导入 qwebchannel

npm i qwebchannel

import { QWebChannel } from "qwebchannel";

初始化qwebchannel并封装接收消息和发型消息的方法

initQt.js

let context;
const initQt = (callback) => {// 初始化时创建了一个QWebChannel对象,里面的第一个参数qt.webChannelTransport,只有Qt端正确地向页面设置了webchannel才能取到,否则会是undefined。 所以要判断qt是否存在// eslint-disable-next-line no-undefif (typeof qt != "undefined") {context = null;new QWebChannel(qt.webChannelTransport, function(channel) {// Qt channel.objects对应了Qt实现里向webchannel注册的对象表,channel.objects.qtWebObj即为从表中取出名为"qtWebObj"的对象console.loe('调C++传递消息过去的方法',channel.objects)context = channel.objects.qtWebObj;context.sigUpdateStatInMap.connect(function(e) {console.log("Qt传递消息过来==========>", e);callback && callback(e);});});} else {console.error("初始化Qt对象失败");}
};
/**
* 给Qt发送数据(此处封装是为了调用不同方法发送消息)
* data数据内容
*
**/
const sendMessage = (data) => {console.error("调用Qt方法发送消息=========================>",data);if (typeof context == "undefined") {initQt();} else {if (context && data) {let messageObj = JSON.stringify(data);//我这边c++定义的是js_MakeAudioCall方法,要改成自己的C++的方法context.js_MakeAudioCall(messageObj);}}
};//接收消息
const getMessage = (callback) => {initQt(callback);
};

使用初始化的sendMessagegetMessage方法

// 在onMounted方法中调用接收信息的方法并使用onMounted(() => {getMessage((e) => {console.log('Qt发送消息过来====>',e)});});//给qt发送消息  const clickBtn = () => {const data='你好QT'sendMessage(data)  }

发送消息

接收消息

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/43669.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

myeclipse开发ssm框架项目图书管理系统 mysql数据库web计算机毕业设计项目

摘 要 随着计算机的广泛应用,其逐步成为现代化的标志。图书馆的信息量也会越来越大,因此需要对图书信息、借书信息、还书信息等进行管理,及时了解各个环节中信息的变更,要对因此而产生的单据进行及时的处理,为了提高高…

vue3 两个组件之间传值

Props 父组件可以通过 props 将数据传递给子组件。这是最常见的组件间通信方式 <!-- 父组件 --><template><ChildComponent :message"parentMessage" /></template><script>import ChildComponent from ./ChildComponent.vue;export…

Linux-shell编程入门基础

文章目录 前言Shell编程bash特性shell作用域变量环境变量$特殊变量$特殊状态变量 $特殊符号(很重要)其他内置shell命令shell语法的子串截取统计 指令执行时间练习shell特殊扩展变量父子shell的理解内置和外置命令区别 数值计算双括号(())运算letexprexpr模式匹配 bcawk中括号 s…

MySQL InnoDB事务隔离的几种级别

MySQL InnoDB是一种支持事务的存储引擎&#xff0c;提供了多种事务隔离级别&#xff0c;分别是&#xff1a;读未提交&#xff08;READ UNCOMMITTED&#xff09;&#xff0c;读已提交&#xff08;READ COMMITTED&#xff09;&#xff0c;可重复读&#xff08;REPEATABLE READ&am…

数据结构(Java):Stack相关OJ习题

1、括号匹配问题 . - 力扣&#xff08;LeetCode&#xff09; 1.1 思路分析 根据栈的先进后出原则&#xff0c;我们可以这样解决问题&#xff1a; 遍历字符串&#xff0c;遇见左括号就将左括号push入栈&#xff1b;遇见右括号就pop出栈&#xff0c;将出栈的元素和该右括号比较…

最简单的vue3组件之间传值

localStorage 是 HTML5 引入的一个 Web Storage API 的一部分&#xff0c;它允许网页在用户的浏览器上存储数据。localStorage 提供了一种持久化的本地存储方案&#xff0c;数据不会因为浏览器关闭而丢失&#xff0c;除非用户或脚本显式地删除它们。 localStorage 是一种非常实…

批量提取网页表格内容至excel文件

问题背景 将网页的表格内容&#xff08;5237个股票信息&#xff09;复制粘贴到excel文件中 网址&#xff1a;A股上市公司名单-A股上市公司名录-A股上市公司大全-商业计划书-可研报告-中商产业研究院数据库-中商情报网 实现代码 # 导入包 import pandas as pd import time# 创…

Android中为什么不直接activity调用到view,使用viewrootimpl去与底层沟通,而要追加一个phonewindow来管理呢?

在Android的架构设计中&#xff0c;Activity、PhoneWindow 和 ViewRootImpl 各自扮演着不同的角色&#xff0c;它们之间的协作是为了实现一个更加灵活、可扩展和易于管理的UI系统。不直接从Activity调用到View&#xff0c;而是引入PhoneWindow来管理&#xff0c;主要有以下几个…

超越传统:3D生物打印如何利用扩散创造奇迹?

超越传统&#xff1a;3D生物打印如何利用扩散创造奇迹&#xff1f; 组织工程和再生医学领域迫切需要能够模拟人体组织结构和功能的体外模型和组织替代物。然而&#xff0c;传统的体外模型和组织替代物往往难以满足高度特异性、复杂性和功能性的要求。3D生物打印技术应运而生&a…

Base64文件流查看下载PDF方法-CSDN

问题描述 数票通等接口返回的PDF类型发票是以Base64文件流的方式返回的&#xff0c;无法直接查看预览PDF发票&#xff0c; 处理方法 使用第三方在线工具&#xff1a;https://www.jyshare.com/front-end/61/ 在Html代码框中粘贴如下代码 <embed type"application/pd…

技术开发分享:商品详情APP原数据实时接口代码解析

商品详情app端原数据实时接口代码解析主要包括以下几个步骤&#xff1a; 获取商品ID&#xff1a;首先需要从淘宝的分享链接中提取商品ID&#xff0c;可以通过正则表达式匹配的方式获取。 构建请求URL&#xff1a;根据商品ID构建请求URL&#xff0c;通常包括淘宝的商品详情API地…

未来互联网的新篇章:深度解析Web3技术

随着技术的不断演进&#xff0c;Web3正逐渐成为引领未来互联网发展的关键驱动力。本文将深入探讨Web3技术的核心概念、关键特征以及其对未来互联网生态的深远影响&#xff0c;旨在帮助读者全面理解和把握这一新兴技术的发展方向和潜力。 1. Web3的基本概念和演进 Web3并非简单…

为什么键盘上F和J这两个键有两个凸起的横线呢?

不知道小伙伴们有没有注意过&#xff0c;我们常用的电脑键盘上&#xff0c;为什么F和J这两个键总是有两个凸起的横线的呢&#xff1f; 首先&#xff0c;让我们来回顾一下这位陪伴我们多年的老朋友——键盘。从最初的打字机到现在的机械键盘、薄膜键盘&#xff0c;键盘的形态和…

新书速览|Vue.js 3.x+Express全栈开发:从0到1打造商城项目

《Vue.js 3.xExpress全栈开发&#xff1a;从0到1打造商城项目》 1 本书内容 《Vue.js 3.xExpress全栈开发 : 从0到1打造商城项目》是一本详尽的全栈开发教程&#xff0c;旨在通过Vue.js和Express框架引导读者从零开始构建一个完整的电商项目。内容覆盖电商项目的基本结构&…

C++——map和set类用法指南

一、前言 1.1 关联式容器 关联式容器也是用来存储数据的&#xff0c;与序列式容器不同的是&#xff0c;其里面存储的是<key,value>结构的键值对&#xff0c;在数据检索时比序列式容器效率更高。 1.2 键值对 用来表示具有一一对应关系的一种结构&#xff0c;该结构中一般…

编程入门题:画矩形(C语言版)

1.题目描述&#xff1a; 根据输入的四个参数:a,b,c,f参数&#xff0c;画出对应的矩形。前两个参数 a,b为整数&#xff0c;依次代表矩形的高和宽:第三个参数c是一个字符&#xff0c;表示用来填充的矩形符号第四个参数 f为整数&#xff0c;0 代表空心&#xff0c;否则代表实心。具…

Redis如何高效实现定时任务

写在文章开头 redis通过单线程结合非阻塞事件轮询机制实现高效的网络IO和时间事件处理&#xff0c;这篇文章我们将从源码的角度深入分析一下redis时间事件的设计与实现。 Hi&#xff0c;我是 sharkChili &#xff0c;是个不断在硬核技术上作死的 java coder &#xff0c;是 CS…

项目三层架构详情

三层架构 三层架构就是为了符合“高内聚&#xff0c;低耦合”思想&#xff0c;把各个功能模块划分为表示层&#xff08;UI&#xff09;、业务逻辑层&#xff08;BLL&#xff09;和数据访问层&#xff08;DAL&#xff09;三层架构&#xff0c;各层之间采用接口相互访问&#xf…

(正向)代理 vs. 反向代理

&#xff08;正向&#xff09;代理 vs. 反向代理 代理和反向代理都是针对用户而言的。 一、&#xff08;正向&#xff09;代理——代理客户端 1. 流程 代理会隐藏客户端的真实信息&#xff08;IP、端口&#xff09;&#xff0c;代替客户端在互联网上发起请求&#xff0c;并将…

09:C语言进阶篇一

C语言进阶篇一 数据类型1.1、内存占用与sizeof运算符1.2、有符号数和无符号数1.3、整形数和浮点型数存储方式1.4、数据类型转换1.4.1、隐式转换1.4.2、强制转换 数据类型 基本数据类型&#xff1a;char&#xff0c;short&#xff0c;int&#xff0c;long&#xff0c;float&…