Scratch3.0 使用 Scratch Link 连接Wedo等外设

2023-10-31

为什么需要Scratch Link

从我之前的一些二次开发文章可以看出,Scratch 3.0不论是在线版本还是离线的桌面版都是一个Web App,出于安全性等等因素的考虑,Web App对系统接口的访问有着非常严格的限制,比如硬件文件读写、蓝牙或串口外设等等。

那要连接Wedo等外设怎么办呢?Scratch的解决方案是这样的,另准备一个本地程序,这个程序可以使用系统API来访问蓝牙以及串口外设,同时,它又是一个服务器程序,可以通过wss协议与Web app通信,这样它就成了Scratch 与 外设的桥梁(所谓的wss,就是安全的WebSocket通信协议)。下图是一个简单的示意图:
在这里插入图片描述
(实际上新版的Chrome浏览器已经支持 Web Serial API 和 Web Bluetooth API,所以或许再过一段时间就不需要蹩脚的Scratch Link了)

为什么安装了Scratch Link还是用不了

这是因为在scratch-vm的代码设定的wss通信地址是:wss://device-manager.scratch.mit.edu:20110/scratch/ble,也就是需要通过scratch官网旅游一圈再回到我们的Scratch Link,但是 scratch.mit.edu 已经被墙了,没梯子这路就断了。
所以网络可以看到一些修改host的方案,把device-manager.scratch.mit.edu 解析到本地127.0.0.1

怎么解决

从二次开发的角度来说,代码是直接暴露给开发人员的,完全没有必要再用device-manager.scratch.mit.edu:20110 这样的地址,直接改成 127.0.0.1 它不香吗。
Kidsline就是这么做的,同时为了避免与官网Scratch Link端口冲突,我们把通信端口改为了20111

Kidsline的一些小细节

Scratch link编译后的运行文件很小 1M+,通常是需要单独安装的,在整 Kidsline 时,我把Scratch Link直接打包到了Kidsline的安装包中,取名为Kidslink,这样一次安装即可搞定,也省了什么版本不匹配等等的问题。
同时,我在菜单栏里增加了一个启动项,需要时点击菜单就好。
在这里插入图片描述
想折腾直接修改源码,不想折腾的可以下载我们的Kidsline。点这里下载页

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Scratch3.0 使用 Scratch Link 连接Wedo等外设 的相关文章

  • 从代码中,如何创建对存储在附加属性中的对象的属性的绑定?

    我们有一个继承的附加属性来存储一个对象 在可视化树的更下方 我们希望从代码绑定到该对象的属性 通常我们像这样构建绑定的路径部分 var someBinding new Binding Path new PropertyPath Attach
  • 从模板切换传递的类型

    在 C 中是否可以检查传递给模板函数的类型 例如 template
  • C# 5 async/await 线程机制感觉不对?

    为什么让调用线程进入异步方法直到内部 等待 一旦调用异步方法就生成一个线程 这不是更干净吗 这样您就可以确定异步方法会立即返回 您不必担心在异步方法的早期阶段没有做任何昂贵的事情 我倾向于知道某个方法是否要在 我的 线程上执行代码 不管是堵
  • 将表(行)与 OpenXML SDK 2.5 保持在一起

    我想在 Word 文档中生成多个表 每行 2 行 但我想将这两行保留在一起 如果可能的话 new KeepNext 第一行不起作用 new KeepNext 第一行的最后一段不起作用 new CantSplit 放在桌子上不起作用 在所有情
  • NodeJS - 将相对路径转换为绝对路径

    In my 文件系统我的工作目录在这里 C temp a b c d 在 b bb 下有文件 tmp txt C temp a b bb tmp txt 如果我想从工作目录转到该文件 我将使用以下路径 bb tmp txt 如果该文件不存在
  • C# 编译器不会优化不必要的强制转换

    前几天 在写答案的时候这个问题 https stackoverflow com questions 2208315 why is any slower than contains在这里 关于溢出 我对 C 编译器感到有点惊讶 它没有按照我的
  • MFC:如何设置CEdit框的焦点?

    我正在开发我的第一个简单的 MFC 项目 但我正在努力解决一个问题 想要设置所有的焦点CEdit其中一个对话框中的框 我的想法是 当打开对话框时 焦点位于第一个编辑框上 然后使用 选项卡 在它们之间交换 我看到了方法SetFocus 但我无
  • UI 函数在快速事件完成之前触发

    我有一个停靠在 Silverlight 应用程序中的 Web 浏览器框架 有时会在其上弹出全窗口 XAML Silverlight UI 元素 我已经或多或少修复了一个老问题 即 Web 框架的内容似乎与 Silverlight 内容不能很
  • 使用 C# 和 wpf 创建类似 Dock 的应用程序

    我需要创建一个与我们购买笔记本电脑时获得的应用程序类似的应用程序 仅当鼠标指针到达窗口顶部时它才可见 那么我怎样才能使用 C 4 0 来做到这一点呢 http www notebookcheck net uploads pics win2
  • 如何对 NServiceBus.Configure.WithWeb() 进行单元测试?

    我正在构建一个 WCF 服务 该服务接收外部 IP 上的请求并将其转换为通过 NServiceBus 发送的消息 我的单元测试之一调用Global Application Start 它执行应用程序的配置 然后尝试将 Web 服务解析为 验
  • 在 asp.net MVC 中使用活动目录进行身份验证

    我想使用活动目录对我的 asp net mvc 项目中的用户进行身份验证 在网上冲浪了几个小时后 我没有找到任何对我有用的东西 我已经看到了所有结果 但什么也没有 我尝试按照许多帖子的建议编辑我的 web config 如果有人可以帮助我提
  • 在 Express.js 中使用相同的响应对象发送多个响应(res.json)

    res json Object assign cart generateArray res json JSON stringify cart totalPrice 我如何发送发送多个响应 因为我的代码不起作用 谢谢 您不能发送多个回复 您发
  • Linux mremap 不释放旧映射?

    我需要一种方法将页面从一个虚拟地址范围复制到另一个虚拟地址范围 而无需实际复制数据 范围很大 延迟很重要 mremap 可以做到这一点 但问题是它也会删除旧的映射 由于我需要在多线程环境中执行此操作 因此我需要旧映射能够同时使用 因此稍后当
  • ASP.NET MVC 路由:如何从 URL 中省略“索引”

    我有一个名为 StuffController 的控制器 具有无参数索引操作 我希望从表单中的 URL 调用此操作mysite com stuff 我的控制器定义为 public class StuffController BaseContr
  • 逆向工程 ASP.NET Web 应用程序

    我有一个 ASP NET Web 应用程序 我没有源代码 该 bin 包含 10 个程序集和一个 compiled 文件 我在 App Code dll 上使用 Reflector 它向我显示了类和命名空间之类的东西 但它太混乱了 有没有什
  • 如何调试 .NET 运行时中的内部错误?

    我正在尝试调试一些处理大文件的工作 代码本身works 但 NET 运行时本身会报告零星错误 对于上下文 这里的处理是一个 1 5GB 文件 仅加载到内存中一次 在循环中处理和释放 故意尝试重现此否则不可预测的错误 我的测试片段基本上是 t
  • 节点未找到全局模块

    所以我意识到这是一个相当通用的标题和问题 但我已经搜索了很多答案 但遗憾的是它们似乎都不适合我 我希望通过我自己提供更多信息 也许有人有一个具体的答案 或者确切地知道将我重定向到哪个答案 我的问题 当我全局安装节点模块时 例如npm ins
  • Socket.io、集群、快速和同步事件

    1周以来我遇到了一个大问题 我尝试将实际在单核上运行的 node JS 项目转换为具有集群的多核 对于 websockets 目前 我对事件没有任何问题 但是 对于 xhr polling 或 jsonp polling 我在集群模式下使用
  • DataContractSerializer 事件/委托字段问题

    在我的 WPF 应用程序中 我正在使用DataContractSerializer序列化对象 我发现它无法序列化具有事件或委托声明的类型 考虑以下失败的代码 Serializable public abstract class BaseCl
  • 结构化绑定的用例有哪些?

    C 17 标准引入了新的结构化绑定 http en cppreference com w cpp language structured binding功能 最初是proposed http www open std org jtc1 sc

随机推荐

  • LeetCode---搜索算法

    LeetCode 搜索算法 搜索算法 图 图Graph的概念 图的抽象数据类型 邻接矩阵 邻接列表 图的搜索算法 广度优先BFS 深度优先DFS LeetCode BFS 1091 二进制矩阵中的最短路径 解法 广度优先搜索 127 单词接
  • 计算机主机指什么,通常所说的计算机的主机是指什么

    大家好 我是时间财富网智能客服时间君 上述问题将由我为大家进行解答 通常所说的计算机的主机是指cpu和内存 计算机 一般是指 电子计算机 电子计算机 electronic computer 通称电脑 是现代一种用于高速计算的电子计算机器 可
  • Java异常之自定义异常

    自定义异常类自定义异常 1 使用 Java 内置的异常类可以描述在编程时出现的大部分异常情况 除此之外 用户还可以自定义异常 用户自定义异常类 只需继承 Exception 类即可 2 在程序中使用自定义异常类 大体可以分为以下几个步骤 创
  • Widgetkit是什么?

    最近在研究Joomla 发现了一个叫Widgetkit的组件 Widgetkit是什么来的 有什么用呢 它是Yootheme推出的一个综合应用解决方案 它广泛用于Joomla 和Wordpress中 在Widgetkit组件里有很多效果 比
  • ERROR: No matching distribution found for setuptools_scm

    安装paddlenlp时遇到这个问题 解决办法 先把setuptools卸载掉 pip uninstall setuptools 然后重新安装 pip install setuptolls scm pip install seqeval
  • 虚幻引擎 遇到的问题总结

    初学UE 遇到很多问题 这里记录一下 防止以后忘记 还会不断添加 语言设置 UE的中文翻译很多地方翻译的并不是很好 照着视频学习的话还是英文版的比较好 Edit 编辑 gt Editor preferences 编辑器偏好设置 gt Reg
  • Linux下的g++使用总结

    什么是g 和gcc 都是编译器 准确的说都是GNU 组织 的一个编译器 区别 后缀为 c的文件gcc把它当做c程序 g 当做c 程序 后缀为c 的两者都当做c 程序 对于cpp程序 无论gcc或者是g 编译阶段都是相同的 都是用的gcc进行
  • ChatGPT一分钟做流程图

    ChatGPT一分钟做流程图它能不能帮我们制作流程图呢 必须是可以的 今天我们再来介绍一个如何用ChatGPT快速制作流程图的方法 下面以PowerBI分析流程为例 先向ChatGPT进行提问 你是一个高级数据分析师 熟悉数据分析的每个流程
  • 在PPPoE拨号宽带上使用IPv6(Cisco路由器)

    本文于2019年1月成文 在2020年3月进行了修订 更正了部分配置命令的使用 本地联通运营商已经开通了家用宽带的IPv6 通过单独电脑PPPoE拨号证实可用 但是 显然现在几乎没有人用电脑直接拨号了 那么 如何能在不改变现有网络拓扑的情况
  • 印度欲自研系统以替代 iOS 和 Android;基于 OpenJDK 17 的龙芯平台 Java 环境发布;Python 即将支持 WebAssembly

    开源吞噬世界的趋势下 借助开源软件 基于开源协议 任何人都可以得到项目的源代码 加以学习 修改 甚至是重新分发 关注 开源日报 一文速览国内外的开源大事件吧 整理 苏宓 一分钟速览新闻点 基于 OpenJDK 17 的龙芯平台 Java 环
  • Golang Web框架fiber

    Golang Web框架fiber fiber简介 fiber起步 fiber配置 fiber上下文context fiber app fiber常量 fiber中间件 基本认证BasicAuth fiber中间件 缓存 fiber中间件
  • React 类组件和函数组件

    React 类组件和函数组件 目录 1 类组件和函数组件 2 如何使用 props 和 state 3 如何绑定事件 4 复习 this 两个面试题 组件component 一 概念 Element VS Component 元素与组件 不
  • 怎样用pycharm连接数据库,以及常见报错如何解决

    1 下载插件工具 点击file点击setting点击plugins 搜索database navigator点击install进行下载 然后重启pycahrm 2 使用插件 重启pycharm后最上边的工具栏会多一个DB Navigator
  • 第一章 复变函数与积分变换 知识点总结(Jeff自我感悟)

    第一章 复变函数与积分变换 知识点总结 Jeff自我感悟
  • 矩阵求逆_伴随矩阵法

    1 基本知识 首先展示一个 n n n阶行列式 D
  • 重庆永川实现停车自由 百度地图助力打造西部智能交通新样板

    停车难 已成为制约现代城市健康发展的一大瓶颈 停车信息不通畅 停车场资源分配不均等问题影响着城市停车管理效率 永川位于重庆西部 是成渝地区双城经济圈枢纽节点 重庆主城都市区重要战略支点 其中心城区面积80平方公里 常住人口80万人 城镇化率
  • 【python 深度学习】解决遇到的问题

    目录 一 RuntimeError module compiled against API version 0xc but this version of numpy is 0xb 二 AttributeError module tenso
  • C++二进制文件读写简单操作

    WriteBinaryFile cpp 定义控制台应用程序的入口点 include stdafx h include
  • Mysql8.0重置初始密码输入mysqld --console --skip-grant-tables --shared-memory无效

    Mysql8 0重置初始密码的方式网上有很多按照步骤来就行了 但是在使用mysqld console skip grant tables shared memory时会发现这个设置是无效的 没起来什么作用 导致无法免密登录 不同的情况解决的
  • Scratch3.0 使用 Scratch Link 连接Wedo等外设

    为什么需要Scratch Link 从我之前的一些二次开发文章可以看出 Scratch 3 0不论是在线版本还是离线的桌面版都是一个Web App 出于安全性等等因素的考虑 Web App对系统接口的访问有着非常严格的限制 比如硬件文件读写