海口省建设厅网站广告拍摄制作公司

news/2025/9/22 19:17:08/文章来源:
海口省建设厅网站,广告拍摄制作公司,泉州软件开发制作,海口网站建设q479185700棒有这个想法的初衷喜欢电子和DIY硬件的朋友对稚晖君应该都不陌生#xff0c;他定期都会分享一些自己做的好玩的硬件#xff0c;他之前做了一个ElectronBot桌面机器人我就很感兴趣#xff0c;所以就自己也做了一个。起初我只是自己开发了一个叫电子脑壳的上位机软件#xff0…有这个想法的初衷喜欢电子和DIY硬件的朋友对稚晖君应该都不陌生他定期都会分享一些自己做的好玩的硬件他之前做了一个ElectronBot桌面机器人我就很感兴趣所以就自己也做了一个。起初我只是自己开发了一个叫电子脑壳的上位机软件大家在之前的博客里应该也有见到是个用WinUIWASDK开发的Windows应用软件。ElectronBot机器人要一直和电脑连接通过应用进行控制很多的网友都想ElectronBot脱离电脑使用于是我也想着能有什么好办法所以也就有了这个标题的想法。项目代码地址: https://github.com/maker-community/ElectronBot.DotNet技术选型大家想到树莓派肯定就会想起python,大学的时候玩树莓派确实用python比较多但是作为一个.NET开发人员当然要尝试下.NET的跨平台能力到底如何了。由于先有了之前写的上位机软件电子脑壳也想着让之前封装的SDK能够直接用在树莓派上所以选择.NET是顺理成章的事情了。应用开发选择.NET框架通讯方式选择GRPCUSB操作选择LibUsbDotNet调用libusb整体方案如下图环境配置1. 树莓派系统安装及网络配置树莓派支持的系统有很多种像官方的DebianUbuntu等等。我平时使用Debian比较多但是测试的时候好像usb操作有些问题应该是我用的.net互操作库对Debian支持的不太好所以我选择了ubuntu的系统。Raspberry Pi Imager 树莓派官方的系统烧录工具Ubuntu系统下载地址 Download Ubuntu Server安装烧录工具下载系统然后烧录系统。如下图所示目前树莓派Zero 2 W的Ubuntu只有Server版本和Core版本需要使用命令行做操作。网络配置可以参考下面的文章进行配置。树莓派4B ubuntu server ssh服务器部署全过程详解内网穿透能正常联网安装软件就可以了。2. .NET6的运行环境由于.NET6 Arm64官方没提供包管理安装所以需要大家通过脚本或者下载文件安装。网络好的可以通过脚本安装简单本文以脚本安装示例。参考文档如下使用安装脚本或通过提取二进制文件在 Linux 上安装 .NET下载安装脚本dotnet-install.sh放到用户家目录执行以下指令添加执行权限sudo chmod x ./dotnet-install.sh执行指令安装./dotnet-install.sh -c Current下载解压结束需要我们配置环境变量就像windows安装软件一样配置完环境变量才可以直接通过dotnet直接使用了不然是提示找不到指令的。以下指令是编辑环境变量的我选择了~/.bashrc在文档最底部添加环境变量内容。sudo vim ~/.bashrc内容export DOTNET_ROOT$HOME/.dotnet export PATH$PATH:$HOME/.dotnet:$HOME/.dotnet/tools保存并退出然后执行dotnet如果正常就可以进行下面的操作了。实践过程记录1. GRPC服务的开发与调试首先用创建一个grpc服务微软官方的文档协议文件编写介绍协议文件编写和服务编写以我的协议内容为例包含了floatboolbytes类型float 对应 c# floatbool 对应 c# boolbytes 对应 c# byte[]syntax proto3;option csharp_namespace Verdure.ElectronBot.GrpcService;package electronbotactiongrpc;// The electronbotaction service definition. service ElectronBotActionGrpc {// Sends a greetingrpc PlayEmoticonAction (EmoticonActionFrameRequest) returns (EbHelloReply); }// The request message containing the users name. message EmoticonActionFrameRequest {float J1 1;float J2 2;float J3 3;float J4 4;float J5 5;float J6 6;bool Enable 7;bytes FrameBuffer 8; }// The response message containing the greetings. message EbHelloReply {string message 9; }然后生成对应的服务代码主要注意点是bytes类型的转换服务端写好了以后就可以写调用端代码了为了图方便我就在电子脑壳代码里加了调用代码。WinUI调用GRPC注意事项直接将gprc相关的东西放到winui项目里好像有一些问题所以我把它放到了一个库项目里进行操作了。配置协议文件生成client代码电子脑壳注入grpc-clientservices.AddGrpcClientElectronBotActionGrpc.ElectronBotActionGrpcClient(o {o.Address new Uri(http://192.168.3.236:5241);});数据发送端也要注意bytes类型的转换grpc服务的打包发布打包的时候选择目标运行时为可移植windows和linux都可以运行项目代码地址2. 服务的部署与效果验证通过ftp工具将grpc服务放到树莓派上首先需要连接ElectronBot之后再运行服务进入项目所在目录执行指令如下dotnet Verdure.ElectronBot.GrpcService.dll --urlshttp://*:5241如果通讯正常那么应该会报错提示libusb找不到系统已经安装了libusb只是.net调用的时候目录没有找到需要我们创建软连接。LibUsbDotNet README最底部有说树莓派实际操作如下sudo find / -name libusb-1.0*.so* //列出库的目录位置cd /usr/lib/aarch64-linux-gnu/ //进入库所在目录sudo ln -s libusb-1.0.so.0 libusb-1.0.so //创建链接通过上面的操作 libusb的操作应该就没有问题了。运行的效果如下图特殊问题与心得体会最大的一个问题就是在sdk放到linux系统上测试写入数据异常。需要sdk单独处理linux环境需要sdk补一些内核驱动卸载逻辑特别注意otg数据线不要使用那种一拖几的用一个口的就行不然数据发送不过去由于使用的LibUsbDotNet上述逻辑没暴露到上层我只好拉了一个分支改了发了一个包问pr也没人理我。sdk内部特别处理的代码如下执行了一个设备的SetAutoDetachKernelDriverif (wholeUsbDevice.DriverMode UsbDevice.DriverModeType.MonoLibUsb) { _logger.LogInformation(MonoLibUsb DetachKernelDriver);var retDetach wholeUsbDevice.SetAutoDetachKernelDriver(true);_logger.LogInformation(retDetach.ToString()); }通过这次的尝试我算是明白了理想很丰满现实很骨感的意思本来觉得树莓派Zero 2 W小巧便携而且我只是用它接收数据发送数据结果数据发送的时候屏幕的刷新很慢不知道是性能差劲还是usb传输是瓶颈。下次换个4b进行测试一下。至此整个过程就分享完了这个项目基本上涵盖了.net技术内的很多东西如果ElectronBot和树莓派结合独立以后能够很好的使用我觉得用MAUI开发一个手机端的管理工具也是顺理成章了可以期待一下能看到这里的可以在评论区给点意见了。

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

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

相关文章

服务类网站建设网站关闭了域名备案

目录 1.注册中心 1.1.nacos注册中心 1.2. 微服务注册和拉取注册中心的内容 2.3.修改订单微服务的代码 3.负载均衡组件 3.1.什么是负载均衡 3.2.什么是Ribbon 3.3.Ribbon 的主要作用 3.4.Ribbon提供的负载均衡策略 4.openfeign完成服务调用 4.1.什么是OpenFeign 4.2…

建设宣传网站的必要性建设商城网站公司吗

在机器人技术日新月异的今天,舵机作为机器人的核心部件之一,扮演着至关重要的角色。它的性能直接关系到机器人的运动控制、稳定性以及精度等方面。那么,在选择和使用机器人舵机时,我们需要关注哪些关键要素呢?本文将为…

北京市住房城乡建设门户网站温岭网络推广公司

mySelectDialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);

成立网站要什么手续城乡建设和住房建设官网

从2016年的3月份开始到现在,对于Android文档的翻译已经进行了两个月的时间。虽然数量还不及总篇数的一半,但是经过一番整理,发现翻译的文章还不少,目前为止已经有56篇了。这个过程也陆陆续续的坚持了下来。现在回头看刚开始翻译的…

网站缺陷和优化的例子中学加强校园网站内容建设

输入两个整数,求他们的最大公约数: 如果我们不用辗转相除法的话,两个整数的最大公约数,我们就可以定义一个整数为两个整数中最小的那个数,然后两个整数一起除我们新定义的整数,如果都除尽了,这…

怎么搭建局域网网站隐私页 wordpress

【0】README 0.1) 本文描述转自 core java volume 1, 源代码为原创,旨在理解 java线程——什么是线程? 的相关知识; 0.2)线程定义:一个程序可以执行多个任务,每一个任务成为线程&a…

崇左做网站公司如何建设公司的网站首页

作者:Erik Engheim译者:冬雨整理:陈思20 世纪 90 年代末,RISC 和 CISC 爆发了一场大战,自那以后,大家却说 RISC 和 CISC 的区别没那么重要了了。许多人表示,指令集也就那么回事,对 C…

如何隐藏一个元素

【常见方法对比】方法是否占据空间是否可交互是否触发重绘/回流典型场景display:none ❌ 不占空间 ❌ 不可交互 回流+重绘 完全移除元素(菜单切换、Tab 切换)visibility:hidden ✅ 占空间 ❌ 不可交互 重绘 保留布局…

昆仑通态触摸屏保存参数到内部存储器并读取的方法成都控制器开发提供

1、 背景在日常的人机界面开发中,有时需要直接在屏幕上写程序进行一下计算换算需要用到一些参数,这些参数需要由操作员设置、掉电不丢失地保存、并在下一次开机时内自动读取这些参数,那么怎么做呢?本文介绍昆仑通态…

使用reCAPTCHA提升WordPress网站安全性 - 指南

使用reCAPTCHA提升WordPress网站安全性 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &q…

软工9.22

今天学了很多,开发软件就是偷懒,怎么做简单,找到最快的方法,挣最多的钱,花最少的力,需要学的还很多。

惠州网站建设企业wordpress主题文章形式

迭代器模式是一种行为型设计模式,它提供了一种统一的方式来遍历集合中的元素,而无需暴露集合的内部结构。在本文中,我们将深入探讨迭代器模式的实现和应用。 在软件开发中,集合是一种常见的数据结构,用于存储和管理一…

网站导航html源码中国优秀设计网站

本小节介绍Stage模型的两种应用组件如何启动FA模型的PageAbility组件。 UIAbility启动PageAbility UIAbility启动PageAbility和UIAbility启动UIAbility的方式完全相同。 说明: 需注意FA模型中abilityName由bundleName AbilityName组成,具体见示例。 i…

杭州萧山做网站WordPress 列表如何修改成图片

数学统计在我们的程序当中特别是数据分析当中是必不可少的一部分,本文就来介绍一下 NumPy 常见的统计函数。最大值与最小值numpy.amin()用于计算数组中的元素沿指定轴的最小值。可以通过 axis 参数传入坐标轴来指定统计的轴,当指定 axis 时,a…

网站服务器 内容更新帮公司做网站

WordPress作为世界上最受欢迎的内容管理系统之一,拥有庞大的插件生态系统,为用户提供了丰富的功能扩展。在内容创作和SEO优化方面,有一类特殊的插件是自动生成原创文章并自动发布到WordPress站点的工具。这些插件能够帮助用户节省时间和精力&…

网站过期后网站开发定制公司

目录 #A 空间 #B 卡片 #C 直线 #D 货物摆放 #E 路径 #F 时间显示 #G 砝码称重 #H 杨辉三角形 #I 双向排序 #J 括号序列 #A 空间 #include <bits/stdc.h> using namespace std;int main() {cout<<256 * 1024 * 1024 / 4<<endl;return 0; } #B 卡片…

做色流网站网页相册制作

利用Date对象编写程序&#xff0c;判断并输出今天是开学的第几周&#xff0c;星期几。(function(){var startDay new Date(2014,8,1); //根据指定的年月日时分秒设置开学时间为2014/09/01var startMs startDay.getTime();//返回1970年至今的毫秒var startYear startD…

如何选择大良网站建设网页设计和网站设计的区别

1、现有9个小球&#xff0c;已知其中一个球比其它的重&#xff0c;如何只用天平称2次就找出该球&#xff1f; ①把9个球分成三份&#xff0c;三个一份&#xff1b; ②拿出其中两份进行称量&#xff1b;会分为两种情况 若拿出的两份小球称量结果&#xff0c;重量相等&#xff1b…

在控制台执行可列出所有placeholder样式

// 在控制台执行可列出所有placeholder样式 Array.from(document.styleSheets).forEach(sheet => { try { Array.from(sheet.cssRules).forEach(rule => { if(rule.selectorText && /::?-webkit-input-…

国发网站建设建站服务论坛

Layui 是一套开源免费的 Web UI 组件库,采用自身轻量级模块化规范,遵循原生态的 HTML/CSS/JavaScript 开发模式,极易上手,拿来即用,非常适合网页界面的快速构建。在使用了很久之后,也发现了一些问题。 先说优点: layui 采用的是原生的 HTML/CSS/JavaScript 技术开发,上…