自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(171)
  • 资源 (4)
  • 收藏
  • 关注

原创 EtherCAT的COE报文

动态PDO配置包括PDO Assignment和PDO Configuration,前者指的是,已经有配置好的一堆1600,1601,1602等等PDO,我们可以选择如何组合成我们自己的传输数据。其中,子索引0是分配的PDO数目,其他子索引是PDO映射对象的索引号,也就是前面的0x1600~0x17FF。COE协议是完全遵循CANopen协议的,但针对EtherCAT通信做了一些扩展,索引为0x1c00~0x1c4f,用于设置存储同步管理器的类型,通信参数和PDO数据分配。0x1c12配置示例。

2024-01-04 10:53:42 679

原创 EtherCAT的4种寻址方式解析

我们知道,一个EtherCAT数据帧(frame)里面包含很多个报文(datagram),不管是什么样式的报文,它们的目的只有一个,就是。所以寻址就是以什么方式访问哪个从站的哪个寄存器或内存。理解了寻址方式,就可以结合具体的地址和数据,搞清楚报文对从站到底干了什么事情。EtherCAT数据帧。

2023-10-31 17:00:13 2013

原创 【CANFD详细介绍与CAN区别】

CAN总线采用双线串行通讯协议,基于非破坏性仲裁技术,分布式实时控制,可靠的错误处理和检测机制使CAN总线有很高的安全性,但CAN总线带宽和数据场长度却受到制约。1. CANFD不存在远程帧,CAN报文中的RTR(用于区别标准帧与远程帧)被替换为RRS(远程请求替代位,默认值为0)RTR与RRS:远程传输请求(RTR)在经典CAN中用于标识数据帧和相应的远程帧。1. 可变速率:CAN FD采用了两种位速率。但是,如果比特率保持不变,这也会阻塞CAN总线更长的时间,从而可能延迟关键任务的更高优先级的数据帧。

2023-07-11 22:57:07 4435

原创 【无标题】

CanFestival是一个免费而且开源的CANopen协议栈,较为适合于对CANopen协议栈功能完备性和工作性能要求不高的应用场合。CanFestival完全支持2002年2月发布的CIA DS-301 V4.02标准,并支持CiA DS302中的简明DFC协议和DS305规范。本文讲解了CanFestival库的基本架构和原理,针对ZYNQ平台详细介绍了裸机移植的原理和过程。例如,用于生成节点对象字典源代码的对象字典编辑器,以及便于开发者自由配置编译选项的配置脚本。心跳报文的发送与接收。

2023-06-28 10:38:36 1255

原创 华大单片机KEIL报错_WEAK的解决方案

在使用Keil编译有时出现无法识别__WEAK的问题,截图如下:提示的错误信息如下: 解决办法:因为在Keil中需要定义成才会被识别(非大写的_WEAK),所以在头文件base_types.h文件中添加如下几行定义,编译就OK啦!2、原因分析 ARM系列编译工具链:__CC_ARM、__ICCARM__、__GNUC__、__TASKING__为了解决上面报错的问题,定义了__ICCARM__和__CC_ARM,这里做一个说明:__CC_ARM对应的平台是:ARM RealView:Rea

2022-06-27 13:16:46 6061 3

原创 华大单片机KEIL添加ST-LINK解决方法

使用st-link+keil下载和调试华大单片机的教程首先说明一下,目前只测试了HC32F005,但是理论上讲这个方法是通用的一、下载支持包从华大官网找到你芯片资料页,下载DDL库压缩包和IDE支持包,也就是这两个压缩包。 分别解压,双击IDE支持包里面的MDK_IDE目录的支持包安装。二、添加flash模型1,复制文件打开DDL库文件夹,找到mcu\MDK\config路径里的FLM后缀的文件,复制到你的keil安装目录的ARM\Flash文件夹。2,配置工程打开DDL库文件夹,打开任意一个ex

2022-06-27 11:54:02 1851

原创 stm32cubemx 离线安装及依赖项问题

stm32cubemx 离线安装及依赖项问题,并解决由1.8.0升级为1.8.4的问题

2022-06-06 17:58:14 5194 6

原创 如何安装STM32CubeMX

下载资料官网,www.st.com1、搜索官方资料2、查找STM32 Software Tool中的 STM32CubeMX3、点击进入 STM32CubeMX 后,下拉页面中存在3个版本的CubeMX,选取Windows版本安装流程1、点击运行SetupSTM32CubeMX-6.5.0-Win.exe2、进入安装导航流程,点“Next”3、软件协议条约,同意“Next”4、也是软件

2022-06-06 16:25:48 588

原创 论ESP32自动下载电路

1、先来看看ESP32手册说明的启动运行方式由上图可知,ESP32有SPI启动模式(正常启动)与下载启动模式两种,要实现程序自动下载肯定是需要上电时自动进入下载启动模式,方法就是将GPIO0与GPIO2同时拉低,因GPIO2上电默认下拉,所以可以只考虑GPIO0,同时控制复位引脚(EN)就可以实现自动程序下载,如下:EN由低电平到高电平(上升沿)时CPU复位,复位后检测到GPIO0是低电平,CPU自动进入下载启动模式!2、电路实现分析 CHIP...

2022-03-28 17:30:22 9491 8

原创 TYPE-C引脚定义及原理图

母头公头引脚定义

2022-03-11 11:49:15 40171

原创 74HC595移位寄存器使用方法

74HC595是一个8位串行输入、平行输出的位移缓存器:平行输出为三态输出(三态指的是搞电平1、低电平0、高阻态而非悬空)。在SCK的上升沿,单行数据由SDL输入到内部的8位位移缓存器,并由Q7‘输出(可以连接到下一个74HC595的输入,这样可以组成多级级联设计),而平行输出则是在LCK的上升沿将在8位位移缓存器的数据存人到8位平行输出缓存器。当串行数据输人端OE的控制信号为低使能时,平行输出端的输出值等于平行输出缓存器所存储的值。而当OE为高电位,也就是输出关闭时,平行输出端会维持在高阻抗状态。74

2022-01-10 15:56:50 6004 1

原创 C#判断字符串中是否包含汉字的三种方法分享

判断一个字符是不是汉字通常有三种方法,第一种用 ASCII 码判断,第二种用汉字的 UNICODE 编码范围判 断,第三种用正则表达式判断,以下是具体方法1、用ASCII码判断  在 ASCII码表中,英文的范围是0-127,而汉字则是大于127,具体代码如下:string text = "是不是汉字,ABC,柯乐义"; for (int i = 0; i < text.Length; i++) { if ((int)text[i] ...

2021-12-08 10:03:45 7229

原创 WPF ContextMenu 在MVVM模式中绑定 Command及使用CommandParameter传参

ContextMenu无论定义在.cs或.xaml文件中,都不继承父级的DataContext,所以如果要绑定父级的DataContext,直接DataContext=“{Binding}”是行不通的不能绑父级,但是能绑资源第一步:定义一个中间类用来做资源对象public class BindingProxy : Freezable { #region Overrides of Freezable protected override Freezabl

2021-08-09 16:55:46 2467

原创 使用 XAML 格式化工具:XAML Styler

1. XAML 格式化主要的难题是下面几个:如果所有属性都写在同一行,它太宽了很难看到后面的属性 如果每个属性单独一行,它又太长了很难看清楚它的结构 属性之间没有排序,重要属性的属性找起来很困难 团队没有统一的标准,不小心格式化一下代码的话全部都会变,CodeReview 烦死个人如果不想得过且过忍受上述这些问题的话,可以试试用 XAML Styler 这个工具,它正好解决了我最想解决的问题。2. 安装 XAML StylerXAML Styler 是一个 VisualStudio插件(

2021-02-08 11:33:58 4270 2

原创 github图片不显示问题解决

今天在github上查阅资料,但是页面的图片不显示,如下图所示:解决方法,打开路径C:\Windows\System32\drivers\etc下的hosts文件,文件不要选错了哈,使用记事本打开就可以打开内容如下:在最后加上# GitHub Start 192.30.253.112 github.com 192.30.253.119 gist.github.com151.101.184.133 assets-cdn.github.com151.101

2021-01-12 10:08:42 744 4

原创 WPF编程,曲线控件DynamicDataDisplay的简单案例

DynamicDataDisplay.dll是一个添加动态数据到WPF应用程序交互的可视化控件。它允许创建线图,气泡图,热图和其他复杂的二维图。以下代码是基于0.3.0.0版本的DLL,最新的DLL某些方法已不适用。第一部分 安装1、安装右击项目,管理NUGET包,在浏览中查找:DynamicDataDisplay。可以看到已经停止更新比较久了……因为不在维护,此控件似乎只能用于临时展示些小数量的数据,数量多的情况下性能无法保证。除此之外,也可以在网上下载单独的DLL,引入到项目中

2021-01-11 17:37:52 5792 2

原创 WPF编程,曲线控件DynamicDataDisplay的源码分析

扣扣技术交流群:460189483源码下载地址https://archive.codeplex.com/?p=dynamicdatadisplay目录LineTestSampleIsolineSampleApp​SimulationPlotterLayoutPanels5x1000Charts​ArcSegmentPlottingDateTimeAxisBug时间轴DescriptionChangeOnTheFly动态更改线的粗细..

2021-01-11 17:17:30 1782

原创 Visual Studio NuGet离线安装包

扣扣技术交流群:460189483一:Nuget简介:NuGet 是免费、开源的包管理开发工具,专注于在 .NET 应用开发过程中,简单地合并第三方的组件库。当需要分享开发的工具或是库,需要建立一个Nuget package,然后把这个package放到Nuget的站点。如果想要使用别人已经开发好的工具或是库,只需要从站点获得这个package,并且安装到自己的Visual Studio项目或是解决方案里。NuGet能更方便地把一些dll和文件(如jquery)添加到项目中,而不需要从文件中

2021-01-11 15:56:03 6179 1

原创 WPF图片模糊的解决之路

设计稿转为xaml后,设计师开始review UI了,发现图片都模糊了。这一张很神奇,三个图片都是同一张,中间的那个最清楚,上面的这个左右两边清楚,下面的那个四个边都不清楚。这一张,右边是原图,左边是模糊的图,同比放大的。于是开始查原因:1. 检查图片,png, DPI=72,Stretch="None",原图尺寸和xaml里面写的尺寸一致。如果替换为大尺寸的原图,使用时,size写的小一点,同比例缩小,没问题。2. 第一反应是像素对齐,SnapsToDevicePixels=

2020-12-14 11:30:14 445

原创 WPF中加载并使用图像资源

一开始如下图:首先右击“WpfApplication”——添加——新建文件夹,取名Image然后右击“Image”文件夹——添加——现有项然后随便找个图片,如下图:然后更改一下MainWindow.xaml中的代码:<Window x:Class="WpfApplication3.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="ht

2020-11-30 15:14:53 4504

原创 WP ListBox 遍历DataTemplate(获取所有控件)

项目需求,ListBox选中切换其选中项的Image控件的图片,其它每项ListBoxItem的相应Image控件都设置为未选中图片.解决方案适用于ComboBox等:1.先看xaml文件:<DataTemplate x:Name="BusTemplate" x:Key="LBDataTemplate"> <StackPanel> <StackPanel Orientation="Horizontal" Margin="10">

2020-11-30 15:08:08 673

原创 WPF右键菜单及样式

WPF中的右键菜单主要是通过ContextMenu来实现,ContextMenu的使用有两种方式一、.在Resources中声明,在控件中使用。1.在Resources中添加ContextMenu <Window.Resources> <ContextMenu x:Key="ContextMenu"> <MenuItem Name="MiFullScreen" Header="全屏"/>

2020-11-27 17:18:23 6392

原创 WPF TextBlock的数据绑定

绑定单个数据源:<TextBlock Text="{Binding PrintTimes}" Height="auto" Width="500" HorizontalAlignment="Center" />现在,想绑定另一个属性名是否可以将两个或多个值同时绑定?可以用如下代码实现<TextBlock> <Run Text="Name = "/> <Run Text="{Binding Name}"/> <Run ...

2020-11-20 13:46:32 12392 1

原创 C# 生成随机数的3种方式

随机数的定义为:产生的所有数字毫无关系.在实际应用中很多地方会用到随机数,比如需要生成唯一的订单号.在C#中获取随机数有三种方法:一.Random 类Random类默认的无参构造函数可以根据当前系统时钟为种子,进行一系列算法得出要求范围内的伪随机数.Random rd = new Random();int i = rd.Next();这种随机数可以达到一些要求较低的目标,但是如果在高并发的情况下,Random类所取到的系统时钟种子接近甚至完全一样,就很有可能出现重复,...

2020-11-18 17:51:16 2041

原创 C# 获取随机可用端口号

TCP与UDP段结构中端口地址都是16比特,可以有在0---65535范围内的端口号。对于这65536个端口号有以下的使用规定:(1)端口号小于256的定义为常用端口,服务器一般都是通过常用端口号来识别的。任何TCP/IP实现所提供的服务都用1---1023之间的端口号,是由IANA来管理的;(2)客户端只需保证该端口号在本机上是惟一的就可以了。客户端口号因存在时间很短暂又称临时端口号;(3)大多数TCP/IP实现给临时端口号分配1024---5000之间的端口号。大于5000的端口号是为其他服

2020-11-18 17:17:22 2136

原创 WPF label、TextBlock中如何控制数据显示的位数

例如:我想在Label中保留两位有效小数位<Label> <Label.Content> <TextBlock Text="{Binding PlanMu, StringFormat={}{0:F2}}"></TextBlock> </Label.Content></Label>

2020-09-02 14:48:19 2961

原创 WPF的文件选择与保存

1.引用Windows.Form2.打开文件System.Windows.Forms.OpenFileDialog openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); openFileDialog1.InitialDirectory = "c:\\"; openFileDialog1.Filter = "(*.mdb)|*.mdb"; openFileD

2020-08-28 14:59:28 1058

原创 C# 键值对

1.初始化一个键值对1 //初始化定义一个键值对,注意最后的括号2 Dictionary<int, string> dic = new Dictionary<int, string>();2.为键值对添加元素1 //键值对的Add函数2 dic.Add(2, "zhao");3 dic.Add(4, "qian");4 dic.Add(6, "sun");5 dic.Add(8, "li");3.键值对的ContainsKey和ContainsVa.

2020-08-10 17:04:53 11755 1

转载 如何获取STM32 MCU的唯一ID

1、基本描述在STM32的全系列MCU中均有一个96位的唯一设备标识符。在ST的相关资料中,对其功能的描述有3各方面:用作序列号(例如 USB 字符串序列号或其它终端应用程序) 在对内部 Flash 进行编程前将唯一 ID 与软件加密原语和协议结合使用时用作安全密钥以提高 Flash 中代码的安全性 激活安全自举过程等在资料中对其特性的描述是:96 位的唯一设备标识符提供了一个对于任何设备和任何上下文都唯一的参考号码。用户永远不能改变这些位。96 位的唯一设备标识符也可以以单字节/半字/字等不

2020-08-06 14:15:58 1193 1

原创 ListView如何单独刷新一个item

对于ListView数据的刷新大家都知道,改变Adapter的数据源,然后调用Adapter的notifyDateSetChanged()方法即可。  但是我在做公司项目的时候,我的listview有几个item,只有一个item数据需要实时更新,其它都是图片跟文字,不需要更新。因为要实时更新,所以要不停的调用notifyDateSetChanged刷新数据。这样会不停的重新绘制整个listview的界面,性能开销非常大。而且item有图片的话,每个item的图片都需要重新加载,就算图片做了内存缓存,刷

2020-07-27 11:23:49 1418

转载 Android 限制显示小数点位数

转载地址https://blog.csdn.net/qq_20328181/article/details/78685998Android 限制显示小数点后的两位小数限制Android显示小数点后两位小数格式可以使用两种方法(个人在项目中使用的,并不代表就这两种,还有很多),好了废话不多说,上内容。1.第一张方法:使用DecimalFormat APIDecimalFormat format = new DecimalFormat("#.##"); //此处#.##表示2位小数S..

2020-07-14 15:31:32 1326

原创 Android 开关控件Switch

目录:1.应用场景与概述2.常用属性3.简单使用4.更改默认Switch的样式5.自定义Switch1.应用场景与概述Switch是在4.0以后推出的,所以要注意开发时的minsdk设置,google在API 21后也推出support v7 包下的SwitchCompa的Material Design开关控件,对低版本的有了更好的的支持。其实switch的应用场景和ToggleButton类似,多应用于两种状态的切换。2...

2020-07-13 17:01:15 13083

原创 一文读懂麦克纳姆轮全向移动原理及剖析

参考文章,计算过程小白可能看不懂,于是做进一步补充,写出该文https://zhuanlan.zhihu.com/p/20282234?utm_source=qq&utm_medium=social什么是麦克纳姆轮在竞赛机器人和特殊工种机器人中,全向移动经常是一个必需的功能。「全向移动」意味着可以在平面内做出任意方向平移同时自转的动作。为了实现全向移动,一般机器人会使用「全向轮」(Omni Wheel)或「麦克纳姆轮」(Mecanum Wheel)这两种特殊轮子。全向轮:.

2020-07-09 14:57:32 55507 6

原创 C#模拟键盘输入、鼠标移动和点击、设置光标位置及控制应用程序的显示

主要是储备一些知识,防备以后用的时候方便查找资料C# 模拟鼠标移动与点击https://www.cnblogs.com/blackice/p/3418414.html使用C#模拟键盘输入、鼠标移动和点击、设置光标位置及控制应用程序的显示https://www.cnblogs.com/makesense/p/6215732.htmlC# 系统应用之鼠标模拟技术及自动操作鼠标https://www.cnblogs.com/sanler/p/7474473.html...

2020-06-29 16:47:16 3536

原创 WPF绘制几何图形

一 WPF的基本图形对象ShapeWPF图形的基类是Shape,所有的wpf图形类都是继承于Shape。WPF提供了许多现成的Shape对象。所有形状对象都从Shape类继承。可用的形状对象包括Ellipse、Line、Path、PolygonPolyline和Rectangle。Shape对象共享以下公共属性。 Stroke:描述形状轮廓的绘制方式。 StrokeThickness:描述形状轮廓的厚度。 Fill:描述形状内部如何绘制。 用于指定坐标和顶点...

2020-06-29 16:34:08 3368

原创 WPF中三种方法得到当前屏幕的宽和高

WPF程序中的单位是与设备无关的单位,每个单位是1/96英寸,如果电脑的DPI设置为96(每个英寸96个像素),那么此时每个WPF单位对应一个像素,不过如果电脑的DPI设备为120(每个英寸120个像素),那此时每个WPF单位对应应该是120/96=1.25个像素一般在程序中我们常常需要得到当前屏幕的宽和高,常见做法有:1.这两个方法可以返回当前屏幕选择的分辨率,该分辨率是以像素为单位,在DPI为96的情况下我们可以利用它们来做一些控件的定位,因为此时WPF单位对应一个像素,而当DPI非96的情况下

2020-06-23 11:55:40 4017 1

原创 pitch yaw roll是什么

关于旋转永远是做游戏的难点和混乱点。我们知道表示一个旋转有多种方式,简单的欧拉角,复杂点的四元数,再复杂点的矩阵。之前接触unity可以用四元数和欧拉角两种方式表示旋转,最近一直研究虚幻引擎,目前只看到了欧拉角这一种旋转方式。欧拉角是表达旋转的最简单的一种方式,形式上它是一个三维向量,其值分别代表物体绕坐标系三个轴(x,y,z轴)的旋转角度。这样的话,很容易想到,同样的一个三维向量,代表了绕x,y,z的旋转值,先进行那个旋转是否对结果有影响呢?显然是有影响的,可以拿着你的手机试一下,不同的旋转顺序会代表

2020-06-16 16:08:26 835

原创 小车走不直的原因

这个问题做过智能小车的都应该遇到过,因为在目前的智能小车中,差分驱动仍是主流。 所谓“差分驱动”,就是左、右轮分别用电机驱动,通过改变两个电机的转速实现小车前进和转向。 “小车走不直”的症结也正是缘于此! 因为两个电机驱动的差异性,导致两个轮子转速不同,就使得小车本该直线行驶的轨迹发生偏移,也就是俗称的“走不直”。 首先,明确一点:两个电机驱动特性完全相同几乎是不可能的,尤其是在做智能小车这个层次的投入上。除了电机的特性差异外,减速机构的差异,以及运转过程中的扰动,如轮子瞬间打滑、有微小的障碍物等因素,都会

2020-06-10 17:57:09 9334

原创 麦克纳姆轮全向移动原理概述

分布我们来画个受力示意图吧先来看看前后移动前进向左图中红色实线箭头是车轮向前转产生的摩擦力蓝色箭头是车轮向后转产生的摩擦力虚线是分力于是左边的小车就会向前跑,右边的小车会向后跑接下来我们画原地旋转于是左边的小车就顺时针旋转右边的小车逆时针旋转让我们再来看看平移左边的小车向左平移右边的小车向右平移接下来看看斜着跑只要同向转动对角线上两个轮子,就能斜着跑啦...

2020-06-10 16:59:11 8044 3

原创 Android UI之ImageView旋转的几种方式

我整理了一下,大概有四种,亲测成功三种。第一种,效率较低,不过看许多博客都使用这种方法,即旋转bitmap:Bitmap bitmap = ((BitmapDrawable)getResources().getDrawable(R.drawable.ic_launcher)).getBitmap();Matrix matrix = new Matrix();matrix.setRotate(90);Bitmap new = Bitmap.create(bitmap,0,bitmap.get

2020-06-05 11:29:52 1705

stm32f427工程demo

stm32f427工程demo 亲测可用,具体是STM32F427VIT6的工程

2018-11-01

MPU6500 datasheet及register map

MPU6500 datasheet及register map,下载不容易,有寄存器映射

2018-10-12

stm32f767-freeRTOS-LWIP

stm32f767-freeRTOS-LWIP完整的工程,亲测可用,注意CPU是stm32f767的,其它cpu需要自己更改工程

2018-10-09

stm32f4xx+freeRTOS+LWIP移植

stm32f4xx+freeRTOS+LWIP移植,亲测可用的,

2018-09-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除