WinUI(WASDK)项目实践——优雅的开发上位机应用(新)
摘要
这就是一个记录自己进行WinUI项目实践的博客,项目开源地址如下,觉得有帮助的可以去看看,因为项目都开源了,所以保姆级的讲解肯定不如直接看代码来的实在了。
为什么叫新
因为之前发过一篇讲开发上位机应用的博客,所以作为区分就把这篇成为新的一篇了,微软最新的windows应用开发框架是WindowsAppSDK这个大家都有听说过,当然大家实际项目中使用的多不多就不知道了。
有人说WPF还能再战很多年,对于我来说,我刚做客户端开发的时候接触的就是UWP,现在要我返回去做WPF我感觉有点不习惯,当然做Winform的话我还能适应。言归正传,年轻人都喜欢新事物,所以我也不例外就拿最新的框架上手了。
项目实践和DEMO的区别
项目实践个人感觉是要做一套有正常操作流程的应用,并且保证大多数的场景下都不会出异常,这样用起来才能像个正常软件一样,要是demo的话肯定就是只是分单元的验证某个功能的正常与否。
在框架选定之后,肯定就是进行功能的拆分,方案的查找验证,然后再进行代码的编写。
以我写的电子脑壳应用为例分析

功能列表
- 时间显示
- 动作控制
- 人脸数据展示和表情识别
需要验证的功能
- 摄像头的操作
- usb读写
这些都考量好了,就可以进行实际的开发了。
实践中遇到的一些挑战
1. 摄像头帧处理事件
先来一张应用首页图

这个电子脑壳的应用已经开源了,项目地址
就是在我使用社区工具包了里的相机帮助类处理相机的帧到达事件时,本来在uwp里正常的代码,放到WinUI里就会莫名的失效,现象就是帧到达事件不会持续触发了,这个问题我在翻阅uwp的文档的时候好像文档中有提到,大概是如下的问题,我想这个应该在WinUI里应该也有同样的问题。

所以我就找了官方的DEMO进行验证,终于把uwp的代码迁移到WinUI之后验证了这个问题。
迁移后的摄像头操作demo地址如下 项目地址
DEMO图如下

2. 串口连接触发事件
之前我在UWP里用的好好的代码,放到WinUI项目的时候怎么都不触发了,我以为WinUI有BUG就没管了,直到后来看到了官方文档,才发现自己一直都忘了调用这个Start方法,表示很丢人。

之所以需要这个功能,是因为我想实现设备的热插拔功能,这样拔掉插上设备就不用重启应用了。
临时方案的处理
对于摄像头帧触发事件的临时方案我选择了用OpenCVSharp处理摄像头的数据,然后再处理帧 将帧转化成SoftwareBitmap然后再用windows AI库进行表情识别。
用起来感觉也还可以就是有些消耗CPU资源。
其他的一些小问题,因为WinUI是基于.net6运行的,所以.net的库基本上都能使用,而且WinUI应用权限比UWP高多了,可以随心所欲的做一些事情,所以解决起来也是很容易的。
心得感悟
WinUI虽不完美,但是未来可期,希望微软的团队能够好好的完善这个框架,不能像UWP那样半死不活。
还有在做项目实践的时候,框架选定好了,一定不要反复横跳,要想办法解决问题,而不是换框架,方法肯定有很多,需要我们认真阅读文档和找到一些使用方式,即使官方确实不支持,我们也可以反馈给官方,或者自己参与贡献,这样也会促进框架的完善。
特别鸣谢以及参考推荐文档
感谢dino.c大佬的一个番茄钟,因为我的表盘其实就是抄他番茄钟的代码。
当然还要感谢超超,毕竟有些代码还是抄他的。
参考推荐文档如下
WinUI(WASDK)项目实践——优雅的开发上位机应用(新)的更多相关文章
- 用WindowsAppSDK(WASDK)优雅的开发上位机应用
C#开发上位机应用的一些选择 如果你不想看介绍,可以直接跳到优雅开发示例那里. 1. WASDK(WinUI 3) Windows 应用 SDK 是一组新的开发人员组件和工具,它们代表着 Window ...
- vc++MFC开发上位机程序
用vc++MFC开发过不少跟单片机通讯的上位机程序了.搞懂了MFC架构,开发还是很快的,与底层单片机程序通讯,可以用串口.usb.网络.短信形式.串口现在用的越来越少了,一般电脑跟单片机在一块,使用串 ...
- MFC开发上位机到底用Dialog结构还是文档结构?
最近要跟着导师一起开发一款大型上位机.MFC新人在考虑用对话框结构还是文档结构. 虽然说书上说大型结构的软件都需要文档结构,但是目前来看,对话框可以实现功能,并且对话框的程序更小一些,节省资源加载速度 ...
- VS2013开发上位机并调用MSCcommm控件的方式
此文章适合VC++串口通信入门 一.页面布局及添加控件 1, 安装好vs2010如图 2, 新建一个基于VC++的MFC项目comm 注意:点击ok,然后next,这时候要将application t ...
- BizTalk 2010/2013 EDI B2B项目实践(1)
BizTalk 2010/2013 EDI B2B项目实践(1) BizTalk开发标准EDI B2B是件非常容易的事情,但对于初学者可能有很多专业术语不太理解,不知道如何下手,我之前开始学的时候虽然 ...
- C#上位机开发(二)—— Hello,World
上一篇大致了解了一下单片机实际项目开发中上位机开发部分的内容以及VS下载与安装,按照编程惯例,接下来就是“Hello,World!” 1.新建C#项目工程 首先选择新建Windows窗体应用(.NET ...
- 2018最新mfc作为上位机接收硬件端USB或串口数据显示成图片 解决串口接收数据丢字节丢包问题
原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/9490616.html 本文用的是VS2013MFC写串口数据接收: 第一步:首先建立一个MFC ...
- 物联网框架ServerSuperIO.Core(.netcore)跨平台,一套设备驱动通吃嵌入式、上位机、云服务
1. 概述... 2 2. ServerSuperIO.Core跨平台开发环境... 2 3. ServerSuperIO.Core特点... 2 4. Ser ...
- LabVIEW上位机与串口通信
渊源 大一的时候,学校开了门公共选修课,叫LabVIEW编程,当时的我当然还不知道LabVIEW是啥东东,但还是选了.上课的老师是机械学院的一个副教授.他给我们展示了好几个用LabVIEW做的项目.譬 ...
随机推荐
- vue 封装弹窗组件注意
父组件 <template> <div> <p @click="onDelete"> 打开 </p> <!-- 弹框 --&g ...
- 【机器学习】K-means聚类分析
前言 聚类问题是无监督学习的问题,算法思想就是物以类聚,人以群分,聚类算法感知样本间的相似度,进行类别归纳,对新输入进行输出预测,输出变量取有限个离散值.本次我们使用两种方法对鸢尾花数据进行聚类. 无 ...
- 开发人员要学的Docker从入门到日常命令使用(通俗易懂),专业运维人员请勿点!
一.介绍Docker 1.引言 问题1:开发人员告诉测试说自己的项目已经做好了,给你一个发布包,你去测试吧. ## 测试人员,为什么我运行会报错? ## 开发人员说,我本地运行没有问题呀! 解答 ...
- Nginx越界读取缓存漏洞 CVE-2017-7529
1.漏洞描述 Nginx在反向代理站点的时候,通常会将一些文件进行缓存,特别是静态文件.缓存的部分存储在文件中,每个缓存文件包括"文件头"+"HTTP返回包头" ...
- WannaRen来袭:螣龙安科带你盘点那些年的勒索病毒
2020年4月7日,360CERT监测发现网络上出现一款新型勒索病毒wannaRen,该勒索病毒会加密windows系统中几乎所有的文件,并且以.WannaRen作为后缀.360CERT该事件评定:危 ...
- docker安装Nessus
Nessus家庭版最大只支持扫描16个主机,但利用docker无限使用,当然虚拟机快照也可以. 关于网上其他的破解版,我是没有成功(显示成功了,其实是自慰版),所以才弄得这个镜像 提供两个镜像(不懂d ...
- Root用户无法使用Tab补齐解决
1. sudo vim /etc/bash.bashrc 2.取消以下注释 #if [ -f /etc/bash_completion ]; then # . /etc/bash_completion ...
- ooday03 Java_引用类型数组_继承_super_向上造型
引用类型数组: 点击查看代码 1)Bomb[] bs = new Bomb[3]; bs[0] = new Bomb(100,200); bs[1] = new Bomb(200,300); bs[2 ...
- 不是第七代的 Win 7
贡献者:历史上的今天 Windows 7 是由微软公司(Microsoft)2009 年 10 月 22 日发布的桌面端操作系统,它影响了每个行业的方方面面,以至于很多人仍然在日常生活和工作中使用它. ...
- 「一本通 1.4 例 2」[USACO3.2]魔板 Magic Squares
[USACO3.2]魔板 Magic Squares 题目背景 在成功地发明了魔方之后,鲁比克先生发明了它的二维版本,称作魔板.这是一张有8个大小相同的格子的魔板: 1 2 3 4 8 7 6 5 题 ...