【智体OS】官方上新发布智体电视:基于rtpc和rttouchpad实现智体电视的手机遥控-可安装任意PC应用用于智体电视

【智体OS】官方上新发布智体电视:基于rtpc和rttouchpad实现智体电视的手机遥控-可安装任意PC应用用于智体电视

dtns.network是一款主要由JavaScript编写的智体世界引擎(内嵌了three.js编辑器的定制版-支持以第一视角浏览3D场馆),可以在浏览器和node.js、deno、electron上运行,它是一个跨平台的软件,支持多个操作系统使用!

dtns.connector是dtns.network的客户端软件,允许多用户方便自由地连接dtns.network的智体设备。支持使用内置的poplang智体编程语言实现3D组件的智能化编程——语法超简单,一句话语法,人人轻松上手!通过poplang智体编程,可轻松创建、编辑、分发xverse-3D智体应用。

本次上新的主要内容为:使用rtpc实时分布式PC远程访问和实时控制智体电视,并基于rttouchpad实现智体电视遥控器(rtpc3.3.dpkg版本)

更新内容

1、使用dpkg机制,集成和拓展dtns-rtpc-api,开发了rtpc分布式远程访问和实时控制的DPKG插件rtpc3.3.dpkg(dtns.top官网下载)

2、rtpc和rttouchpad共同支持屏幕同步功能、鼠标点击功能、文字输入功能

3、支持访问内网算力设备,主要是依赖于dtns-api来进行访问(分布式设备终端远程访问),可取代大部分的代理访问机制。

4、可方便集成到了dtns.os的系统应用面板中。

5、可使用poplang调用dtns-rtpc-api,实现桌面操作系统和智体电视的控制机器人

6、可在手机上安装dtns.connector智体OS的客户端,打开rtpc3.3dpkg,点击在上角的【触屏】以激活遥控器功能,实现鼠标移动、点击、鼠标滚动、方向键操作(手机触控版浏览器)

7、利用dtns.network的智体OS操作系统,安装rtpc和rttouchpad智体应用,可以方便地将PC电脑(macos、windows)升级为智体电视机。可以安装数以千万计的第三方应用,并且方便地手机-PC电脑共享视频应用会员等等诸多好处。

完全开源:rtpc和rttouhpad开源、dtns.os和dtns.network等项目均开源。详见文末、或访问dtns.top智体OS官网。

使用教程

一、打开dtns.connector的dweb头榜界面,点击上传了的rtpc3.3.dpkg(或任意其它最新版本)

1.png

二、进入rtpc远程访问和实时管理的智体应用,可以看到最新的macos桌面内容(点击锁屏可见到输入密码提示框,使用右上角的功能-input可以输入文本密码)

2.png

三、点击右上角的“功能”,再点击input输入密码*****

3.png

四、输入完密码,点击->登录箭头登录

4.png

五、进入macos系统后,可以看到视频应用界面

5.png

六、点击右上角的【画面】后,可见状态为【触屏】,可使用移动鼠标、上下滚动鼠标、进行运作操作(前后左右的移动来控制键盘上的前后左右键——用于调整音量、前进后退等)

6.png

Input的poplang代码如下:


set tips 请输入:$.prompt tips= keystr $ret$.g_rtpc.hideTools#发送键盘输入内容set p **{"string":""}object.set p.string keystr/rtpc/string/type p

注:使用了全局函数 . p r o m p t 来提示输入,并使用 .prompt来提示输入,并使用 .prompt来提示输入,并使用.g_rtpc.hideTools来隐藏功能栏,并最终调用dtns-rtpc-api:/rtpc/string/type来实现文本密码的输入。

rtpc3.3.dpkg的源码分享
/* eslint-disable */<!--* @Description: RtPcClient* @Author: poplang* @Date: 2024-12-5* @LastEditors:* @LastEditTime:--><template><div style="width: 100%;height: 100%;padding:0px;margin: 0px;" ><div @click="back" style="color:black;position: fixed;left:8px;top:8px;z-index: 399;"> ❮返回 </div><div style="color:black;position: fixed;left:0;right:0;top:8px;z-index: 359;text-align: center;  font-size: 18px;font-weight: 800;">{{ title }}</div><div  style="color:black;position: fixed;right:8px;top:8px;z-index: 399;"><span @click="showTouchPadFlag=!showTouchPadFlag" style="margin-right: 8px">{{ showTouchPadFlag?'触屏':'画面' }}</span><span @click="syncScreen" style="margin-right: 8px">{{ syncScreenTips }}</span><span @click="showFlag=true" style="margin-right: 8px">功能</span><!-- <span @click="queryScreen">刷新</span> --></div><!-- <div style="color:red;position: fixed;right:8px;top:8px;z-index: 399;"><b>[分数] {{ top_cnt }} : {{ success_cnt  }}</b></div> --><!-- <div v-show="showInput" style="position: fixed;z-index: 199; display:flex;bottom: 5px;left:0;right: 0;height: auto;text-align: center;margin-bottom: 2px;padding:0px 10px 0px 10px;"><input @keydown.enter="keyDown" style="width:100%; height:28px; padding-left:5px; border:1px solid #eeeeee; font-size:13px;" v-model="msg" /><button @click="send" style="color: rgb(255, 255, 255);width:70px;border-radius: 0px; font-size: 13px; height: 28px; background-color: rgb(18, 173, 245); border: none;">发送</button></div> --><RtTouchPad v-if="showTouchPadFlag"/><div v-else style="position:fixed;top: 50px;bottom: 0px;left: 0px;right: 0px;z-index: 9;overflow-x: auto;overflow-y: auto;"><img :src="base64" style="width: auto;height: auto;" @mousedown="mousedown"/></div><van-popup v-model="showFlag" position="top" :style="{ height: '35%' }" ><van-grid><van-grid-item  @click="call(item)"  v-for="(item,index) in list" :key="index" icon="photo-o" :text="item.title"></van-grid-item></van-grid></van-popup></div></template><script>import RtTouchPad from './RtTouchPad.vue';export default {name: "RtPcClient",props: ["value"],components: { RtTouchPad },data() {return {title:'RTPC客户端',// showInput:false,base64:null,// syncScreenId:0,syncScreenNowFlag:false,syncScreenTips:'同步',syncScreenTipsStart:'同步',syncScreenTipsStop:'静止',showFlag:false,list:[],popRutimes:[],showTouchPadFlag:false,}},async created(){this.user_id = localStorage.user_id//   setInterval(this.queryScreen,10000)},mounted(){// this.queryScreen()this.syncScreen()//允许使用poplang脚本进行功能拓展。this.queryPopPlugins()window.g_rtpc = {}g_rtpc.queryPopPlugins = this.queryPopPluginsg_rtpc.stopSyncScreen = this.stopSyncScreeng_rtpc.syncScreen = this.syncScreeng_rtpc.queryScreen = this.queryScreeng_rtpc.hideTools = this.hideToolsg_rtpc.showTools = this.showTools},beforeRouteLeave(to,from,next){// if(this.syncScreenId) clearInterval(this.syncScreenId)console.log('beforeRouteLeave-to-from:',to,from)if(to.path != from.path){this.stopSyncScreen()console.log('into beforeRouteLeave')next();}},methods: {back(){this.stopSyncScreen()this.$router.go(-1)},hideTools(){this.showFlag = false},showTools(){this.showFlag = true},stopSyncScreen(){if(this.syncScreenNowFlag){// clearInterval(this.syncScreenId)this.syncScreenNowFlag = falsethis.syncScreenTips = this.syncScreenTipsStart}//对poplang进行资源回收if(this.popRutimes){for(let i=0;i<this.popRutimes.length;i++){this.popRutimes[i].quit() //退出所有循环和脚本。console.log('quit-poplang-',i)}}},async syncScreen(){if(this.syncScreenNowFlag) return this.stopSyncScreen()this.syncScreenNowFlag = true//setInterval(this.queryScreen,5000)this.syncScreenTips = this.syncScreenTipsStopwhile(this.syncScreenNowFlag){await this.queryScreen() //得到查询结果(可能1-15s完成600kb的png截图下载)await new Promise((res)=>setTimeout(res,100))}},async queryScreen(){if(typeof g_dtnsManager =='undefined') return falselet ret =  await g_dtnsManager.run('dtns://web3:'+rpc_client.roomid+'/rtpc/screen/cap')if(ret && ret.ret) this.base64 = ret.base64else console.log('query-screen-ret:',ret)},async mousedown(e){if(this.click_event_now_flag) console.log('this.click_event_now_flag is true')console.log('RtPcClient.vue mousedown-event:',e)let x = e.offsetX , y = e.offsetY//e.layerX, y = e.layerY//e.clientX, y = e.clientYif(typeof g_dtnsManager =='undefined') return falsethis.click_event_now_flag = truelet ret = await g_dtnsManager.run('dtns://web3:'+rpc_client.roomid+'/rtpc/mouse/move',{x,y,click:true})//,click:trueif(!ret || !ret.ret) g_dchatManager.viewContext.$toast('移动鼠标失败,原因:'+(ret ? ret.msg:'未知网络原因'))// else{// ret = await g_dtnsManager.run('dtns://web3:'+rpc_client.roomid+'/rtpc/mouse/click')// if(!ret || !ret.ret) g_dchatManager.viewContext.$toast('点击屏幕执行失败,原因:'+(ret ? ret.msg:'未知网络原因'))// await new Promise((res)=>setTimeout(res,100))// await this.queryScreen()// }await new Promise((res)=>setTimeout(res,100))this.click_event_now_flag = false},async call(item){let data = await g_dchatManager.goFile(item.fileid,true)if(!data) return falselet binaryData = data.filedatalet utf8decoder = new TextDecoder()let poplangStr  = utf8decoder.decode(binaryData)let poplang = new PopRuntime()this.popRutimes.push(poplang)console.log('run-item-popRuntimes:',item.title,item,data,poplangStr,this.popRutimes)let rets = await poplang.runScript(null,poplangStr) //注意while 循环console.log('run-item-result:',rets)return true},async queryPopPlugins(){if(typeof g_dtnsManager =='undefined') return falselet ret = await g_dtnsManager.run('dtns://web3:'+rpc_client.roomid+'/rtpc/poplang/apps')if(ret && ret.ret){return this.list = ret.list}return false},send(){},keyDown(){}}}</script><style scoped></style>

注:对比rtpc2.*版本,主要是引入了RtTouchPad组件,用于实现手机端的触控板遥控智体电视机(功能类似笔记本电脑键盘下方中间的touch-pad触控面板)。并且,调整了【功能】栏的能力,使得直接使用.pop代码可以轻松拓展任意的rtpc智体电视的控制代码(基于poplang构建的智体应用插件)。

总结:rtpc和rttouchpad的结合,使得智体电视变成了一个非常易于使用的智体设备。功能强大,应用丰富(千万级),并且支持poplang拓展智体电视机的功能插件,从而大大提升了智体电视的用户体验——内容极度丰富、使用超级简单。

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

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

相关文章

ES(elasticsearch)整合Spring boot使用实例

1.1通过docker安装es详细教程参考 docker部署elasticsearch(内涵集群部署的compose文件)-CSDN博客 2.1创建MySQL数据库&#xff0c;通过sql命令进行表的创建与数据的写入&#xff08;sql命令如下&#xff09; /*Navicat Premium Data TransferSource Server : localSo…

GitHub使用

太久不用GitHub发现自己又有些不会了&#xff0c;突发奇想为何不把每次看到的有指导意义的博客收录一下以便下次查阅呢 如何上传文件夹到GitHub上&#xff08;配图详解&#xff09;&#xff1f;_github上傳資料夾-CSDN博客 github上如何删除自己的仓库_github删除仓库-CSDN博…

单独测试 pyautogui 的鼠标点击功能,确保它能够在当前环境中正常工作,鼠标自动点击的录制回放功能

感谢您提供的详细日志信息。根据您的反馈&#xff0c;问题可能出在 pyautogui 没有正确获取鼠标焦点或无法在预期的位置执行点击操作。我们将采取以下步骤来进一步诊断和解决这个问题&#xff1a; 1. **确保 pyautogui 正确执行点击操作**&#xff1a; - 我们将添加更多的调…

保姆级教学 uniapp绘制二维码海报并保存至相册,真机正常展示图片二维码

一、获取二维码 uni.request({url: https://api.weixin.qq.com/wxa/getwxacode?access_token${getStorage("token")},responseType: "arraybuffer",method: "POST",data: {path: "/pages/index/index"},success(res) {// 转换为 Uint…

coco数据集转换SAM2格式

coco是一个大json汇总了所有train的标签 SAM2训练一张图对应一个json标签 import json import os from pycocotools import mask as mask_utils import numpy as np import cv2def poly2mask(points, width, height):points_array np.array(points, dtypenp.int32).reshape(-…

Vue.createApp的对象参数

目录 template 属性 data 属性 methods 属性 疑问 function 函数的两种写法 methods 属性中 this 的指向 总结 Vue 实例是通过 Vue.createApp() 创建的&#xff0c;该函数需要接收一个对象作为参数&#xff0c;该对象可添加 template、data、methods 等属性。 template …

LLM大语言模型私有化部署-OpenEuler22.03SP3上容器化部署Ollama与OpenWebUI

背景 你是不是也有私有化部署大模型的需求&#xff1f;如今有了 Ollama &#xff0c; HuggingFace &#xff0c; ModelScope 等开源平台&#xff0c;我们可以非常方便地搭建一个属于自己的大模型&#xff0c;如果网速给力&#xff0c;真是分分钟~~。简单起见&#xff0c;这篇文…

使用字典进行动态编程

在你的程序中&#xff0c;你想要执行各种计算&#xff0c;例如计算卫星的总数。 此外&#xff0c;当你进行更高级的编程时&#xff0c;你可能会发现你需要从文件或数据库中加载此类信息&#xff0c;而不是直接编码到 Python 中。 为了帮助支持这些场景&#xff0c;Python 使你…

Linux——rootfs根文件系统构建

根文件系统也叫做rootfs FATFS这类的文件系统属于Linux内核的一部分&#xff0c;属于软件代码&#xff0c;所以ROOTFS不等于FATFS。 Linux的根文件系统实际上是一个文件夹或者叫目录&#xff0c;这个目录下会有许多子目录&#xff0c;这些目录中存放许多Linux运行所必须的文件…

go语言的成神之路-标准库篇-os标准库

一、权限 在操作系统&#xff08;OS&#xff09;中&#xff0c;标准库的权限管理是非常重要的&#xff0c;它确保了不同用户和进程能够安全地访问系统资源。以下是一些常见的权限概念和说明&#xff1a; 1.用户权限 用户ID&#xff08;UID&#xff09;&#xff1a;每个用户在…

linux 生成 nginx 的https ssl 证书详解

证书生成 1. 生成证书 会提示输入密码&#xff0c;输入两次相同密码即可。 openssl genrsa -des3 -out server.key 20482. 去除密码校验 如果想去除此输密码的步骤&#xff0c;可以执行如下命令&#xff0c;根据使用需求选择。 openssl rsa -in server.key -out server.ke…

LabVIEW实现MQTT通信

目录 1、MQTT通信原理 2、硬件环境部署 3、云端环境部署 4、程序架构 5、前面板设计 6、程序框图设计 7、测试验证 本专栏以LabVIEW为开发平台,讲解物联网通信组网原理与开发方法,覆盖RS232、TCP、MQTT、蓝牙、Wi-Fi、NB-IoT等协议。 结合实际案例,展示如何利用LabVIEW和常用…

【OpenCV】直方图

理论 可以将直方图视为图形或曲线图&#xff0c;从而使您对图像的强度分布有一个整体的了解。它是在X轴上具有像素值(不总是从0到255的范围)&#xff0c;在Y轴上具有图像中相应像素数的图。 这只是理解图像的另一种方式。通过查看图像的直方图&#xff0c;您可以直观地了解该…

【PlantUML系列】用例图(三)

目录 一、组成部分 二、典型案例 一、组成部分 参与者&#xff08;Actors&#xff09;&#xff1a;使用关键字 actor 后跟参与者的名称。用例&#xff08;Use Cases&#xff09;&#xff1a;使用关键字 usecase 后跟用例的名称和编号&#xff08;可选&#xff09;。系统边界…

Transformer部分知识点解释

传统Transformer 经典QKV算法 Transformer架构的优势与问题 万能模型&#xff0c;直接套用&#xff0c;代码实现简单&#xff0c;现成例子一大片并行的&#xff0c;比LSTM快&#xff0c;全局信息丰富&#xff0c;注意力机制效果好长序列中attention需要每一个点跟其他点计算(…

docker-compose 之 禅道(zentao) 社区版

docker-compose 关于 zentao 的配置片段如下所示&#xff1a; 镜像使用的官方镜像&#xff1a;https://hub.docker.com/r/easysoft/zentao zentao: image: easysoft/zentao:21.2container_name: zentaoports: - "8088:80"- "23306:3306"environment:TZ: A…

聚类及Python下实现 K-means 算法

聚类 聚类是无监督学习中的一种重要方法&#xff0c;旨在将数据集中相似的数据对象划分到同一个簇中&#xff0c;使得不同簇之间的数据对象差异尽可能大。在大数据环境下&#xff0c;聚类可以帮助挖掘数据中的隐藏结构和模式&#xff0c;应用场景十分广泛&#xff0c;比如在客…

LabVIEW调用Thorlabs的动态库进行开发

Thorlabs 产品在科研与生产领域中的应用广泛&#xff0c;当需要基于LabVIEW 进行二次开发时&#xff0c;可按照以下方法操作&#xff0c;以充分发挥设备性能并满足特定的项目需求。 创建 Kinesis LabVIEW 项目文件和文件夹 更详细的说明参见附件 在 LabVIEW 的启动界面中选择…

SQL中的通配符:使用LIKE操作符进行模式匹配

在SQL中&#xff0c;LIKE 操作符用于在查询中进行模式匹配。它常用于 WHERE 子句中&#xff0c;以便根据特定模式查找数据。与直接进行精确匹配的 操作符不同&#xff0c;LIKE 允许你使用通配符来对数据进行模糊查询&#xff0c;从而使查询更加灵活和强大。 常见的SQL通配符 …

三、Zookeeper

Zookeeper 三、Zookeeper3.1什么是zookeeper?3.2为什么需要zookeeper3.3Zookeeper基本运行流程3.4Zookeeper数据模型3.5Zookeeper主要角色3.6Zookeeper工作原理3.7Zookeeper节点数据操作流程三、Zookeeper 3.1什么是zookeeper? ZooKeeper是一个分布式的,开放源码的分布式应…