前端与嵌入式开发通信之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.rhkb.cn/news/373458.html

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

相关文章

哈喽GPT-4o,程序员如何通过GPT-4o提高办公效率

目录 一、编写工作汇报Prompt:我是一名Java开发工程师,请写一份工作总结,工作内容是一个SpringBootVue实现的图书管理系统,按下面的结构来撰写:1. 工作背景;2. 工作内容;3. 工作建议&#xff1b…

springboot中@bean注解的创建和使用

bean的创建顺序 在Spring Boot中,当一个配置类(使用Configuration注解的类)中定义了多个bean时,这些bean的创建顺序并不完全由它们在类中的声明顺序决定。Spring框架在创建和管理bean时,遵循了复杂的依赖注入和生命周…

简单仿写SpringIOC

gitee地址(需要自取)ioc_Imitation: 简单仿写IOC (gitee.com) 项目目录结构 Autowired Target(ElementType.FIELD) Retention(RetentionPolicy.RUNTIME) public interface Autowired { }Component Target(ElementType.TYPE) Retention(RetentionPoli…

文献笔记|综述|When Large Language Model Meets Optimization

When Large Language Model Meets Optimization 题目:当大型语言模型遇到优化时 作者:Sen Huang , Kaixiang Yang , Sheng Qi and Rui Wang 来源:arXiv 单位:华南理工大学 文章目录 When Large Language Model Meets Optimization…

Redis主从部署

文章目录 Redis主从部署1.下载安装Redis2.单点双副本主从配置1.修改配置信息2.修改配置文件redis.conf3.拷贝配置文件到每一个实例文件夹里4.修改每一个实例的端口和工作目录5.配置主从关系6.检查效果 3.哨兵模式监控主从1.创建实例目录2.复制配置文件并进行修改3.启动并测试 4…

Java增加线程后kafka仍然消费很慢

文章目录 一、问题分析二、控制kafka消费速度属性三、案例描述 一、问题分析 Java增加线程通常是为了提高程序的并发处理能力,但如果Kafka仍然消费很慢,可能的原因有: 网络延迟较大:如果网络延迟较大,即使开启了多线…

使用redis进行短信登录验证(验证码打印在控制台)

使用redis进行短信登录验证 一、流程1. 总体流程图2. 流程文字讲解:3.代码3.1 UserServiceImpl:(难点)3.2 拦截器LoginInterceptor:3.3 拦截器配置类: 4 功能实现,成功存入redis (黑…

悠律凝声环Ringbuds Pro耳机:素皮纹理质感独一档,音质也拉满

悠律(UMELODY)推出的这款新品——凝声环开放式耳机,以其独特的设计风格和出色的音质表现赢得了众多消费者的喜爱。 在外观上,凝声环采用了时尚潮酷的设计理念,并且采用简约典雅素皮工艺,首次将“素皮”材料…

QT文件生成可执行的exe程序

将qt项目生成可执行的exe程序可按照以下步骤进行: 1、在qt中构建运行生成.exe文件; 2、从自定义的路径中取出exe文件放在一个单独的空文件夹中(exe文件在该文件夹中的release文件夹中); 3、从开始程序中搜索qt&#xf…

提升Selenium在Chrome上的HTML5视频捕获效果的五个方法

在使用Selenium进行网页自动化测试时,捕获HTML5视频是一个常见的需求。然而,许多开发者发现,在使用Chrome浏览器时,视频捕获效果并不理想,经常出现视频背景为空白的问题。本文将概述五种方法,帮助提升Selen…

品牌渠道低价管控的思考与策略

消费者在购买产品时追求低价、货比三家,这无可非议。然而,产品低价就一定是好事吗?倘若品牌为了迎合消费者对低价的需求,一味追求低价引流,最终的结果只能是从源头压价,比如在原材料的选购、供应商的选择上…

校园运动用品租借租赁租体育用品平台设计

校园运动用品租借租赁租体育用品平台设计 摘 要 随着社会的发展,社会的方方面面都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 基于web的校园运动用品租借平台主要有管理员和用户两个角色功能模块,管理员对后台对有相…

Python 接口自动化中,如何实现参数化测试?

在Python接口自动化中,参数化测试是一种非常重要的技术,它可以帮助我们更高效地执行大量的接口测试用例。参数化测试允许我们通过修改测试数据,多次执行同一个测试用例,以验证系统在不同输入情况下的行为。下面,我将从…

[高频 SQL 50 题(基础版)]第一千七百五十七题,可回收且低脂产品

题目: 表:Products ---------------------- | Column Name | Type | ---------------------- | product_id | int | | low_fats | enum | | recyclable | enum | ---------------------- product_id 是该表的主键(具有唯…

php简单商城小程序系统源码

🛍️【简单商城小程序】🛍️ 🚀一键开启,商城搭建新体验🚀 你还在为繁琐的商城搭建流程头疼吗?现在,有了简单商城系统小程序,一切变得轻松又快捷!无需复杂的编程知识&a…

羊大师:暑期不“胖”秘籍:羊奶滋养,细嚼慢咽是关键!

夏日炎炎,假期悠长,如何在享受悠闲时光的同时,保持轻盈体态,成了许多人心中的小秘密。今天,就让我们一起揭秘暑期不“胖”的秘籍,让羊奶的滋养与细嚼慢咽的智慧,成为你美丽夏日的守护神。 羊奶轻…

BUUCTF[堆][of_by_one]

堆中of_by_one 介绍: 严格来说 off-by-one 漏洞是一种特殊的溢出漏洞,off-by-one 指程序向缓冲区中写入时,写入的字节数超过了这个缓冲区本身所申请的字节数并且只越界了一个字节。溢出字节为可控制任意字节 :通过修改大小(size…

一个项目学习Vue3---事件处理

学习下面代码&#xff0c;了解Vue3的事件处理 <!--条件和列表渲染--> <template><el-button v-on:click"countAdd" type"primary">count{{ count }}</el-button><el-button click"countAdd" type"primary"…

18.按键消抖模块设计(使用状态机,独热码编码)

&#xff08;1&#xff09;设计意义&#xff1a;按键消抖主要针对的时机械弹性开关&#xff0c;当机械触点断开、闭合时&#xff0c;由于机械触点的弹性作用&#xff0c;一个按键开关在闭合时不会马上稳定地接通&#xff0c;在断开时也不会一下子就断开。因而在闭合以及断开的瞬…

解决centos yum和wget指令都用不了(换源)

先ping一下网络&#xff0c;看看能不能ping通&#xff0c;先排除是网络的问题 ping www.baidu.com有消息回传说明网络有连接&#xff0c;没有的话就要去把虚拟机的网络连接好&#xff08;CtrlC关闭&#xff09; 接下来写centos更换源 一般yum用不了&#xff0c;下载不来wget …