将system.img打包生成system.new.dat、system.patch.dat和system.transfer.list文件的python工具包。用法: $ python img2sdata.zip [system.img] [output_idr] 默认读取当前目录下的system.img,输出到otazip目录。
2025-11-25 15:50:57 27KB Android package update
1
C#(VS2019)调用招行薪福通接口 目的是读取薪福通里面的报销单信息,往金蝶云星空里写凭证,不用人工录入凭证 前提工作 先在这创建应用 https://xft.cmbchina.com/open/#/developer/application AppId和AuthoritySecret要记下来,开发时要用的 然后在这里申请你要开通的接口 https://xft.cmbchina.com/open/#/developer/interface 在这里启用你申请的接口 https://xft.cmbchina.com/open/#/application/interface?appId=XXXX (appId=XXXXX是你应用的APPID) 要用到 BouncyCastle.Crypto.dll Newtonsoft.Json.dll XftNewSDK.dll 这3个DLL都可以在薪福通的网站上下载到 没有能不能?能,难搞一些,我是没搞成,提示我签名不正确 以上代码只是成功从薪福通上获取到信息,至于怎样写入金蝶云星空,相信每个金蝶二开人都知道怎样做
2025-11-25 15:48:55 1.14MB
1
vs2017环境下成功编译,vc6.0编译不通过 #include "stdafx.h" #include #include #include #include // 使用该计时器必须包含的文件 #pragma comment ( lib, "Winmm.lib" ) using namespace std; #define LONG 800 // 窗口长 #define WIDE 500 // 窗口宽 #define NUM 13 // 烟花种类数量宏定义 void Init_Fire(); // 初始化烟花 void Load_Image(); // 加载烟花图片 void Shoot(); // 发射烟花 void Chose(DWORD& t1); // 筛选烟花 void Show(DWORD* pMem); // 绽放烟花 void Erase(DWORD* pMem); // 随机擦除像素点 // 烟花结构 struct FIRE { int r; // 当前爆炸半径 int max_r; // 爆炸中心距离边缘最大半径 int x, y; // 爆炸中心在窗口的坐标 int cen_x, cen_y; // 爆炸中心相对图片左上角的坐标 int width, height; // 图片的宽高 int xy[240][240]; // 储存图片像素点 bool show; // 是否绽放 bool draw; // 开始输出像素点 DWORD t1, t2, dt; // 绽放速度 }Fire[NUM]; // 烟花弹结构 struct JET { int x, y; // 喷射点坐标 int hx, hy; // 最高点坐标------将赋值给 FIRE 里面的 x, y int height; // 烟花高度 bool shoot; // 是否可以发射 DWORD t1, t2, dt; // 发射速度 IMAGE img[2]; // 储存花弹一亮一暗图片 byte n : 1; // 图片下标 }Jet[NUM]; // 初始化烟花参数 void Init_Fire() { // 分别为:烟花中心到图片边缘的最远距离、烟花中心到图片左上角的距离 (x、y) 两个分量 int r[13] = { 120, 120, 155, 123, 130, 147, 138, 138, 130, 135, 140, 132, 155 }; int x[13] = { 120, 120, 110, 117, 110, 93, 102, 102, 110, 105, 100, 108, 110 }; int y[13] = { 120, 120, 85, 118, 120, 103, 105, 110, 110, 120, 120, 104, 85 }; for (int i = 0; i < NUM; i++) // 初始化烟花 { Fire[i].x = 0; // 烟花中心坐标 Fire[i].y = 0; Fire[i].width = 240; // 图片宽 Fire[i].height = 240; // 图片高 Fire[i].max_r = r[i]; // 最大半径 Fire[i].cen_x = x[i]; // 中心距左上角距离 Fire[i].cen_y = y[i]; Fire[i].show = false; // 是否绽放 Fire[i].dt = 5; // 绽放时间间隔 Fire[i].t1 = timeGetTime(); Fire[i].r = 0; // 从 0 开始绽放 Jet[i].x = -240; // 烟花弹左上角坐标 Jet[i].y = -240; Jet[i].hx = -240; // 烟花弹发射最高点坐标 Jet[i].hy = -240; Jet[i].height = 0; // 发射高度 Jet[i].t1 = timeGetTime(); Jet[i].dt = rand() % 10; // 发射速度时间间隔 Jet[i].n = 0; // 烟花弹闪烁图片下标 Jet[i].shoot = false; // 是否发射 } } // 加载图片 void Load_Image() { IMAGE fm, gm; loadimage(&fm, _T("fire/flower.jpg"), 3120, 240); for (int i = 0; i < NUM; i++) { SetWorkingImage(&fm); getimage(&gm, i * 240, 0, 240, 240); SetWorkingImage(&gm); for (int a = 0; a < 240; a++) for (int b = 0; b < 240; b++) Fire[i].xy[a][b] = getpixel(a, b); } IMAGE sm; loadimage(&sm, _T("fire/shoot.jpg"), 200, 50); for (int i = 0; i < NUM; i++) { SetWorkingImage(&sm); int n = rand() % 5; getimage(&Jet[i].img[0], n * 20, 0, 20, 50); // 暗 getimage(&Jet[i].img[1], (n + 5) * 20, 0, 20, 50); // 亮 } SetWorkingImage(); // 设置回绘图窗口 } // 在一定范围内筛选可发射的烟花,并初始化发射参数,输出烟花弹到屏幕,播放声音 void Chose(DWORD& t1) { DWORD t2 = timeGetTime(); if (t2 - t1 > 100) { int n = rand() % 20; if (n < 13 && Jet[n].shoot == false && Fire[n].show == false) { Jet[n].x = rand() % LONG; Jet[n].y = rand() % 100 + LONG / 2; Jet[n].hx = Jet[n].x; Jet[n].hy = rand() % LONG / 3; Jet[n].height = Jet[n].y - Jet[n].hy; Jet[n].shoot = true; putimage(Jet[n].x, Jet[n].y, &Jet[n].img[Jet[n].n], SRCINVERT); } t1 = t2; } } // 扫描烟花弹并发射 void Shoot() { for (int i = 0; i < NUM; i++) { Jet[i].t2 = timeGetTime(); if (Jet[i].t2 - Jet[i].t1 > Jet[i].dt&& Jet[i].shoot == true) { putimage(Jet[i].x, Jet[i].y, &Jet[i].img[Jet[i].n], SRCINVERT); // 烟花弹的上升 if (Jet[i].y > Jet[i].hy) { Jet[i].n++; Jet[i].y -= 5; } putimage(Jet[i].x, Jet[i].y, &Jet[i].img[Jet[i].n], SRCINVERT); if ((Jet[i].y - Jet[i].hy) * 4 < Jet[i].height) // 上升到高度的 3 / 4,减速 Jet[i].dt = rand() % 4 + 10; if (Jet[i].y <= Jet[i].hy) // 上升到最大高度 { putimage(Jet[i].x, Jet[i].y, &Jet[i].img[Jet[i].n], SRCINVERT); // 擦掉烟花弹 Fire[i].x = Jet[i].hx + 10; // 在烟花弹中间爆炸 Fire[i].y = Jet[i].hy; // 在最高点绽放 Fire[i].show = true; // 开始绽放 Jet[i].shoot = false; // 停止发射 } Jet[i].t1 = Jet[i].t2; } } } // 绽放烟花 void Show(DWORD* pMem) { // 烟花个阶段绽放时间间隔,制作变速绽放效果 int drt[16] = { 5, 5, 5, 5, 5, 6, 25, 25, 25, 25, 55, 55, 55, 55, 55 }; for (int i = 0; i < NUM; i++) { Fire[i].t2 = timeGetTime(); // 增加爆炸半径,绽放烟花,增加时间间隔做变速效果 if (Fire[i].t2 - Fire[i].t1 > Fire[i].dt&& Fire[i].show == true) { if (Fire[i].r < Fire[i].max_r) { Fire[i].r++; Fire[i].dt = drt[Fire[i].r / 10]; Fire[i].draw = true; } if (Fire[i].r >= Fire[i].max_r - 1) { Fire[i].draw = false; Init_Fire(); } Fire[i].t1 = Fire[i].t2; } // 如果该号炮花可爆炸,根据当前爆炸半径画烟花,颜色值接近黑色的不输出。 if (Fire[i].draw) { for (double a = 0; a <= 6.28; a += 0.01) { int x1 = (int)(Fire[i].cen_x + Fire[i].r * cos(a)); // 相对于图片左上角的坐标 int y1 = (int)(Fire[i].cen_y -
2025-11-25 15:48:14 5.55MB
1
本文介绍了如何结合双目视觉技术和YOLO目标检测算法实现3D测量。双目技术通过两个相机模拟人眼视觉,计算物体深度信息,适用于三维重建和距离测量。YOLO算法以其快速高效的特点,适用于实时目标检测。文章详细阐述了双目标定、立体校正、立体匹配和视差计算的原理及实现步骤,并提供了相关代码示例。通过将双目技术与YOLO结合,成功实现了3D目标检测和体积测量,展示了较高的精度,但也指出周围环境需避免杂物干扰。 在本文中,双目视觉技术和YOLO目标检测算法被结合起来进行3D测量。双目视觉是一种利用两个摄像机模拟人类的双眼视觉的算法,可以计算物体的深度信息,非常适合进行三维重建和距离测量。通过双目技术,我们可以从两个不同角度拍摄同一个物体,然后通过计算两个图像之间的视差(即同一物体在两个图像中的相对位置差异),来推算出物体的深度信息。这种技术在机器视觉、自动驾驶汽车、机器人导航等领域有着广泛的应用。 YOLO(You Only Look Once)是一种实时的目标检测算法。它的特点是速度快,效率高,能够实时地在图像中检测和定位多个物体。YOLO将目标检测问题视为一个回归问题,将图像划分为一个个格子,每个格子预测中心点落在该格子内的边界框和类别概率。这种方法极大地提高了目标检测的效率。 文章详细介绍了如何将双目视觉技术和YOLO算法结合起来进行3D测量。需要进行双目标定,即确定两个相机的内部参数和外部参数。然后进行立体校正,使得两个相机的成像平面共面,并且两个相机的主光轴平行。接着进行立体匹配,找到左图和右图之间的对应点。最后进行视差计算,计算出对应点在两个图像中的相对位置差异,即视差。通过视差和双目标定的结果,可以计算出物体的深度信息,从而实现3D测量。 文章还提供了相关的代码示例,帮助读者更好地理解和实现双目视觉和YOLO的3D测量。通过实际的案例,我们可以看到,将双目视觉技术和YOLO结合起来,可以成功实现3D目标检测和体积测量,展示了较高的精度。但是,这种方法也有其局限性,比如周围的环境需要尽量避免杂物干扰,否则可能会影响测量的精度。 双目视觉技术和YOLO目标检测算法的结合,为3D测量提供了一种新的方法。这种技术具有速度快、精度高的特点,可以在许多领域得到应用。但是,如何提高测量的精度,避免周围环境的干扰,还需要进一步的研究和改进。
2025-11-25 15:42:45 75KB 计算机视觉 3D测量 目标检测
1
本文分享了作者对a_bogus加密的逆向分析过程。作者通过参考相关文章和B站视频(版本V1.0.1.5),成功逆向出a_bogus的生成逻辑,并指出关键点如_tnc_request_url的重要性及a_bogus生成位置的影响。整个分析耗时两天,最终实现了完美调用。文末提供了交流方式,包括网址和扫码联系途径。 在本文中,作者详细分享了对a_bogus加密技术的逆向分析过程。作者首先参考了相关文章和B站视频(版本V1.0.1.5),然后通过逐步分析,揭示了a_bogus加密生成逻辑。在分析过程中,作者特别强调了_tnc_request_url的重要性,指出其在加密过程中的关键作用。同时,作者还发现a_bogus生成位置的影响,这一发现对于理解整个加密机制至关重要。 作者通过对a_bogus的逆向分析,成功掌握了其生成逻辑,整个分析过程耗时两天。在分析结束时,作者不仅完全理解了a_bogus加密的机制,而且达到了能够完美调用的程度。这表明作者的逆向分析技能相当扎实,能够深入理解复杂的加密技术,并在实际应用中发挥出来。 文章的作者提供了交流方式,包括网址和扫码联系途径,以便读者在理解过程中遇到问题可以及时与作者沟通。这样的交流方式能够更好地帮助读者解决实际问题,提升学习效率。 在软件开发领域,对加密技术进行逆向分析是一项非常重要的技能。通过逆向分析,开发者可以更好地理解加密技术的工作原理,提升对加密和安全技术的认识。同时,逆向分析对于软件包、源码、代码包的安全性分析具有重要的意义。它可以帮助开发者找到可能存在的安全隐患,提高软件的整体安全性。 在实际应用中,开发者往往需要对各种加密技术进行深入分析,以确保软件的安全性。尤其是在开发涉及金融、数据处理等敏感信息的软件时,对加密技术的逆向分析尤为重要。通过逆向分析,开发者可以发现加密技术的潜在缺陷,对软件进行优化,从而提升软件的稳定性和安全性。 对于a_bogus这样的加密技术,逆向分析不仅可以帮助开发者掌握其工作原理,还可以发现潜在的改进空间。比如,在本文中作者提到的_tnc_request_url的重要性以及a_bogus生成位置的影响,这些发现对于后续的软件开发和优化具有重要的指导意义。开发者可以根据这些关键点,对软件进行相应的改进,提升软件的安全性和稳定性。 本文不仅为读者展示了一个完整的逆向分析过程,还提供了深入理解加密技术、提升软件安全性的案例。作者通过具体的技术分析,为软件开发领域提供了宝贵的实践经验。
2025-11-25 15:40:43 6KB 软件开发 源码
1
PCB相关标准要点总结。包括GJB和SJ: GJB3243A-2021《电子元器件表面安装要求》 GJB4057A-2021《军用电子设备印制板电路设计要求》 GJB 362C-2021《刚性印制板通用规范》 GJB 7548A-2021《挠性印制板通用规范》 GJB 10115-2021《微波印制板设计规范》 GJB 2142A-2011《印制线路板用覆金属箔层压板通用规范》 SJ 20810A-2016《印制板尺寸与公差》 SJ 21481-2018《高速电路导线特性阻抗控制要求》 SJ 21554-2020《印制板背钻加工工艺控制要求》 SJ 21305-2018《 电子装备印制板组装件可制造性分析要求》 SJ 21150-2016 《微波组件印制电路板设计指南》
2025-11-25 15:24:41 2.47MB 信号完整性 硬件研发
1
在工业机器人项目自动化场景中,单纯的整型数据已无法满足高精度测量需求。本文在原有ADC数据采集方案基础上,通过​​Modbus RTU协议扩展​​实现以下功能升级: 新增1路16位浮点数(3.3V量程) 新增1路32位双精度浮点数(±2.5V量程) 保持原有4通道ADC数据传输 本方案在原有ADC数据采集基础上,重点实现单双精度浮点数(float&double)的Modbus传输验证, 博客地址:https://blog.csdn.net/vor234/article/details/147104964
2025-11-25 15:18:39 6.87MB ModbusRTU
1
"深度探索:Comsol模拟水系锌离子电池浓度场与电场交互作用",comsol水系锌离子电池浓度场电场模拟 ,comsol; 水系锌离子电池; 浓度场; 电场模拟; 模拟研究,模拟水系锌离子电池浓度场与电场交互的电化学行为 在能源科技领域,水系锌离子电池作为一种新型储能装置,其研究和开发正逐渐成为热点。本文通过对Comsol模拟水系锌离子电池浓度场与电场交互作用的深入分析,揭示了电池内部电化学行为的机理,为电池设计优化提供了重要的理论依据。 我们必须了解水系锌离子电池的基本工作原理。水系锌离子电池主要通过锌离子在正负极之间的迁移来进行充放电。在充电过程中,锌离子从正极向负极移动并嵌入负极材料中;而在放电过程中,锌离子则从负极向正极迁移,并释放出储存的能量。这个过程中,电解液中的锌离子浓度变化直接关系到电池性能的稳定性与安全性。 在电池运行过程中,浓度场的变化会对电场产生重要影响,反之亦然。浓度场的变化会影响电荷的分布,进而影响电场的分布;而电场的变化又会反过来影响锌离子的迁移速率和方向。这两者之间的相互作用构成了电池内部复杂的电化学反应网络。 通过Comsol软件的模拟,我们可以对电池内部的浓度场和电场进行可视化模拟,从而更直观地理解电池内部的电化学行为。Comsol是一个强大的多物理场仿真软件,能够模拟包括流体流动、热传递、电磁场、化学反应等在内的多个物理过程。在水系锌离子电池的研究中,Comsol可以帮助我们预测不同工作条件下的电池性能,优化电池结构设计,指导实验方向。 在模拟过程中,关键的参数设置包括电解液的浓度、离子迁移率、电池的几何结构和操作条件等。通过对这些参数的调整,可以观察到电池性能的变化趋势,例如充放电效率、功率密度以及循环寿命等。此外,模拟还可以揭示电池在不同工作状态下的浓度梯度和电场分布,这对于避免浓差极化和电场极化,提升电池整体性能具有重要意义。 值得一提的是,Comsol软件的模拟结果不仅对理论研究有帮助,而且对实际电池制造过程也有着指导意义。通过模拟结果可以发现电池设计中的缺陷和不足,指导工程师进行结构改进和工艺优化,最终实现电池性能的提升。 随着全球能源危机和环境保护意识的增强,水系锌离子电池技术的发展显得尤为重要。模拟研究不仅有助于提升电池性能,还能够推动水系锌离子电池技术在电动汽车、可再生能源存储等领域的应用,具有重要的经济和社会价值。 深度探索Comsol模拟水系锌离子电池浓度场与电场交互作用,对于理解电池内部复杂的电化学行为,指导电池设计和制造,以及推动其在清洁能源领域的应用具有重大意义。未来,随着模拟技术的进一步发展和完善,水系锌离子电池技术将得到更快的进步,为人类社会的可持续发展贡献更大的力量。
2025-11-25 15:17:36 789KB 开发语言
1
在信息技术领域,特别是在嵌入式系统的开发过程中,使用高效且标准化的远程过程调用(RPC)机制是一种常见且重要的实践。RPC允许不同进程或计算机之间通过网络进行通信,调用远程过程就像调用本地函数一样简单。Google GRPC是一个高性能、开源和通用的RPC框架,由Google主导开发。它支持多种编程语言,并能在多种环境中运行。 EmbedXrpc是一个与Google GRPC相关但可能更为专门针对单片机的RPC解决方案。从描述信息中我们可以看出,该资源包涉及到了RPC、C# IDL、以及脚本语言,IDL(接口描述语言)用于定义与编程语言无关的接口规范,而C# IDL则将这些接口映射到C#语言上。结合文件列表中的"EmbedXrpcIdlParser.sln"文件,我们可以推测这是一个用于解析IDL的C#项目解决方案文件。此外,"genResources.ps1"脚本可能是一个PowerShell脚本,用于生成某种资源或进行项目构建。 文件列表中还包括了图像文件"简单示意图.jpg"和"网图1.jpg",这些可能提供了对EmbedXrpc使用或架构的视觉描述。"LICENSE"文件则说明了该资源的使用许可条件。".gitattributes"和".gitignore"文件则用于配置版本控制系统Git的行为,前者定义了文件的属性,后者列出了应该被版本控制系统忽略的文件或路径。 由于文件列表中出现了".vscode"文件夹,我们可以推测这些资源可能被设计为与Visual Studio Code这一流行的代码编辑器兼容。Visual Studio Code支持各种语言和运行时,对于嵌入式系统的开发人员来说,这是一个非常方便的编辑器。同时,"readme.txt"文件通常是软件包中包含的基本说明文件,提供了关于如何使用该资源的指南。 "EmbedXrpc.CSharp.Test"文件可能是一个测试项目,用于验证EmbedXrpc的C#实现是否正确无误。测试项目是软件开发中确保质量的重要环节,特别是在嵌入式系统开发中,确保通信协议的准确性和稳定性尤其重要。 给定的文件集合是一个包含文档、源代码、脚本和测试项目的资源包,旨在支持嵌入式系统开发人员使用EmbedXrpc进行单片机的开发和远程过程调用。这些文件覆盖了从项目配置、接口定义、代码生成到测试的完整流程,为开发者提供了一整套的工具和文档,以确保能够高效和准确地实现和使用EmbedXrpc。
2025-11-25 15:12:53 8.58MB 开发资源
1
根据提供的文件内容,以下是关于单片机技术在篮球计时计分器中的应用研究的知识点: 1. 单片机技术的应用:单片机是一种集成电路芯片,它将计算机的中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、输入/输出接口以及其他功能集成到一个单一的硅片上。在本研究中,使用了AT89C51单片机,它是基于8051架构的一种微控制器,具备处理和控制功能,适用于实现篮球计时计分器的控制逻辑。 2. 篮球计时计分器的功能需求:篮球计时计分器需要具备基本的计时和计分功能,显示当前时间和比赛分数,同时还要能够响应比赛中的各种操作,如分数增加、时间暂停、节次切换、攻守方互换等。 3. 硬件设计及描述:本设计中包括硬件的总体描述、系统框图、Proteus电路图以及各部分硬件的介绍。系统框图可能展示了计时计分器的模块结构,Proteus电路图则提供了电子元件之间连接的详细视图。硬件部分可能涉及到键盘接口、显示接口、计时器和计分器的核心电路。 4. 软件设计流程及描述:报告详细介绍了程序流程图和函数模块的功能。软件部分对于实现篮球计时计分器的功能至关重要,其程序流程图呈现了软件运行的逻辑顺序和分支条件。函数模块部分则涉及到具体的编程实现,包括时间更新、分数计算、用户界面响应等关键功能。 5. 功能实现与心得体会:功能实现部分可能包括了实际操作的照片和功能介绍,让读者对设计成果有直观的认识。心得体会则反映了作者在开发过程中的学习经验、设计挑战和成果的满意度。 6. 源程序:源程序部分是设计的核心,提供了单片机编程的代码实现。代码可能是用C语言或汇编语言编写,直接在AT89C51单片机上运行。 7. 硬件与软件的结合:报告中强调了单片机与160*128液晶显示器的结合使用,显示技术提供了用户界面,而单片机则负责逻辑处理和数据运算,两者结合实现了篮球计时计分器的所有功能。 这份单片机技术研究报告详细阐述了如何使用AT89C51单片机和液晶显示技术设计并实现一个篮球计时计分器。从硬件设计到软件编程,再到功能实现的整个过程,都体现了单片机技术在实际应用中的广泛性和灵活性。
2025-11-25 15:09:10 1.21MB
1