- 博客(33)
- 收藏
- 关注
原创 C 语言中的外部变量
它的主要作用是告诉编译器某个变量或函数在其他地方已经定义过,只是这里声明它,而不是重新定义它。假设你有两个文件,一个是 main.c,另一个是 adc.c,你希望在 main.c 中访问 adc.c 中定义的全局变量 adc_buffer。在STM32开发的过程中经常要声明一些可以在全局使用的变量,通常我们建议尽量少使用这样的变量,但是有些缓冲区的声明是不可避免声明成全局的。使用 extern 声明变量不会分配内存,它只告诉编译器该变量存在于其他地方,内存分配在变量定义的地方完成。
2024-12-02 09:31:10
335
原创 WPF(C#)中的组件1:ItemsControl
ItemsControl>是XAML中的一个功能强大的组件,常用于动态渲染,类似VUE中的v-for。不过功能比v-for更加强大,使用方式也更加复杂。下面我将在Prism框架下,写一个简单的Demo演示ItemsControl的功能。2.在VIEWMODEL中设置数据格式。1.在XAML编写绑定的路径。
2024-11-27 14:08:54
484
原创 C#中的异步操作
在 C# 中,异步编程主要是通过 async 和 await 关键字实现的,它们使得异步操作变得更加简洁和易于维护。· 返回值类型可以是 Task(没有返回值的异步方法)、Task<T>(有返回值的异步方法)或 void(通常用于事件处理)。· 异步函数可以返回 Task 或 Task<T>,表示异步任务的结果。· Task<T> 是一个泛型类型,表示返回值为 T 的异步任务。· Task 是异步操作的基本单元,表示一个异步任务。· 用于等待一个返回 Task 的异步操作完成。
2024-11-25 16:21:55
393
原创 C#中的TCP通信
上位机程序通常会主动发起与下位机设备的连接,发送请求,读取设备状态或控制设备工作。相比之下,下位机设备通常只是等待来自上位机的连接请求,因此它们的角色通常是服务器。上位机程序通常需要提供丰富的用户界面(UI)、数据处理能力、报告生成和数据存储等功能。这些功能要求它作为客户端与服务器(即下位机)进行通信,进行数据收发。上位机一般负责监控多个下位机设备,获取数据,发出控制指令,或者对设备进行配置和调整。在上位机(Host Computer)和下位机(通常是嵌入式设备或硬件设备)通信的场景中,通常。
2024-11-14 16:47:55
893
原创 WPF(C#)学习日志10:Prism框架下按键绑定
在Prism框架下,提供了DelegateCommand类用于处理了UI的按键请求,XAML中可以直接采用 Command="{Binding **}" 来绑定这些方法。这个类是一个泛型的类生命时仅需要DelegateCommand即可,同时在XAML中绑定CommandParameter"{Binding **}"
2024-11-06 14:22:10
502
原创 C#中的UDP通信
PDU(Protocol Data Unit)长度是指在网络协议中传输的数据单元的大小。在不同的协议中,PDU的定义和长度计算方法可能会有所不同。
2024-10-29 14:57:08
927
原创 SpringBoot中的常用包的迭代
包主要提供了一些用于 Java EE 和 Jakarta EE 应用程序的注解。命名空间,以反映新的管理和命名约定。因此,最终的选择取决于你使用的框架和版本。如果你在新项目中工作,建议使用。是早期 Java EE 的一部分。随着 Jakarta EE 的发展,许多包被迁移到。是 Jakarta EE 的一部分,主要用于 Jakarta 的新版本,而。这些注解使开发者能够以声明的方式配置和管理组件,简化了代码并提高了可维护性。
2024-10-10 10:09:11
323
原创 Vue学习日志4:HTML中的组件
组件是一个行内元素,主要用于对文本或其他行内元素进行样式化或分组。直接学习vue的同学,HTML中常用的组件可能会不熟悉,这里整理一些常用的组件。不会影响周围元素的布局。由于它是一个行内元素,
2024-09-25 11:07:54
212
原创 WPF(C#)学习日志9:配置生成软件的图标
1.选择当前解决方案的主启动项目(Prism框架下可能有多个项目)3.在应用程序-Win32资源下,配置选择的ico文件。
2024-09-24 10:13:53
313
原创 Vue学习日志2:数据绑定与样式绑定
在Vue.js中,绑定是一个核心概念,用于在数据和DOM之间建立动态的联系。Vue.js 提供了多种方式来实现数据绑定,这些绑定方式可以分为数据绑定和事件绑定。绑定实现的作用就是把,数据和样式导入到模型当中。绑定的数据使用{{}},绑定的样式使用v:bind。中为HTML标签对。中为数据。中定义样式。
2024-08-02 17:06:29
258
原创 Vue学习日志1:环境变量配置与建立项目
Vue是一种渐进式的JavaScript框架,有着声明式和组件化两大特点,方便节约时间成本,并且开发的生态好。Vue现在有Vue2和Vue3两个版本,其代码风格是不通的,但是可以实现相同的功能。
2024-07-22 19:20:35
368
原创 C#中的基本语法:异步线程的控制
线程池是一种管理和维护线程的机制,它允许应用程序重用已创建的线程,以减少线程创建和销毁的开销。线程池使得在应用程序中执行异步操作变得更加高效。在C#中,有多种方法可以执行异步操作。以下是使用异步线程的两种主要方法:使用。在设计程序应用时,将耗时的操作放到异步线程上可以大大提高运行的效率。: 将工作项排入线程池队列中以便执行。
2024-05-07 08:46:45
244
原创 ESP开发日志2:点亮LED灯
有经验的嵌入式工程师都知道,每接触一种新的嵌入式芯片,第一个实验就是点亮LED灯。右上角的ESP12芯片的蓝色LED接在GPIO2上,中间的灯珠有三个GPIO控制。根据原理图,将引脚设置为输出模式,并控制电平,对号为编译程序,右边箭头为下载程序。
2024-04-03 17:11:01
250
原创 ESP开发日志1:环境配置
Arduino IDE(集成开发环境)是一款用于编写、编译和上传代码到Arduino开发板的软件工具。ESP8266是一款由乐鑫(Espressif)公司设计的低成本、高集成度的Wi-Fi模块。该模块集成了微控制器、Wi-Fi连接功能以及相应的外围电路,可以方便地与其他设备进行通信,并实现Wi-Fi连接和网络功能。(3)连接选择你购买的ESP开发板型号,你的设备连接在哪个端口就直接选择哪个端口。(2).安装ESP的环境:文件 -> 首选项 -> 其他开发板管理地址:输入。
2024-04-03 16:47:43
327
原创 WPF(C#)学习日志7:Prism框架4-发布订阅
全局变量是在程序的整个生命周期内都可访问的变量,它们通常存储在程序的全局作用域中。在大多数编程语言中,全局变量不被推荐使用,因为它们可能导致代码不易理解、维护和测试。一方面:数据在需要各个模块之间的传输 另一方面:面向对象编程拒绝全局变量,而在模块之间创建过多的接口函数又不利于解耦。在ViewB的构造函数中我们发布了订阅,因此入股直接打开C,字符串处于默认的状态,此时再打开b回到C发现字符串已经发生了改变。在Prism框架下,事件订阅是一种常见的模式,用于实现模块之间的通信和解耦。
2024-03-27 10:18:36
514
原创 C#中的基本语法:测量程序的运行时间
类表示日期和时间的值。它包含许多属性和方法,允许您执行各种操作,例如获取当前日期时间、解析日期时间字符串、比较日期时间等。类提供了一种方便的方式来测量时间间隔,特别是在性能测试和代码优化时非常有用。它用于表示两个日期时间之间的差异。C# 提供了许多处理时间的类和方法,其中最常用的是。想要在程序运行时测量时间,您可以使用。
2024-03-20 09:13:54
410
原创 WPF(C#)学习日志8:Prism框架下的图像文件操作
因此第一个DEMO设计一个简单的窗口,实现通过WINDOWS的文件管理界面,将任意的图片加载到窗口中,如下图所示。在C#中处理图片文件可以使用.NET Framework提供的System.Drawing命名空间,或者使用更现代的.NET Core/.NET 5+中的System.Drawing.Common库。定义在 Microsoft.Win32下,这与WINFROM的System.Windows.Forms 是不同的,在构建WPF的应用程序时应该谨慎选择。对象是只读的,不能直接修改图像的像素数据。
2024-02-25 12:47:19
834
原创 WPF(C#)学习日志6:Prism框架3-弹窗
弹窗的分类:信息提示弹窗、确认弹窗、错误处理弹窗、输入表单弹窗、对话框-会话(通常会阻止用户与应用程序的其他部分交互,直到对话框被关闭。这里主要Prism中的大多数的组件都是以用户控件实现的,之后会提示要实现一些函数,我们可以直接修复。上下文切换: 弹窗可以在不离开当前界面的情况下展示新的信息,避免了用户在不同页面之间的频繁切换。提高用户体验: 弹窗可以为用户提供更直观、友好的界面,避免用户迷失在复杂的页面结构中。(2)创建弹窗控件,先实现视图模型,识图模型可以通过继承的方式实现。
2023-09-04 10:49:53
3158
原创 WPF(C#)学习日志5:Prism框架2-导航
Prism 提供了一套强大的导航机制,用于管理视图之间的导航流程。创建一个导航至少需要有两个用户控件,分别是控制导航的窗体和导航转跳到的内容,而Prism是基于MVVM的。首先需要构造函数中有相关的声明,构造函数可以选择多个参数,这里不考虑弹窗,暂时写一个,之后我们实现导航按键的回调方法Open。Prism的导航带有类似于浏览器的日志功能,目前的项目还不需要这个功能,因此没有学习和记录,后续使用时会补充。Prism框架有默认的导航区域生命字段,在XAML中如下,如此声明后,需要在VM层实现。
2023-08-30 09:28:48
759
原创 WPF(C#)学习日志4:Prism框架1-项目模板与依赖注入
其中一个解决方案中一共有六个项目,在开发项目的初期阶段我们之关系模块和主要工程FULLAPP,Prism是基于MVVM的,因此主要的窗体和模块都有对应的View和ViewModels。在依赖注入中,组件(或类)不再直接创建或管理它所依赖的对象,而是通过外部容器(如依赖注入容器)来提供这些依赖对象。添加之后要按照框架的结构配置项目,XAML和CS问件中添加相关的引用,并实现未定义的项目成员。简化Prism项目的创建,可以使用项目模板,在visual studio的管理拓展中可以找到该模板。
2023-08-28 11:07:12
1606
原创 WPF(C#)学习日志3:绑定与MVVM
在MVVM中,视图通过数据绑定和命令绑定与视图模型进行交互,视图模型通过调用模型的方法和访问模型的数据来获取或更新数据。MVVM的核心思想是通过数据绑定实现模型和视图之间的解耦,使得数据的变化能够自动地反映在视图上,而不需要手动更新视图。在WPF中,数据绑定是一种重要的技术,它允许将数据源与UI元素进行关联,以实现数据的自动更新和同步。双向绑定(Two-Way Binding):将数据源的值绑定到UI元素,并实现数据的双向同步,可以在UI元素上进行修改并自动更新到数据源。
2023-06-21 11:01:40
891
原创 WPF(C#)学习日志2:触发器与一些常用的快捷键
在 XAML 中,有两种类型的触发器可用:属性触发器(Property Trigger)和事件触发器(Event Trigger)。由于我们将RoutedEvent属性分别赋值为“MouseMove”鼠标进入,“MouseLeave”鼠标离开,并且我们将内容设置为组件本身属性的的改变,因此在检测到鼠标进入或者离开的时候,便无需后端的业务代码即可实现字体大小的变化。触发器(Trigger)是一种用于根据控件的属性状态或事件来改变控件的外观或行为的机制。Ctrl + K + D:格式化选定的代码或整个文档。
2023-06-18 19:50:10
1308
原创 jeston nano学习日志(二)
1.4 检测CUDA与CUDNNCUDA没有默认添加到环境当中和之前换源的操作类似我们把CUDA添加到环境当中,先查看有没有NVCC。结果如下图。ls /usr/local/cuda/binsudo vim ~/.bashrc之后我们修改环境文件,引入的环境变量的语句如下所示:export PATH=/usr/local/cuda/bin:$PATHexport LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH保存.
2022-01-25 19:19:00
3694
原创 jetson nano学习日志(一)
前沿:该学习日志为博主本人学习过程中查找资料的汇总总结,出现问题等的修正记录。1 系统初始化1.1 vim与apt第一次开机会进行镜像的自检,等待一段时间既可开机。进入UI界面后插入USB的网卡,链接WIFI使用浏览器测试网页链接可用之后再回到命令行操作。apt是Advanced Packaging Tool的简称,是一款安装包管理工具。在Ubuntu下,我们可以使用apt命令可用于软件包的安装、删除、清理等,类似于Windows中的软件管理工具。但是该命令需要访问外网。所以我们先进行镜像的
2022-01-25 19:15:47
653
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人