<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[helldoger的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/helldoger</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; helldoger]]></copyright><item><title><![CDATA[联合kuka机器人, 海康visonmaster 的手眼9点标定方法]]></title><link>https://blog.youkuaiyun.com/helldoger/article/details/169741643</link><guid>https://blog.youkuaiyun.com/helldoger/article/details/169741643</guid><author>helldoger</author><pubDate>Sun, 01 Nov 2026 14:25:33 +0800</pubDate><description><![CDATA[把位姿写成 4×4 齐次矩阵，0 1]0 1]。]]></description><category></category></item><item><title><![CDATA[S7 netPlus的各种通信测试]]></title><link>https://blog.youkuaiyun.com/helldoger/article/details/150847433</link><guid>https://blog.youkuaiyun.com/helldoger/article/details/150847433</guid><author>helldoger</author><pubDate>Tue, 26 Aug 2025 10:35:19 +0800</pubDate><description><![CDATA[以上为异步 以下为同步]]></description><category></category></item><item><title><![CDATA[在C# 中使用建造者模式]]></title><link>https://blog.youkuaiyun.com/helldoger/article/details/148585865</link><guid>https://blog.youkuaiyun.com/helldoger/article/details/148585865</guid><author>helldoger</author><pubDate>Wed, 11 Jun 2025 14:28:04 +0800</pubDate><description><![CDATA[HardWare的属性配置可以用Action 传入HardWare 类型的参数进行配置, HardWare和其他字段一起以private字段的形式留在ComputerBuilder 中, 使用HardWareWrapper  配置  HardWare, 构造器传入HardWareWrapper 的 HardWare。C# 的建造者模式比java强大的多, 它提供了 return this的语法, 可以让建造者模式使用链式语法. Action关键字可以使配置更加灵活。]]></description><category></category></item><item><title><![CDATA[C# 的异步任务中, 如何暂停, 继续,停止任务]]></title><link>https://blog.youkuaiyun.com/helldoger/article/details/147832861</link><guid>https://blog.youkuaiyun.com/helldoger/article/details/147832861</guid><author>helldoger</author><pubDate>Fri, 09 May 2025 17:02:57 +0800</pubDate><description><![CDATA[【代码】C# 的异步任务中, 如何暂停, 继续,停止任务。]]></description><category></category></item><item><title><![CDATA[kuka, fanuc, abb机器人和移动相机的标定]]></title><link>https://blog.youkuaiyun.com/helldoger/article/details/147816714</link><guid>https://blog.youkuaiyun.com/helldoger/article/details/147816714</guid><author>helldoger</author><pubDate>Fri, 09 May 2025 11:20:32 +0800</pubDate><description><![CDATA[相机在机械手上的标定, 因为相机在机械手上是不停移动的, 不同的拍照位置, 对应不同的相机工具坐标系位置, 无法和固定的基坐标系位置标定. 如果强行像固定位置标定那样直接填实时位置, 那么只有在拍照位置和标定位置相同时, 才勉强能用(实际上9点移动了9个坐标,和拍照位置误差很大, 严格意义上也是不可用的), 如果你标定位置和拍照位置不同, 则标定不可用.图3: 海康visonMaster 移动相机的意义。1, 建立相机-法兰盘固定关系。图1: 固定位置相机拍照。图4: 移动位置相机拍照。]]></description><category></category></item><item><title><![CDATA[自己做的在C# 中计算机器人坐标系平移旋转的库]]></title><link>https://blog.youkuaiyun.com/helldoger/article/details/146535629</link><guid>https://blog.youkuaiyun.com/helldoger/article/details/146535629</guid><author>helldoger</author><pubDate>Wed, 26 Mar 2025 17:09:29 +0800</pubDate><description><![CDATA[【代码】自己做的在C# 中计算机器人坐标系平移旋转的库。]]></description><category></category></item><item><title><![CDATA[西门子触摸屏如何用一页动态显示所有IO变量]]></title><link>https://blog.youkuaiyun.com/helldoger/article/details/144343045</link><guid>https://blog.youkuaiyun.com/helldoger/article/details/144343045</guid><author>helldoger</author><pubDate>Mon, 09 Dec 2024 11:58:12 +0800</pubDate><description><![CDATA[代码1: 写FC块, 将IO 区的变量映射到DB区中。图1, 建立DB块 , 存放注释和按钮的IO信号。图3: HMI变量和PLC变量的映射。图2, FC块的IO变量定义。]]></description><category></category></item><item><title><![CDATA[C# 中 yield关键字的使用]]></title><link>https://blog.youkuaiyun.com/helldoger/article/details/142935494</link><guid>https://blog.youkuaiyun.com/helldoger/article/details/142935494</guid><author>helldoger</author><pubDate>Tue, 15 Oct 2024 09:39:25 +0800</pubDate><description><![CDATA[结果就是GenerateSequence1 会卡死,GenerateSequence 每有一个元素进入IEnumerable, 都会打印出来。延迟执行：只有在实际需要时才会生成下一个值，这对于处理大量数据非常有用。每次迭代时生成一个值，并且在下次迭代时继续从上次离开的地方开始。节省内存：不需要一次性将所有数据加载到内存中。]]></description><category></category></item><item><title><![CDATA[在wpf 中 用mvvm 的方式 绑定 鼠标事件]]></title><link>https://blog.youkuaiyun.com/helldoger/article/details/142934586</link><guid>https://blog.youkuaiyun.com/helldoger/article/details/142934586</guid><author>helldoger</author><pubDate>Tue, 15 Oct 2024 09:09:41 +0800</pubDate><description><![CDATA[在 wpf中, 如果遇到控件的 MouseEnter MouseLeave 属性时, 往往会因为有参数object sender, System.Windows.Input.MouseEventArgs e 很多人选择直接生成属性在后台, 破坏了MVVM, 这其实是不必要的. 我们完全可以用 xmlns:i=“http://schemas.microsoft.com/xaml/behaviors”]]></description><category></category></item><item><title><![CDATA[用linq和sqlsugar 聚类的对比]]></title><link>https://blog.youkuaiyun.com/helldoger/article/details/142934468</link><guid>https://blog.youkuaiyun.com/helldoger/article/details/142934468</guid><author>helldoger</author><pubDate>Tue, 15 Oct 2024 09:06:05 +0800</pubDate><description><![CDATA[例如我现在有个需求, 焊接机器人生产 “封头” 和 “支座” 2种产品, 每次生产完毕, 机器人发信号给PLC ,记录一次生产类型,  完成时间等属性. 我们需要把这些产品 按日期+小时, 分段统计出 每个小时 各种类型的产品产量. 并用echart 用柱状图展示出来, 每小时一组.在第一次分组后，每个分组只包含一种类型（A或B），并且每个分组内的Count表示该类型在该时间点的数量。在第二次分组时，我们将这些分组按Date和Hour重新组合，并分别计算A和B的数量。如果用linq 是这么做。]]></description><category></category></item><item><title><![CDATA[wpf 实现DataGrid的表格嵌套]]></title><link>https://blog.youkuaiyun.com/helldoger/article/details/140379843</link><guid>https://blog.youkuaiyun.com/helldoger/article/details/140379843</guid><author>helldoger</author><pubDate>Fri, 12 Jul 2024 15:07:51 +0800</pubDate><description><![CDATA[效果:]]></description><category></category></item><item><title><![CDATA[用C# 代码调整16位整数大小端的4种方法]]></title><link>https://blog.youkuaiyun.com/helldoger/article/details/140349854</link><guid>https://blog.youkuaiyun.com/helldoger/article/details/140349854</guid><author>helldoger</author><pubDate>Thu, 11 Jul 2024 13:44:38 +0800</pubDate><description><![CDATA[【代码】用C# 代码调整16位整数大小端的4种方法。]]></description><category></category></item><item><title><![CDATA[使用附加属性 实现wpf中的passwordBox 的明文/密文密码切换]]></title><link>https://blog.youkuaiyun.com/helldoger/article/details/140179796</link><guid>https://blog.youkuaiyun.com/helldoger/article/details/140179796</guid><author>helldoger</author><pubDate>Thu, 04 Jul 2024 15:01:01 +0800</pubDate><description><![CDATA[【代码】使用附加属性 实现wpf中的passwordBox 的明文/密文密码切换。]]></description><category></category></item><item><title><![CDATA[用Microsoft.Extensions.Hosting 管理WPF项目.]]></title><link>https://blog.youkuaiyun.com/helldoger/article/details/139922143</link><guid>https://blog.youkuaiyun.com/helldoger/article/details/139922143</guid><author>helldoger</author><pubDate>Mon, 24 Jun 2024 12:57:09 +0800</pubDate><description><![CDATA[点击显示所有文件, 将app.xaml包含在项目中。将app.xaml 的属性-生成操作改为"页"点击运行, 此时项目已经可以运行起来了。此时 已经用Host管理了wpf项目.在app.xaml.cs中 写入。在app.xaml中 删除。]]></description><category></category></item><item><title><![CDATA[用C# 的System.Threading.Channels 模拟2台PLC, 用消息队列实现异步任务之间的通信]]></title><link>https://blog.youkuaiyun.com/helldoger/article/details/139051208</link><guid>https://blog.youkuaiyun.com/helldoger/article/details/139051208</guid><author>helldoger</author><pubDate>Mon, 20 May 2024 00:19:08 +0800</pubDate><description><![CDATA[【代码】用C# 的System.Threading.Channels 模拟2台PLC, 用消息队列实现异步任务之间的通信。]]></description><category></category></item><item><title><![CDATA[在aspNetCore webApi中使用System.Threading.Channels 建立一个高性能的Plc通信库]]></title><link>https://blog.youkuaiyun.com/helldoger/article/details/139048481</link><guid>https://blog.youkuaiyun.com/helldoger/article/details/139048481</guid><author>helldoger</author><pubDate>Sun, 19 May 2024 21:07:49 +0800</pubDate><description><![CDATA[注入到Ioc中的Class。]]></description><category></category></item><item><title><![CDATA[在aspNetCore中 使用System.Text.Json的定制功能, 将定制化的json返回给前端]]></title><link>https://blog.youkuaiyun.com/helldoger/article/details/139048124</link><guid>https://blog.youkuaiyun.com/helldoger/article/details/139048124</guid><author>helldoger</author><pubDate>Sun, 19 May 2024 20:58:55 +0800</pubDate><description><![CDATA[【代码】在aspNetCore中 使用System.Text.Json的定制功能, 将定制化的json返回给前端。]]></description><category></category></item><item><title><![CDATA[在C# 中 使用 System.Threading.Channels 建立一个高性能的TcpServer]]></title><link>https://blog.youkuaiyun.com/helldoger/article/details/139015640</link><guid>https://blog.youkuaiyun.com/helldoger/article/details/139015640</guid><author>helldoger</author><pubDate>Sat, 18 May 2024 01:38:44 +0800</pubDate><description><![CDATA[viewModel:
    public partial class TcpServerChannelViewModel : ObservableObject
    {
        private Socket socketServer = new Socket(
            AddressFamily.InterNetwork,
            SocketType.Stream,
            ProtocolType.Tcp
        );
        ]]></description><category></category></item><item><title><![CDATA[C# 使用channel 实现Plc 异步任务之间的通信]]></title><link>https://blog.youkuaiyun.com/helldoger/article/details/138843618</link><guid>https://blog.youkuaiyun.com/helldoger/article/details/138843618</guid><author>helldoger</author><pubDate>Tue, 14 May 2024 10:26:49 +0800</pubDate><description><![CDATA[【代码】C# 使用channel 实现Plc 异步任务之间的通信。]]></description><category></category></item><item><title><![CDATA[.net8 net8webapi中 KeyedService 和Wpf 的 prism 框架 KeyedService 的比较]]></title><link>https://blog.youkuaiyun.com/helldoger/article/details/138785223</link><guid>https://blog.youkuaiyun.com/helldoger/article/details/138785223</guid><author>helldoger</author><pubDate>Mon, 13 May 2024 09:24:59 +0800</pubDate><description><![CDATA[【代码】.net8 net8webapi中 KeyedService 和Wpf 的 prism 框架 KeyedService 的比较。]]></description><category></category></item></channel></rss>