摘要

这就是一个记录自己进行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大佬的一个番茄钟,因为我的表盘其实就是抄他番茄钟的代码。

感谢h哥火火给的一些思路。

当然还要感谢超超,毕竟有些代码还是抄他的。

参考推荐文档如下

一个番茄钟

Win2D samples

opencvsharp

WindowsAppSDK

WindowsCommunityToolkit

ElectronBot

ElectronBot.DotNet

LibUsbDotNet

WinUI(WASDK)项目实践——优雅的开发上位机应用(新)的更多相关文章

  1. 用WindowsAppSDK(WASDK)优雅的开发上位机应用

    C#开发上位机应用的一些选择 如果你不想看介绍,可以直接跳到优雅开发示例那里. 1. WASDK(WinUI 3) Windows 应用 SDK 是一组新的开发人员组件和工具,它们代表着 Window ...

  2. vc++MFC开发上位机程序

    用vc++MFC开发过不少跟单片机通讯的上位机程序了.搞懂了MFC架构,开发还是很快的,与底层单片机程序通讯,可以用串口.usb.网络.短信形式.串口现在用的越来越少了,一般电脑跟单片机在一块,使用串 ...

  3. MFC开发上位机到底用Dialog结构还是文档结构?

    最近要跟着导师一起开发一款大型上位机.MFC新人在考虑用对话框结构还是文档结构. 虽然说书上说大型结构的软件都需要文档结构,但是目前来看,对话框可以实现功能,并且对话框的程序更小一些,节省资源加载速度 ...

  4. VS2013开发上位机并调用MSCcommm控件的方式

    此文章适合VC++串口通信入门 一.页面布局及添加控件 1, 安装好vs2010如图 2, 新建一个基于VC++的MFC项目comm 注意:点击ok,然后next,这时候要将application t ...

  5. BizTalk 2010/2013 EDI B2B项目实践(1)

    BizTalk 2010/2013 EDI B2B项目实践(1) BizTalk开发标准EDI B2B是件非常容易的事情,但对于初学者可能有很多专业术语不太理解,不知道如何下手,我之前开始学的时候虽然 ...

  6. C#上位机开发(二)—— Hello,World

    上一篇大致了解了一下单片机实际项目开发中上位机开发部分的内容以及VS下载与安装,按照编程惯例,接下来就是“Hello,World!” 1.新建C#项目工程 首先选择新建Windows窗体应用(.NET ...

  7. 2018最新mfc作为上位机接收硬件端USB或串口数据显示成图片 解决串口接收数据丢字节丢包问题

    原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/9490616.html 本文用的是VS2013MFC写串口数据接收: 第一步:首先建立一个MFC ...

  8. 物联网框架ServerSuperIO.Core(.netcore)跨平台,一套设备驱动通吃嵌入式、上位机、云服务

    1.      概述... 2 2.      ServerSuperIO.Core跨平台开发环境... 2 3.      ServerSuperIO.Core特点... 2 4.      Ser ...

  9. LabVIEW上位机与串口通信

    渊源 大一的时候,学校开了门公共选修课,叫LabVIEW编程,当时的我当然还不知道LabVIEW是啥东东,但还是选了.上课的老师是机械学院的一个副教授.他给我们展示了好几个用LabVIEW做的项目.譬 ...

随机推荐

  1. BUUCTF-ningen

    ningen 从16进制看可以发现其中有压缩包,存在着504b0304,使用binwalk分离即可 压缩包带密码,根据提示是四位纯数字 使用ARCHPR破解即可

  2. 理论+案例,带你掌握Angular依赖注入模式的应用

    摘要:介绍了Angular中依赖注入是如何查找依赖,如何配置提供商,如何用限定和过滤作用的装饰器拿到想要的实例,进一步通过N个案例分析如何结合依赖注入的知识点来解决开发编程中会遇到的问题. 本文分享自 ...

  3. SAP OOALV- 合计

    TYPES: BEGIN OF ty_mara, srno LIKE adrc-name1, " Storing the total text matnr LIKE mara-matnr, ...

  4. 端口被占用的问题解决 Web server failed to start. Port ×× was already in use

    出现此问题是端口被占用了,只需要关闭正在使用的端口就行 解决思路: 1.在服务器中更改port端口号,改为不冲突,没有被占用的端口. 2.找出被占用的端口,结束被占用的端口 解决结束被占用的端口的方法 ...

  5. docker-compose: 未找到命令,安装docker-compose

    1.安装扩展源 sudo yum -y install epel-release 2.安装python-pip模块 sudo yum install python-pip 3.通过命令进行安装 cd ...

  6. 业务可视化-让你的流程图"Run"起来

    前言 最近在研究业务可视化的问题,在日常的工作中,流程图和代码往往是分开管理的. 一个被维护多次的系统,到最后流程图和代码是否匹配这个都很难说. 于是一直有一个想法,让程序直接读流程图,根据流程图的配 ...

  7. NC212914 牛牛与后缀表达式

    NC212914 牛牛与后缀表达式 题目 题目描述 给定牛牛一个后缀表达式 \(s\) ,计算它的结果,例如,1+1对应的后缀表达式为1#1#+,'#'作为操作数的结束符号. 其中,表达式中只含有'+ ...

  8. SpringMVC指定配置文件位置和名称,控制Servlet的加载时间

    1. 2.

  9. C#《原CSharp》第三回 万文疑谋生思绪 璃月港口见清玉

    第三回 万文疑谋生思绪 璃月港口见清玉 ===================================================================== 云溪愣了下,在他的认 ...

  10. 阿里云 python3 使用duplicity

    前言 公司业务中使用的备份工具一直是alicloud-duplicity,一直也没研究.后来业务出问题了,看了看,原来是基于duplicity开发的,使用了半天,感觉很不错,我感觉他的特点有: 加密备 ...