<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://purl.org/rss/1.0/"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel rdf:about="https://blog.x-tools.top/feed/rss/category/resources/">
<title>小夏的猪窝 - 资源</title>
<link>https://blog.x-tools.top/category/resources/</link>
<description>快来和我一起网上冲浪吧~</description>
<items>
<rdf:Seq>
<rdf:li resource="https://blog.x-tools.top/archives/103/"/>
<rdf:li resource="https://blog.x-tools.top/archives/98/"/>
<rdf:li resource="https://blog.x-tools.top/archives/85/"/>
<rdf:li resource="https://blog.x-tools.top/archives/36/"/>
<rdf:li resource="https://blog.x-tools.top/archives/33/"/>
<rdf:li resource="https://blog.x-tools.top/archives/15/"/>
</rdf:Seq>
</items>
</channel>
<item rdf:about="https://blog.x-tools.top/archives/103/">
<title>Auto_Si9000 阻抗计算神器，让 PCB 设计效率飙升！</title>
<link>https://blog.x-tools.top/archives/103/</link>
<dc:date>2025-01-12T09:27:00+00:00</dc:date>
<description>前言该项目的上篇文章是：关于SI9000计算阻抗接口的研究；上篇讲解了Si9000的接口调用，可以被任何高级编程语言使用，如上篇文章中的Python；本篇发布前，本人也使用Python写了6个常见的模型，包括正算、反算，但由于Python的UI方面没有过多的知识储备，导致Python始终是使用命令行终端来呈现的... 总之难用就对了，而且终端的话无法做到批量的数据正算、反算；这里也放出Python的GitHub项目地址：Auto_Si9000_Py，仅供学习参考；以上这就是我转换到.NET C# WPF编写的原因；Auto_Si9000 功能1、支持常见的8个阻抗模型：外层单线不对地,外层单线对地,内层单线不对地,内层单线对地,外层双线不对地,外层双线对地,内层双线不对地,内层双线对地；2、支持批量阻抗的正算、反算；3、支持生成原生的Si9000软件界面的预览图，并支持复制到剪贴板；预览图中还圈出了重要的数据，如线宽、线距、对地数据，用于EQ的建议；软件截图程序主界面：预览界面：支持复制到剪贴板：项目地址https://github.com/XiaM-Admin/Auto_Si9000_WPF如果帮助到你，可以点一个小小的Star哦~</description>
</item>
<item rdf:about="https://blog.x-tools.top/archives/98/">
<title>关于SI9000计算阻抗接口的研究</title>
<link>https://blog.x-tools.top/archives/98/</link>
<dc:date>2024-11-26T01:50:24+00:00</dc:date>
<description>开篇在PCB设计中，阻抗控制主要是指控制信号线的特性阻抗，使其与传输线或连接设备的阻抗匹配，以确保信号在传输过程中不产生过多的反射和损耗，常用于传输线的设计中。上述的重点就是阻抗匹配，客户端若在PCB中存在阻抗管控的要求，需要某一段线路的阻抗在XΩ±Y%（例：50Ω±10%）的范围内，PCB厂商在生产的过程中需要尽量保证阻抗线完整、平滑。除了在生产过程中保证应该有的质量保证，还需要在工程设计阶段对资料中阻抗线的理论阻抗值进行模拟，如果模拟的阻抗值超出客户要求的阻抗管控范围，或偏差较大时，PCB厂商通常会对阻抗线进行建议调整，以确保阻抗值在客户要求的范围内。此外PCB生产完毕后，还需要指定的阻抗条测试模块，对PCB的阻抗进行测试，此时测量出来的就是板内实际的阻抗值了。那么，如何对阻抗进行模拟计算呢？Polar SI9000我们需要使用到各种阻抗模拟的软件，本文使用的软件为：Polar SI9000，SI9000是Polar公司开发的一款用于PCB设计的阻抗模拟软件，可以帮助设计师精确计算和优化传输线的特性阻抗。该软件中有各种阻抗线的模拟层叠结构，常用的有单线、单线共面、双线、双线共面，以及提供了内层、外层、盖油、不盖油的几类模拟阻抗模拟计算结构；若需要模拟阻抗，只需要选择一个符合客户资料设计的阻抗线模型，填入需要的参数后，点击Calculate(计算)即可实现对理论阻抗的模拟。接下来我们使用Coated Microstrip1B(外层单线盖油)模型来实现对阻抗的模拟计算：首先，填入软件需要的参数：介质层厚度(H1)、介质层介电常数(Er1)、线路下线宽(W1)、线路上线宽(W2)、线路厚度(T1)、基材上油墨厚度(C1)、线路上基材厚度(C2)、油墨介电常数(CEr)；这些参数根据PCB厂商总结的常规参数填入即可，其中W1与W2，阻抗线的上下线宽通常是相差1Mil（受蚀刻药水的影响），1Mil是PCB厂商的常规蚀刻要求侵蚀的量，W1-W2=1Mil；关于板材以及油墨的介电常数需要让板材、油墨供应商来提供；填完参数点计算即可出现相应的阻抗Zo值了。以上是一个阻抗仿真的步骤，实际上操作会比文本描述更加繁琐，更何况一个PCB中常规情况下不仅仅只有1个阻抗需要管控。并且SI9000的保存做的不是很好，如果PCB的层压叠构改变，所有阻抗都需要重新计算！非常难受... 这就让我产生了对SI9000阻抗程序的研究，找到软件的接口，制作一个基于SI9000计算接口的阻抗计算项目；CalcEngineBEMDll.dll旧版本的SI9000安装目录中，没有CalcEngineBEMDll.dll，应该是集成在软件中了，本文使用的SI9000版本是V7.1.0，其中CalcEngineBEMDll.dll版本为V3.30，PolarGraphDll.dll的版本为V1.30。该阻抗计算软件的接口均在CalcEngineBEMDll.dll中，SI9000.exe本体就是调用dll中的开放的接口来实现阻抗值的计算。为什么？因为SI8000是SI9000的老版本，8000的安装目录中提供了两个Excel文件，分别为Si8000.xls、Si8000Expert.xls，这些Excel中的VBA代码均被加密，使用网上的破解方法进入查看工程代码后，发现表中实现阻抗值计算的方法均是来自CalcEngineBEMDll.dll，该dll使用depends.exe加载后显示存在139个方法，其中阻抗计算的方法就有95个，在depends.exe加载的dll并不能展示方法所需的参数个数、参数类型等信息，但是在SI8000的Excel中VBA工程中所有方法的参数、参数类型都在其中！以上，我们可以知道，阻抗计算方法在DLL中，方法可以被调用，方法的传参可以参考VBA工程；但前提是，用户电脑上必须安装好SI9000软件才可以；接下来，本文中我将使用Python对DLL中计算方法进行调用，其它的语言请读者自行尝试。Python调用Python是一个强大的高级编程语言，简单易用，各种领域都会有它的身影，无论是大小项目，都可以使用现有的pip包轻松实现。示例项目使用的包为Python自带的ctypes，这个项目结构如下：|--Auto_SI9000|----main.py &gt; 调用calcFun中的类实现阻抗值计算|----models.py &gt; 定义一些需要使用的结构体|----si9000.py &gt; 加载DLL，定义DLL中方法的传参及返回值|----calcFun.py &gt; Calc类(单计算)，Calc_Plus类(多计算，继承Calc)|---lib文件夹 &gt; 存放需加载的DLL相关文件接下来展示一下调用DLL的简单代码流程：1、首先调用DLL中的ClaimFlexLicence方法，认证一下产品Key（仅需要认证一次）；2、使用IsCalculationModelAllowed方法，指定需要使用的模型并允许DLL可以准备开始计算；3、调用计算方法CoatedMicrostrip1B方法，并传入需要前面讲到的单线模型需要的一些参数（H1、Er1等），调用完成后会立刻返回，它的返回值是int(long)类型，1或0；该方法会将传入的参数进行检查，检查后会立刻返回检查的结果，返回1，则代表计算已经开始，返回0，代表计算参数存在错误，需要重新检查参数正确性！4、调用QueryCalculationFinished等待方法，等待计算结束；5、使用QueryCalculationResult方法获取阻抗计算结果，该方法如果直接传入结构体，会出现写入权限限制的问题，需要将变量的地址作为参数解决该问题；最后，结构体中的dImpedance就是结果阻抗值了！以上的调用流程均是来自VBA工程中的，其中部分方法可以跳过，或更改流程，读者可自行尝试。最后本文到此为止就结束了，更多的DLL方法请自行在VBA工程中解读；该项目目前还未完成，现只提供了一个单线模型的计算方法示例；我会在文本末尾添加上本次示例项目的下载链接（Python代码，SI9000安装包），请自行下载，感谢各位！项目下载链接：https://image.180402.xyz/S3/Auto_SI9000%20V2.exe</description>
</item>
<item rdf:about="https://blog.x-tools.top/archives/85/">
<title>XClipboard！第一个版本发布！</title>
<link>https://blog.x-tools.top/archives/85/</link>
<dc:date>2023-05-07T12:47:00+00:00</dc:date>
<description>这是一个剪贴板监控程序，您剪贴板的一切数据都可以被 XClipboard 📋记录，存储在本地的数据库中，所以你不需要担心自己的数据泄露！您的所有数据不会离开您的电脑。为什么要做这个项目？🌝除了剪贴板记录的功能，我还加入了图床功能，为了自己更方便的博客记录，您只管截图，剩下的交给XClipboard。XClipboard会自动将您剪贴板的图片做上传处理，保存至您想存放的云存储桶中（又拍云...），若想使用这张图片，XClipboard为您转换了多种链接格式（MarkDown、BBCode、HTML等）。项目关于😗采用WPF MVVM框架构建，使用Prism、MaterialDesignInXamlToolkit等开源库实现各种功能。这是一个开源项目，程序采用WPF Prism MVVM框架编写，以及NeGet库log4net、MaterialDesignThemes、SharpClipboard、SKIT.FlurlHttpClient.Upyun.Uss构建。目前为第一个测试版本，若存在任何问题请评论反馈给我。程序图片🎯一点意外👾自己做项目一定要用Git版本管理平台！！自己搭建的也行、Github、GitLab都可以！在项目过程中，调试托盘部分代码时，突然VS2022就报非常非常多的错误... 也找不到问题所在，还好使用的时MVVM框架编写，移植也非常方便，花了一个晚上弄了个新的工程继续编写。真的太吓人了...MVVM框架编写真的非常快，在我每天下班编写的1-2小时，我能在一个月内完成这第一个发行版。Prism非常优秀，我之前一直在使用WindowsFormsApp编写，可是写的越多，代码就越难写... WPF MVVM的开发模式确实让我眼前一亮。链接🌐开源项目地址：https://github.com/XiaM-Admin/XClipboard暂且版本号就叫做 Beta1.0.0 吧。</description>
</item>
<item rdf:about="https://blog.x-tools.top/archives/36/">
<title>电子 - ESP8266OLED信息显示项目</title>
<link>https://blog.x-tools.top/archives/36/</link>
<dc:date>2022-06-17T04:35:00+00:00</dc:date>
<description>&lt;!--[toc]--&gt;项目说明一个OLED显示项目，我准备用来显示分辨率cgpu占用率的，时间问题，只做了一个界面。本项目可以通过上位机程序切换程序的运行模式，将代码中的上位机ip和天气城市id改一下即可使用。目前只有2个模式0,1,0模式 显示时间天气日期，1模式 显示Hello World，主要是用来调试模式切换的。程序代码 后续可能会有更新，最近在忙工作和毕设。硬件配置ESP8266 - 12EOLED屏幕 i2c协议 内部驱动芯片：SH1106 1.3寸[可选] 复位上位机按钮引脚配置OLED和ESP8266引脚配置图[可选]按钮引脚配置按钮接D8引脚，另一端接MCU的3.3V输出端。当按钮按下时，D8的电平会改变，我们通过读取D8引脚的电平，来做某些事情。代码说明网络WIFI环境初始化 使用的是WiFiManager库 管理包下载即可和风天气api的使用 使用的是ESP8266WebServer库 GitHub地址项目中OLED显示 使用的是中景园电子科技的示例代码时间以及天气的刷新 我使用的是Ticker库 定时库 自带模式1的表盘背景、天气图标 是使用PS软件画再通过字库工具转换的按键的防抖 我使用的是变量计数，达到某一值时，才执行函数项目样图\图片模式1模式2网络调试助手通过发送 mode + 模式id 即可做到切换oled屏幕显示的模式附件 及 代码ShowOLED代码附网络调试助手.rar</description>
</item>
<item rdf:about="https://blog.x-tools.top/archives/33/">
<title>推荐一个免费ssl证书网站</title>
<link>https://blog.x-tools.top/archives/33/</link>
<dc:date>2022-06-11T02:09:00+00:00</dc:date>
<description>&lt;!--[toc]--&gt;功能证书支持泛域名、多组域名。支持多种CA渠道, 自由选择。证书自动验证, 到期自动重申，但是要vip。大部分域名证书时长为90天，申请的是buypass类型的证书，有效期为：180天。积分积分没啥用，200积分换取vip单张证书支持同时包含16组域名可同时拥有100张有效证书(普通账户6张)提交验证前无需等待可使用独立通道，加快申请速度可自动验证和自动重申(只需一次,后续申请无需设置)可以为违规域名申请证书还有vip是永久的，直到网站停止服务，不是包年包月的。链接来此加密如果可以填写邀请码：ZRL35J5D不想填也没关系哦，也就5点积分。</description>
</item>
<item rdf:about="https://blog.x-tools.top/archives/15/">
<title>资源 - 外网ip获取api</title>
<link>https://blog.x-tools.top/archives/15/</link>
<dc:date>2022-05-24T12:57:00+00:00</dc:date>
<description>&lt;!--[toc]--&gt;本文所有外网ip是1.1.1.1作为演示例子我自己的apixApi https://api.x-tools.top/ | 去看看返回的是Json格式字符串{
&quot;WelCome&quot;: &quot;Good Luck&quot;,
&quot;You_ip&quot;: &quot;1.1.1.1&quot;,
&quot;By_Q&quot;: 142473282
}搜狐 api搜狐外网ip的api https://pv.sohu.com/cityjson?ie=utf-8 | 去看看返回的是字符串需要自行正则获取var returnCitySN = {&quot;cip&quot;: &quot;1.1.1.1&quot;, &quot;cid&quot;: &quot;xxxxxx&quot;, &quot;cname&quot;: &quot;江苏省常州市&quot;};未知 apiapi链接： https://api.ipify.org/?format=json | 去看看返回的是JSON格式的数据{
&quot;ip&quot;: &quot;1.1.1.1&quot;
}Alist作者的apiAlist作者的获取ip信息api https://api.nn.ci/ip | 去看看返回JSON格式的数据{
&quot;ip&quot;: &quot;1.1.1.1&quot;,
&quot;region&quot;: &quot;亚洲&quot;,
&quot;country&quot;: &quot;中国&quot;,
&quot;province&quot;: &quot;江苏&quot;,
&quot;city&quot;: &quot;南京&quot;,
&quot;isp&quot;: &quot;电信/基站WiFi&quot;
}cip.cc的apicip查询外网ip获取链接 http://ip.cip.cc/ | 去看看返回ip文本1.1.1.1测速网的api测速网的获取ip及地址信息的api https://api-v3.speedtest.cn/ip | 去看看返回JSON格式的数据{
&quot;code&quot;: 0,
&quot;data&quot;: {
    &quot;country&quot;: &quot;中国&quot;,
    &quot;province&quot;: &quot;江苏&quot;,
    &quot;city&quot;: &quot;盐城&quot;,
    &quot;district&quot;: &quot;亭湖区&quot;,
    &quot;isp&quot;: &quot;中国电信&quot;,
    &quot;lon&quot;: &quot;xx&quot;,
    &quot;lat&quot;: &quot;xx&quot;,
    &quot;countryCode&quot;: &quot;CN&quot;,
    &quot;ip&quot;: &quot;1.1.1.1&quot;,
    &quot;operator&quot;: &quot;中国电信&quot;
},
&quot;msg&quot;: &quot;ok&quot;
}又拍云又拍云的外网ip以及地理位置api https://pubstatic.b0.upaiyun.com/?_upnode | 去看看返回JSON格式的数据不能保证此链接长久有效，使用时请注意！失效后请联系我删除。{
&quot;addr&quot;: &quot;36.99.120.207&quot;,
&quot;server&quot;: &quot;marco/2.16.1&quot;,
&quot;server_time&quot;: &quot;2022-06-25 18:01:02&quot;,
&quot;remote_addr&quot;: &quot;1.1.1.1&quot;,
&quot;addr_location&quot;: {
&quot;country&quot;: &quot;中国&quot;,
&quot;isp&quot;: &quot;电信&quot;,
&quot;province&quot;: &quot;河南&quot;,
&quot;continent&quot;: &quot;亚洲&quot;,
&quot;city&quot;: &quot;濮阳&quot;
},
&quot;hostname&quot;: &quot;ctn-ha-lya1-099&quot;,
&quot;remote_addr_location&quot;: {
&quot;country&quot;: &quot;中国&quot;,
&quot;isp&quot;: &quot;电信&quot;,
&quot;province&quot;: &quot;江苏&quot;,
&quot;continent&quot;: &quot;亚洲&quot;,
&quot;city&quot;: &quot;&quot;
}
}</description>
</item>
</rdf:RDF>