<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[lph1972的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/lph1972</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; lph1972]]></copyright><item><title><![CDATA[微秒延时us]]></title><link>https://blog.youkuaiyun.com/lph1972/article/details/154355297</link><guid>https://blog.youkuaiyun.com/lph1972/article/details/154355297</guid><author>lph1972</author><pubDate>Mon, 03 Nov 2025 17:46:26 +0800</pubDate><description><![CDATA[例：如果HCLK=72MHz，则72,000,000/1,000,000 = 72，即每72个时钟周期产生一次中断。使用HAL库的标准毫秒延时函数，但因为SysTick已被重新配置为微秒级别，所以实际上延时的是(us-1)微秒。这个函数提供了一个快速实现微秒延时的方法，但在对时序要求严格的场合可能需要更精确的方案。这是必要的，因为HAL库的其他功能（如超时检测）依赖于1ms的SysTick。除以1,000,000：将SysTick定时器配置为每1微秒中断一次。：在延时期间如果发生中断，可能影响延时精度。]]></description><category></category></item><item><title><![CDATA[livecharts 装版本8]]></title><link>https://blog.youkuaiyun.com/lph1972/article/details/149405713</link><guid>https://blog.youkuaiyun.com/lph1972/article/details/149405713</guid><author>lph1972</author><pubDate>Wed, 16 Jul 2025 19:59:06 +0800</pubDate><description><![CDATA[1   datagridview传datatable  livecharts传chartvalues<ObservablePoint>]]></description><category></category></item><item><title><![CDATA[s7netplus]]></title><link>https://blog.youkuaiyun.com/lph1972/article/details/149308811</link><guid>https://blog.youkuaiyun.com/lph1972/article/details/149308811</guid><author>lph1972</author><pubDate>Sun, 13 Jul 2025 13:15:45 +0800</pubDate><description><![CDATA[/ eg: 比如最后一个DBW是16，那么数据类型长度为2，count就需要传18才能获取到。// count : 偏移量(offset)，设置多少就获取到具体位置的数据。// DataType: 数据类型，DB或Memory等。region 批量数据项读取 / 读取整个DB。readbytes 最后一个是传终点地址。用linq的 skip和take取数据。read是从首地址开始读 用强转截取。#region 单个数据项读取。]]></description><category></category></item><item><title><![CDATA[TouchSocket]]></title><link>https://blog.youkuaiyun.com/lph1972/article/details/149300639</link><guid>https://blog.youkuaiyun.com/lph1972/article/details/149300639</guid><author>lph1972</author><pubDate>Sat, 12 Jul 2025 23:01:41 +0800</pubDate><description><![CDATA[client.Id返回的是一个字符串  不需要转换 发数据要传Id。]]></description><category></category></item><item><title><![CDATA[linq反射实现分页逻辑]]></title><link>https://blog.youkuaiyun.com/lph1972/article/details/149271437</link><guid>https://blog.youkuaiyun.com/lph1972/article/details/149271437</guid><author>lph1972</author><pubDate>Fri, 11 Jul 2025 12:22:19 +0800</pubDate><description><![CDATA[【代码】linq反射实现分页逻辑。]]></description><category></category></item><item><title><![CDATA[ModernWPFUI]]></title><link>https://blog.youkuaiyun.com/lph1972/article/details/149250407</link><guid>https://blog.youkuaiyun.com/lph1972/article/details/149250407</guid><author>lph1972</author><pubDate>Thu, 10 Jul 2025 14:58:27 +0800</pubDate><description><![CDATA[【代码】ModernWPFUI。]]></description><category></category></item><item><title><![CDATA[ValueConverter转换器WPF]]></title><link>https://blog.youkuaiyun.com/lph1972/article/details/149245249</link><guid>https://blog.youkuaiyun.com/lph1972/article/details/149245249</guid><author>lph1972</author><pubDate>Thu, 10 Jul 2025 12:07:28 +0800</pubDate><description><![CDATA[做不到翻转 做不到flase状态自定义。命名空间只要细到文件夹 不需要到文件、自己写Converter。]]></description><category></category></item><item><title><![CDATA[WpfAutoGrid.Core]]></title><link>https://blog.youkuaiyun.com/lph1972/article/details/149234681</link><guid>https://blog.youkuaiyun.com/lph1972/article/details/149234681</guid><author>lph1972</author><pubDate>Wed, 09 Jul 2025 22:11:28 +0800</pubDate><description><![CDATA[【代码】WpfAutoGrid.Core。]]></description><category></category></item><item><title><![CDATA[工程改Mvvm]]></title><link>https://blog.youkuaiyun.com/lph1972/article/details/149234083</link><guid>https://blog.youkuaiyun.com/lph1972/article/details/149234083</guid><author>lph1972</author><pubDate>Wed, 09 Jul 2025 21:36:19 +0800</pubDate><description><![CDATA[属性得自己写 用不了[ObversableProperty]    RelayCommand得自己实现。总结    有mainwindow的地方都要改  路径多加一个views。加DataContext。改StartUpUri。]]></description><category></category></item><item><title><![CDATA[命令绑定非默认事件]]></title><link>https://blog.youkuaiyun.com/lph1972/article/details/149224295</link><guid>https://blog.youkuaiyun.com/lph1972/article/details/149224295</guid><author>lph1972</author><pubDate>Wed, 09 Jul 2025 14:53:09 +0800</pubDate><description><![CDATA[- 绑定 MouseEnter 事件到 HoverCommand -->导入NuGet包 必须。]]></description><category></category></item><item><title><![CDATA[notifypropertychangefor实现convertor]]></title><link>https://blog.youkuaiyun.com/lph1972/article/details/149222188</link><guid>https://blog.youkuaiyun.com/lph1972/article/details/149222188</guid><author>lph1972</author><pubDate>Wed, 09 Jul 2025 13:34:37 +0800</pubDate><description><![CDATA[NotifyPropertyChangedFor(nameof(Visibility))] // 修正：添加nameof。// 修正返回值语法。if(_isVisible == true) // 改为使用字段_isVisible。// 修正返回值语法。// 保持您的逻辑结构，仅修正语法。collapsed  不占用。visibility三状态。hidden   占用布局。]]></description><category></category></item><item><title><![CDATA[uniformgrid实现跨越]]></title><link>https://blog.youkuaiyun.com/lph1972/article/details/149221059</link><guid>https://blog.youkuaiyun.com/lph1972/article/details/149221059</guid><author>lph1972</author><pubDate>Wed, 09 Jul 2025 12:12:03 +0800</pubDate><description><![CDATA[特性 | 自定义 `SpanningUniformGrid` | NuGet 包（如 `EnhancedUniformGrid`） |- 保留 `UniformGrid` 的所有原生功能（如 `Rows`/`Columns` 属性）。- **静态布局**：如果子元素位置固定，可在加载后调用 `UpdateLayout()` 冻结布局。- 计算每个单元格的固定大小（`cellWidth`/`cellHeight`）。- **虚拟化**：对大量动态项，建议结合 `VirtualizingPanel`。]]></description><category></category></item><item><title><![CDATA[socket ]]></title><link>https://blog.youkuaiyun.com/lph1972/article/details/149170639</link><guid>https://blog.youkuaiyun.com/lph1972/article/details/149170639</guid><author>lph1972</author><pubDate>Mon, 07 Jul 2025 13:24:37 +0800</pubDate><description><![CDATA[同意确认syj ack。FTP http是应用层 只关心把快递交给快递员。udp 只负责发包 不关心数据对方有没有。挥手就是告别所以中间是反过来的。发包  序列号 长度 内容。TCP三次握手 四次挥手。客户端      服务端。就是一个二次确认的过程。而且主要不是连在一起的。tcpudp是传输层。ack  序列号长度。tcp稳 udp 快。]]></description><category></category></item><item><title><![CDATA[数据的表示]]></title><link>https://blog.youkuaiyun.com/lph1972/article/details/149053072</link><guid>https://blog.youkuaiyun.com/lph1972/article/details/149053072</guid><author>lph1972</author><pubDate>Tue, 01 Jul 2025 20:20:26 +0800</pubDate><description><![CDATA[2n-1  比如四位第一位不用 然后7不就是二的三次方减去一码。补码多了一个1开头的刚好有点交接意思 就利用上了 多一个负。0️⃣是正 1是负  你看1想不想负号。十进制转二进制用凑位权法比较好用。移码 就是补码的符号位取反。比如-7 7  0  15个数。而在源码里面是舍弃了多余的重复0。非规格化不一定  阶数默认是2。反码和补码符号位都是不变的。补码多了一个负数表示交接。所以范围是1-2-n-1。先余下的数据是靠近0的。-7  7之间有几个数。你看看刚好又是2n-1。（补码的负数双头1）]]></description><category></category></item><item><title><![CDATA[swing音频输入]]></title><link>https://blog.youkuaiyun.com/lph1972/article/details/149051085</link><guid>https://blog.youkuaiyun.com/lph1972/article/details/149051085</guid><author>lph1972</author><pubDate>Tue, 01 Jul 2025 17:29:42 +0800</pubDate><description><![CDATA[在 Java 中，`AudioSystem.getAudioInputStream()` **不能直接接受文件路径字符串**（如 `"C:/sounds/buzzer.wav"` 或 `"./buzzer.wav"`），因为它没有提供这样的重载方法。- 从 **classpath**（如 `src/main/resources/`）加载文件，**兼容 JAR 包**。- **不能直接传路径字符串**，必须通过 `File`、`URL` 或 `InputStream` 加载。]]></description><category></category></item><item><title><![CDATA[StackPanel和Grid]]></title><link>https://blog.youkuaiyun.com/lph1972/article/details/148929970</link><guid>https://blog.youkuaiyun.com/lph1972/article/details/148929970</guid><author>lph1972</author><pubDate>Thu, 26 Jun 2025 17:53:27 +0800</pubDate><description><![CDATA[TextBox Grid.Row="0" Text="上面的内容"/><Button Content="按钮1"/><Button Content="按钮2"/><Button Content="按钮3"/><Button Content="按钮1"/><Button Content="按钮2"/>]]></description><category></category></item><item><title><![CDATA[串口助手实例]]></title><link>https://blog.youkuaiyun.com/lph1972/article/details/148878973</link><guid>https://blog.youkuaiyun.com/lph1972/article/details/148878973</guid><author>lph1972</author><pubDate>Tue, 24 Jun 2025 20:44:37 +0800</pubDate><description><![CDATA[我们这边有个index搜索Index就是乱丢text选择-1代表复选框，把它改成数字。从一开始数字复选框，反正一组的都只只能单选。单相框怎么改成圆的？在Properties里面有Check box options是里面又是。所以要配置imagetotextAlignment 图片相对文字的位置改成left。下拉框comboboxedit。有image的location。和text的location。单选框checkedit。]]></description><category></category></item><item><title><![CDATA[打包winform ]]></title><link>https://blog.youkuaiyun.com/lph1972/article/details/148855885</link><guid>https://blog.youkuaiyun.com/lph1972/article/details/148855885</guid><author>lph1972</author><pubDate>Mon, 23 Jun 2025 22:49:27 +0800</pubDate><description><![CDATA[在application文件夹底下 添加一个自己的文件夹  就是工程的名称。Dxapplication/bin/debug的文件全部拿过来。下载慢去visual studio extension。再添加一个程序windows system32。右键 在文件资源管理打开文件夹。debug的msi就是安装文件。解决方案右键添加 新建项目。复制productcode。右键msi创建一个快捷方式。卸载程序的argument。右键查看setup的属性。setup1的属性页。]]></description><category></category></item><item><title><![CDATA[自动更新实现]]></title><link>https://blog.youkuaiyun.com/lph1972/article/details/148824737</link><guid>https://blog.youkuaiyun.com/lph1972/article/details/148824737</guid><author>lph1972</author><pubDate>Sun, 22 Jun 2025 12:06:46 +0800</pubDate><description><![CDATA[property assembly的版本。需要改的只是xml文件。]]></description><category></category></item><item><title><![CDATA[winform mvvm]]></title><link>https://blog.youkuaiyun.com/lph1972/article/details/148825083</link><guid>https://blog.youkuaiyun.com/lph1972/article/details/148825083</guid><author>lph1972</author><pubDate>Sun, 22 Jun 2025 11:31:52 +0800</pubDate><description><![CDATA[这段代码的意思是：如果当前应用程序不是处于设计模式（即程序正在运行），就调用。MainViewModel 调用  选择MainViewModel类型。方法来初始化视图与视图模型之间的绑定。]]></description><category></category></item></channel></rss>