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

news2024/9/29 3:22:10

前端与嵌入式开发通信之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-undef
  if (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.coloradmin.cn/o/1913924.html

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

相关文章

PostgREST API 安装及基础使用

PostgREST是一个独立的Web服务器,它将PostgreSQL数据库转换为RESTful API。它提供基于基础数据库的结构自定义的API。 PostgREST安装 首先访问Releases PostgREST/postgrest (github.com),根据安装平台选择下载的源码。比如我现在的设备是Mac但是我的…

2024前端面试题之Vue3

2024前端面试题之Vue3 在面试具有五年经验的前端工程师时,对于 Vue 3 的掌握程度是一个重要的考核点。本文将提供一系列针对这一级别工程师的 Vue 3 面试题,并附上详细的解析,帮助面试官全面评估候选人的技术实力和项目经验。 一、Vue 3 基础…

R包: phyloseq扩增子统计分析利器

介绍 phyloseq包对多类型数据的综合软件,并其对这些数据提供统计分析和可视化方法。 微生物数据分析的主要挑战之一是如何整合不同类型的数据,从而对其进行生态学、遗传学、系统发育学、多元统计、可视化和检验等分析。同时,由于同行之间需要…

windows10 +VS2019环境下的PCL安装和配置

今天想做点云重建,千篇一律,PCL少不了。一路跑下来觉得PCL的安装和环境配置还挺麻烦的,比OpenCV真的麻烦很多,有点不想写详细安装和配置过程了,偷个懒,就转载一下大佬的文章吧,下面的博主们已经…

中小企业有必要使用ERP管理系统?

在激烈市场竞争中,企业共同追求的目的都是——降本增效。大型企业运用ERP系统精细化管理,但对成长中的中小企业,传统ERP投入高昂,难达降本增效之效。中小企业更需要适合其需求的解决方案,所以,相比如传统的…

看到指针就头疼?这篇文章让你对指针有更全面的了解!

文章目录 1.什么是指针2.指针和指针类型2.1 指针-整数2.2 指针的解引用 3.野指针3.1为什么会有野指针3.2 如何规避野指针 4.指针运算4.1 指针-整数4.2 指针减指针4.3 指针的关系运算 5.指针与数组6.二级指针7.指针数组 1.什么是指针 指针的两个要点 1.指针是内存中的一个最小单…

03_四旋翼飞行器技术关键

目录 总体设计优化 能源动力系统 建立数学模型 飞行控制 定位、导航与通信 总体设计优化 进行微小型四旋翼飞行器总体设计时,需要遵循以下原则:质量轻、尺寸小、速度快、能耗和成本低。但这几项原则相互之间存在着制约与矛盾,因此进行四…

多模态大模型时代下的文档图像智能分析与处理_多模态ocr

0. 前言1. 人工智能发展历程 1.1 传统机器学习1.2 深度学习1.3 多模态大模型时代 2. CCIG 文档图像智能分析与处理论坛 2.1 文档图像智能分析与处理的重要性和挑战2.2 文档图像智能分析与处理高峰论坛2.3 走进合合信息 3. 文档图像智能分析与处理 3.1 文档图像分析与预处理3.2 …

MVC分页

public ActionResult Index(int ? page){IPagedList<EF.ACCOUNT> userPagedList;using (EF.eMISENT content new EF.eMISENT()){第几页int pageNumber page ?? 1;每页数据条数&#xff0c;这个可以放在配置文件中int pageSize 10;//var infoslist.C660List.OrderBy(…

大模型LLM:最清晰解读提示工程(Prompt Engineering)

提示工程&#xff08;Prompt Engineering&#xff09;&#xff0c;也称为上下文提示&#xff0c;是一种通过不更新模型的权重/参数来引导LLM行为朝着特定结果的方法。这是与AI有效交流所需结果的过程。提示工程可以用于各种任务&#xff0c;从回答问题到算术推理乃至各种应用领…

最优化方法_高等教育出版社

contents 前言第一章 基本概念1.1 最优化问题简介1.2 凸集和凸函数1.2.1 凸集1.2.2 凸函数1.2.3 凸规划&#xff08;个人补充&#xff09; 1.3 最优性条件1.3.1 下降方向1.3.2 充分必要条件1.3.3 拉格朗日乘子法 1.4 最优化方法概述1.4.1 初始点的选取1.4.2 迭代点好坏的判定1.…

数据库|实践干货!实现tiup与prometheus迁移

一、背景 由于规划变动&#xff0c;需要将tiup和prometheus移动到其他的机器上&#xff0c;要求平滑迁移&#xff0c;不丢失监控数据。 关于prometheus的数据迁移《迁移prometheus数据》&#xff08;https://tidb.net/blog/1ea36c1f?shareIdba5da793&#xff09;这篇专栏文章…

beyond Compare连接 openWrt 和 VsCode ()

连接步骤总结 1. 新建会话 -> 文件夹比较 2.点击浏览文件夹 3.在弹出页面 配置 ftp 3.1&#xff09;选中ftp 配置文件 3.2)选中ssh2 3.3)填写我们需要远端连接的主机信息 先点击连接并浏览 得到下方文件夹 弹出无效登录&#xff0c;说明需要密码 我们返回右键刚刚创建的新 …

记一下blender曲线阵列

先说一下如何正常使用这个 这一次我是用来贴瓷砖 随便创建一个mesh 然后添加一个阵列修改器&#xff0c;然后再给他添加一个curve修改器&#xff0c;使用constant offset去偏移他 这里有个小细节 我第一次创建的curve 我选取之后&#xff0c;死活无法沿着曲线阵列&#xff…

CentOS 设置手动同步指定NTP时钟服务器

1. 文件上传至服务器 2.进入文件路径 3.查看文件名称 4.安装rpm包 注意执行顺序 1&#xff0c;3&#xff0c;2 5.启动ntp并设置开机自启 6.配置ntp配置文件 修改为时间服务器ip&#xff08;同时要删除或注释掉其他三个server开头的外网的配置&#xff0c;防止因为外网不通导致…

Unity发布webgl之后修改StreamingAssets 内的配置文件读取到的还是之前的配置文件的解决方案

问题描述 unity发布webgl之后&#xff0c;修改在StreamingAssets 中的配置信息&#xff0c;修改之后读取的还是之前的配置信息 读取配置文件的代码IEnumerator IE_WebGL_LoadWebSocketServerCopnfig(){var uri new System.Uri(Path.Combine(Application.streamingAssetsPath…

【Mark笔记】基于Centos7.7更改SSH端口重启服务报错

0x0 场景描述 RT&#xff0c;更改默认端口22为2276后直接重启服务报错&#xff1a; 查看报错内容&#xff0c;如下&#xff1a; 0x1 相关操作 关闭selinux &#xff08;未重启&#xff09;本地防火墙端口放行tcp 2276端口更改回22端口服务可以正常启动sshd -t 检查配置并未…

uniapp本地打包到Android Studio生成APK文件

&#xff08;1&#xff09;安装 Android Studio 软件&#xff1b; 下载地址&#xff1a;官方下载地址&#xff0c;英文环境 安装&#xff1a;如下之外&#xff0c;其他一键 next &#xff08;2&#xff09;配置java环境&#xff1b; 下载&#xff1a;j…

LlamaFactory可视化微调大模型 - 参数详解

LlamaFactory 前言 LLaMA Factory 是一个用于微调大型语言模型的强大工具,特别是针对 LLaMA 系列模型。 可以适应不同的模型架构和大小。 支持多种微调技术,如全参数微调、LoRA( Low-Rank Adaptation )、QLoRA( Quantized LoRA )等。 还给我们提供了简单实用的命令行…

【Linux】升级FastJSON版本-jar

摘要 在长期运行的应用服务器上&#xff0c;近期的安全漏洞扫描揭示了fastjson组件存在潜在的安全隐患&#xff08;FastJSON是一个Java 语言实现的 JSON 解析器和生成器。FastJSON存在远程代码执行漏洞&#xff0c;恶意攻击者可以通过此漏洞远程执行恶意代码来入侵服务器&…