本文详细介绍了如何使用C#开发OPC UA客户端。OPC UA是一种开放式国际标准规格,用于在工业自动化等行业安全可靠地进行数据交换。文章首先介绍了OPC UA的背景和基本概念,然后详细讲解了如何配置OPC UA服务器端(使用KEPServer模拟)和客户端工具(softing OPC Client)。接着,文章提供了完整的C#代码示例,展示了如何创建一个OPCUAClient类库项目,包括连接服务器、浏览节点、读写节点数据以及订阅节点变化等功能。代码示例涵盖了从基础配置到高级功能的实现,适合开发者参考和学习。最后,文章还提供了一个WinForm程序的源码下载链接,方便读者进一步实践。 C#作为微软主导的编程语言,其在工业自动化领域也有着广泛的应用,尤其是在开发OPC UA客户端方面。OPC UA,即“对象连接与嵌入式架构统一架构”,是一种用于安全、可靠数据交换的国际开放式标准规格。在工业自动化、工业物联网以及智能工厂等场景中,OPC UA发挥着关键作用,是实现设备互联互通的重要标准。 在开发OPC UA客户端时,首先需要对OPC UA有基本的了解,包括它的架构、信息模型、通信协议等。之后,开发者需要选择合适的OPC UA服务器端工具进行模拟测试,例如文中提到的KEPServer。KEPServer是业界广泛使用的一款OPC服务器软件,它能够模拟多种工业设备的数据,为开发人员提供一个进行OPC UA客户端开发的环境。 在客户端方面,文中介绍了softing OPC Client的使用,这是一个功能强大的OPC客户端工具,可以帮助开发者在OPC UA客户端开发过程中更好地进行测试和调试。通过这一工具,开发者可以验证OPC UA客户端与服务器之间的通信是否正常,节点浏览、读写操作、节点变化订阅等功能是否实现预期的效果。 C#代码示例部分,文中提供了创建OPCUAClient类库项目的完整示例代码。这些代码展示了如何设置连接服务器的基本参数,实现对OPC UA服务器节点的浏览、读写操作,以及对节点数据变化的实时订阅等功能。这些功能点的实现覆盖了从基础配置到高级应用的完整范围,是开发者学习和实践的重要参考。 为了进一步提高学习效率,文中还提供了WinForm程序的源码下载链接。WinForm是一个基于.NET的桌面应用程序框架,非常适合用来创建交互式的桌面应用程序。开发者可以通过下载和运行源码,更直观地了解如何在实际应用中使用C#开发OPC UA客户端。 综合以上内容,本文为C#开发者提供了一个全面的学习指南,从OPC UA的基础知识到实际代码的编写,再到实际应用的示范,为有志于在工业自动化领域进行开发的工程师们提供了一个宝贵的参考资料。通过本文的引导,开发者可以更快地掌握OPC UA客户端的开发流程,并将其应用于实际的工业自动化项目中。
2026-02-08 17:25:44 41KB 工业自动化
1
Fast Report VCL 5 for Delphi 7 5.3.16 输入序列号【0043443E1D4100050C1226160F351D190D310E2028171E350A22】 选择full安装,亲测可用
2026-02-08 16:46:52 10.89MB FastReport
1
知识点: 1. 江西省职业院校技能大赛及赛项介绍:2024年江西省职业院校技能大赛包含针对高职组的机器人系统集成应用技术项目,参赛者需完成一系列与机器人系统集成相关的任务。 2. 赛项要求和评分标准:参赛选手在5小时内完成规定内容,赛场上提供2台计算机用于编程和仿真调试,要求参赛者将程序文件保存到指定文件夹中。评分标准涵盖竞赛任务的完成度、职业素养等,违规行为将导致扣分或取消资格。 3. 机器人系统集成背景:参赛者需要对现有机器人系统进行升级改造,以适应产品零件生产的单元升级改造和不同类型产品零件的共线生产,实现智能化和柔性化生产。 4. 产品生产工艺及系统布局:生产对象为汽车行业轮毂零件,需完成粗加工后的铸造铝制零件生产。参赛者需要设计合适的系统布局及控制系统结构,满足产品零件在各加工单元中的准确定位和生产需求。 5. 控制系统和通讯方案设计:根据产品生产工艺流程,合理设计各硬件单元的布局分布,绘制控制系统布局方案及通讯拓扑结构图,确保各功能单元能够通过工业以太网通讯方式连接到总控单元的PLC上。 6. 虚拟仿真系统的搭建和定义:在虚拟调试软件中搭建机器人集成应用系统,定义各传感器、指示灯以及状态机的具体工作模式和参数,以模拟实际生产环境。 7. 工具和设备的使用规范:参赛者需根据功能要求选择合适的工具完成任务,同时,赛项要求严格遵守机械电气工艺规范性、耗材使用环保性、功耗控制节能性,以及赛场纪律、安全和文明生产等职业素养。 8. 预防措施和安全注意事项:对于参赛过程中可能出现的设备损坏、违规操作等情况,赛项有明确的处罚措施,包括取消资格和成绩无效等严重后果。 9. 资料和文件管理:参赛者需在竞赛过程中妥善管理程序文件、图纸和相关资料,防止损坏、丢失或带离赛场,以确保数据安全和赛事的公平性。 10. 生产对象和工艺要求细节:赛事中的生产对象为汽车轮毂零件,其生产过程中需注意正面和背面定位基准、RFID 电子信息区域、零件缺陷表征区域和数控加工区域的布置和识别。 总结以上内容,江西省职业院校技能大赛中的机器人系统集成应用技术赛项要求参赛者具备机器人系统设计、控制编程、仿真调试和生产管理等多方面的能力,以满足智能制造和柔性化生产的需求,同时强调了技术应用的合理性、工具操作的规范性和职业素养的重要性。
1
本文详细介绍了在Cesium中实现倒立四棱锥的3D可视化技术。通过自定义几何结构设计,采用180度X轴旋转实现倒立效果,并结合面部渲染和边线渲染技术增强立体感。系统实现了动画效果(垂直摆动和水平旋转)和交互式控制面板(颜色选择、动画速度调整、大小控制等),展示了Cesium在高级3D可视化方面的强大能力。文章从几何结构、着色器编程到UI设计全面解析了实现过程,为开发者提供了在数字地球应用中创建创新性3D元素的完整技术方案。 在Cesium中实现倒立四棱锥的3D可视化技术是一项具有挑战性的任务,它需要综合应用几何结构设计、着色器编程、以及用户界面设计等多个技术领域。本文详细阐述了通过Cesium提供的3D地球平台实现这一效果的完整过程。 文章介绍了自定义几何结构的设计方法,这是实现倒立四棱锥的基础。通过精确控制几何体的顶点位置和面的构成,可以创建出既符合几何学原理又具有视觉效果的倒立四棱锥模型。在此基础上,文章阐述了如何通过将四棱锥绕X轴旋转180度来达到倒立的效果,这一步骤是对基本几何操作的灵活运用。 为了进一步增强四棱锥的立体感和视觉效果,文章着重介绍了面部渲染和边线渲染技术。面部渲染涉及到着色器编程,通过对材质、光照和阴影的计算,可以使得四棱锥模型表现出更加真实的立体感。边线渲染则是通过描边技术来强调模型的边缘,增强视觉效果的同时也保持了模型的清晰度。 文章还详细描述了如何为倒立四棱锥添加动画效果,包括垂直摆动和水平旋转。这些动画不仅增加了视觉上的动态性,而且提供了交互的可能性。为了控制动画效果,文中还展示了交互式控制面板的设计,通过颜色选择、动画速度调整、大小控制等功能,实现了用户与模型之间的互动。 在技术层面,本文从几何结构的实现到着色器编程再到UI设计,全面解析了倒立四棱锥在Cesium中的实现过程。这对于那些希望在数字地球应用中创建创新性3D元素的开发者来说,提供了非常有价值的参考和解决方案。 文章还特别强调了Cesium平台在高级3D可视化方面的强大能力,这一点通过倒立四棱锥的实现得到了很好的体现。Cesium作为一种基于WebGL的地理空间应用开发平台,其提供的3D地球功能和丰富的API为开发者提供了强大的支持,使得在数字地球应用中实现复杂的3D模型变得可能。 本文不仅提供了如何在Cesium中实现倒立四棱锥的技术细节,而且展示了如何通过这些技术创造出富有交互性和视觉效果的3D模型。这项技术的实现不仅在技术上有其独到之处,同时也为数字地球应用的3D可视化领域提供了新的思路和可能。
2026-02-08 16:23:00 8KB WebGL
1
### 2024年广西区职业院校技能大赛高职组“机器人系统集成应用技术”赛项竞赛任务书解析 #### 一、赛事概览 **标题:** 2024年广西区职业院校技能大赛高职组“机器人系统集成应用技术”赛项竞赛任务书(学生赛)样卷 **描述:** 该文档是针对2024年广西区职业院校技能大赛高职组“机器人系统集成应用技术”赛项竞赛任务书的一个样本版本,旨在为参赛选手提供明确的比赛规则和任务要求。 **标签:** 机器人、系统集成、应用技术 #### 二、比赛要求与规则 - **任务书完整性:** 确保任务书完整无缺页、字迹清晰。若发现问题,应及时向裁判报告并更换。 - **时间限制:** 完成任务书规定内容的时间限制为5小时。 - **设备配置:** 提供2台计算机供选手使用,参考资料位于“D:\参考资料”文件夹中,所有创建的程序文件需保存至“D:\技能竞赛”文件夹。 - **信息安全:** 不得在任务书中记录学校、姓名等个人信息或与竞赛无关的内容。 - **设备保护:** 避免因人为因素损坏竞赛设备,否则可能取消比赛资格。 - **资料管理:** 禁止损毁、丢弃或带走与比赛相关的资料,否则取消比赛资格。 - **违规处理:** 违反规定的行为将根据评分表进行扣分。 #### 三、任务背景 企业希望通过机器人系统的集成升级,实现零件生产的柔性化和智能化,以适应不同类型产品零件的共线生产需求。具体包括以下方面: - **集成需求:** 基于智能制造技术,整合工业机器人、视觉识别、数控系统、RFID等设备,实现高效生产。 - **通讯方式:** 采用工业以太网通讯完成设备控制与信息采集。 - **管理系统:** 利用人机交互系统和MES系统实现生产全流程监控与优化。 - **集成任务:** 设计、安装、调试机器人系统,并完成试生产验证。 #### 四、生产对象 - **零件描述:** 主要为汽车行业的轮毂零件,已完成粗加工的半成品铸造铝制零件。 - **定位基准:** 产品零件通过轮廓和定位基准实现准确放置。 - **工具选择:** 需要根据功能要求选择合适的工具来实现正面和背面的拾取。 #### 五、职业素养评估 - **技术应用:** 合理性和规范性。 - **工具操作:** 规范性。 - **工艺标准:** 机械电气工艺的标准性。 - **环保耗材:** 使用环保材料。 - **能耗控制:** 节能性。 - **赛场纪律:** 遵守比赛规则和安全文明生产。 #### 六、模块一:机器人系统方案设计和仿真调试 - **任务1:** 系统方案设计和仿真调试 - **方案设计** - 根据产品生产工艺流程,合理规划各单元布局分布。 - 绘制布局方案图,标注各单元名称。 - 设计控制系统结构。 - 绘制控制系统通讯拓扑结构图,标明设备名称、通讯方式和地址。 - **仿真调试** - 在虚拟调试软件中构建机器人集成应用系统。 - 定义传感器功能,使其能够检测产品零件。 - 定义指示灯的颜色状态。 - 定义分拣单元气缸的状态机,包括运动模式、最小最大值、方向和状态设置。 #### 七、总结 本次比赛旨在考核参赛选手在机器人系统集成方面的综合能力,包括但不限于方案设计、系统仿真、实际操作等方面。通过对上述任务的解析可以看出,比赛不仅要求选手具备扎实的专业知识和技术能力,还需要具备良好的团队协作能力和职业素养。此外,比赛中还强调了技术创新和环保意识的重要性,这些都是未来智能制造领域不可或缺的能力。对于参赛选手而言,这是一次宝贵的学习机会,也是对未来职业生涯的一次重要准备。
2026-02-08 16:22:48 722KB 机器人 系统集成 应用技术
1
这是一个使用Matlab和OpenSim组合环境的可穿戴体重支撑外骨骼的仿真项目。_This is a simulation project for a wearable body weight support exoskeleton by using combined environmen of Matlab and OpenSim..zip 在当今世界,随着自动化和智能化技术的迅速发展,外骨骼技术已成为改善人类力量和效率的一项重要技术。Matlab作为一种强大的数学计算和仿真软件,OpenSim作为一个开源的生物力学模拟平台,它们的结合应用在外骨骼的仿真研究中,为外骨骼的设计和优化提供了更加精确和灵活的环境。本文将围绕使用Matlab和OpenSim组合环境进行可穿戴体重支撑外骨骼的仿真项目展开讨论。 外骨骼技术是一种模仿人类骨架系统设计的辅助装置,它穿戴在人体外部,通过模拟骨骼和肌肉的功能,实现对人体活动的增强和辅助。体重支撑外骨骼主要针对需要长时间进行体力劳动的工作人员设计,以减轻他们的体力消耗和防止职业病的产生。使用Matlab进行体重支撑外骨骼的仿真研究,可以对其动力学和控制策略进行深入分析,确保外骨骼在实际应用中的稳定性和可靠性。 OpenSim作为一款开源软件,它提供了人体运动学和动力学的精确模拟,支持复杂模型的创建和分析。通过将Matlab与OpenSim结合,不仅可以实现外骨骼设计的快速建模和仿真,还能有效地进行步态分析和肌肉活动模拟。这种联合环境的使用,有助于研究人员探索外骨骼的最佳设计参数,如关节力矩、肌肉力、运动轨迹等,并对这些参数进行调整优化,以适应不同用户的特定需求。 此外,项目中所提到的“BWS_Exoskeleton-master”是该项目的主文件夹,它可能包含了外骨骼模型的设计文件、仿真脚本、参数设置等重要文件。通过分析这些文件,研究者能够对整个外骨骼的构建过程有更深入的理解,包括机械结构的设计、控制系统的开发以及人体与外骨骼之间的交互等关键环节。 在技术实现方面,Matlab和OpenSim的结合使用可以实现数据的高效交换和处理。Matlab在数据处理、算法实现等方面具有强大的优势,而OpenSim在生物力学模拟方面有着先天的优势,两者结合能够互补彼此的不足,为外骨骼的开发提供一个更加全面和高效的仿真环境。 通过这种仿真项目的实施,可以预见未来外骨骼技术在减轻人体负担、提高工作效率以及辅助康复治疗等方面的应用前景。此外,仿真项目还可以为实际制造和测试提供理论依据,大大缩短研发周期和成本。 本文重点介绍了使用Matlab和OpenSim组合环境进行可穿戴体重支撑外骨骼的仿真项目,阐述了其在设计、分析、优化等各个环节的理论和技术应用,并指出了这种仿真方式在外骨骼技术开发中的重要价值和应用前景。这种仿真方法不仅能够提供外骨骼性能的深入理解和准确评估,而且能够为外骨骼设计提供数据支持,推动相关技术的发展和应用。
2026-02-08 16:08:38 17.29MB
1
"基于PIC18单片机的新颖Bootloader设计" 本文基于MPLAB软件开发环境设计了一种新颖的Bootloader,并配套编写了PC机端上位机界面程序。其特点是控制灵活,使用便利,系统升级安全可靠。本文将从Bootloader的实现、Intel HEX文件、Bootloader的设计、PC端操作界面的设计等几个方面来阐述。 一、Bootloader的实现 Bootloader是一个小程序,在操作系统内核运行之前运行,主要完成软硬件设备初始化,建立内存空间映射,从而将系统的软硬件环境带到一个合适的状态,或者加载操作系统映像文件实现系统软件升级,以便为最终调用操作系统内核准备好正确的环境。Bootloader有2种操作模式:启动加载模式和下载模式。在启动加载模式下,Bootloader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入。在下载模式下,目标机上的Bootloader将通过串口、网络连接或者USB等,从上位机下载操作系统文件,然后保存到目标机上的Flash类固态存储设备中。 二、Intel HEX文件 Intel HEX文件是由一行行符合Intel HEX文件格式的文本所构成的ASCII文本文件。在Intel HEX文件中,每一行包含一个HEX记录。这些记录由对应机器语言码和/或常量数据的十六进制编码数字组成。每个记录包含5个域:数据长度域、地址域、HEX记录类型的域、数据域和校验和域。 三、Bootloader的设计 本文所设计的Bootloader程序采用的编译器是MPLAB软件开发环境的mcc18编译器,升级文件格式为Intel HEX格式。根据Intel HEX文件的格式,将文件内容的每一行封装成一帧,加上帧头和帧尾以确保数据传输的可靠性,并采用半双工的通信模式,对错误帧进行重传。 四、PC端操作界面的设计 PC端操作界面主要用来实现以下几个功能:串口参数设置、用户登录、选择系统映像文件和提示用户系统更新完成(或失败)。串口参数设置包括设置串口通道号、数据位数、波特率等参数。用户登录需要输入用户名、密码,与下位机进行验证。选择系统映像文件需要选择系统映像HEX文件,逐行读入并通过串口发送给下位机,如有错误重新选择。提示用户系统更新完成(或失败)需要显示系统更新进度,提示用户系统更新结果。 五、设计中的几项关键技术及注意事项 在设计Bootloader时需要注意以下几点:如果一次性将HEX文件中全部数据通过串口发送给目标芯片,则在通信过程中发生一字节的错误传输,就将导致全部数据需要重新发送;并且还要考虑到芯片的写Flash处理速度与串口速率的大小关系,否则将导致接收数据的丢失。为加强通信的可靠性与串口速率的可变性,本文所设计的Bootloader采用半双工的通信模式与上位机进行通信:以HEX文件的一行作为一帧数据,每帧数据校验结束后向上位机发送回复数据,上位机根据回复数据判断发送数据帧的正误来选择重发或继续发送下一帧;并且在进行升级之前与上位机通信进行用户名和密码的核对,以确保当前的升级操作不是误操作。
2026-02-08 15:59:36 226KB PIC18单片机 新颖Bootloader 串口 FLASH
1
针对PIC18系列单片机,目前市面上仅存在HI-TECH公司提供的Bootloader程序,并且需要借助串口调试助手。本文基于Microchip公司的MPLAB软件开发环境设计了一种新颖的Bootloader,并配套编写了PC机端上位机界面程序。 《基于PIC18单片机的Bootloader设计》 Bootloader是嵌入式系统中至关重要的组成部分,它在系统启动初期运行,负责初始化硬件设备,建立内存映射,并准备加载操作系统或应用程序。对于PIC18系列单片机,传统的Bootloader解决方案主要依赖于HI-TECH公司的产品,且需借助串口调试助手。然而,本文提出了一种创新方法,通过Microchip公司的MPLAB软件开发环境设计了一个全新的Bootloader,同时开发了PC端的上位机界面程序,实现了更便捷的系统升级和管理。 Bootloader的操作模式分为启动加载模式和下载模式。启动加载模式下,Bootloader直接运行已存在的程序;下载模式则允许通过串口、网络或USB等接口从上位机下载新的操作系统文件并写入Flash。本文设计的Bootloader在启动时会延迟3秒,如果在此期间收到特定信息,就会切换到下载模式,否则将继续执行正常启动。 Intel HEX文件格式是Bootloader处理程序映像的标准格式,它由多行包含数据、地址和校验和的记录组成。在设计Bootloader时,需要解析这些HEX文件,将其内容分帧发送,以确保数据传输的可靠性。采用半双工通信模式可以有效地处理错误帧,通过帧头和帧尾的校验来提高通信效率。 Bootloader的实现中,使用了MPLAB的mcc18编译器,支持Intel HEX格式的升级文件。程序流程包括主程序和更新系统映像两部分,其中主程序负责判断运行模式,而更新系统映像则涉及文件读取、数据传输和错误处理。 PC端操作界面设计旨在提供友好的用户体验,允许用户设置串口参数、进行身份验证、选择系统映像文件以及查看更新进度。其中,串口参数设置确保了与单片机的正确通信,用户登录验证则避免了非法升级,系统映像文件的选择和发送保证了程序的正确更新。 在设计中,关键技术和注意事项包括:一是采用半双工通信模式,以HEX文件的一行为一帧数据,通过帧校验和回复数据来增强通信可靠性;二是处理程序存储器的写操作,根据地址域内容合并数据块,以适应8字节为单位的写入限制,并处理可能的非连续地址问题。 本文提出的基于PIC18单片机的Bootloader设计不仅提供了更加灵活的系统升级方案,还优化了用户交互体验,降低了对专业调试工具的依赖,具有较高的实用价值。这种设计方法对于其他类似单片机平台的Bootloader开发具有参考意义。
2026-02-08 15:36:51 82KB PIC18单片机 Bootloader
1
**AndroidWifiDemo:一个简单的WiFi连接** 在Android平台上开发应用程序时,有时我们需要处理与网络相关的功能,例如连接WiFi网络。AndroidWifiDemo是一个简单的示例项目,它展示了如何在Android应用中实现这一功能。这个项目主要涉及到Java编程语言,因为这是Android开发的基础。 ### 1. WiFi API简介 Android提供了`android.net.wifi`包,该包包含了一系列类和接口,允许开发者管理设备的WiFi连接。关键类包括`WifiManager`,它是与WiFi硬件交互的主要接口。 ### 2. 获取`WifiManager` 在Android应用中,我们首先需要获取`WifiManager`实例。这通常通过`Context`的`getSystemService`方法完成,如下所示: ```java WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); ``` ### 3. 检查WiFi状态 在连接WiFi之前,我们需要检查WiFi是否已开启。可以使用`isWifiEnabled`方法: ```java boolean isWifiEnabled = wifiManager.isWifiEnabled(); if (!isWifiEnabled) { // 打开WiFi wifiManager.setWifiEnabled(true); } ``` ### 4. 获取可用网络列表 `WifiManager`的`scanResults`方法用于获取当前可用的WiFi网络列表。扫描完成后,我们需要注册一个`BroadcastReceiver`来接收`SCAN_RESULTS_AVAILABLE_ACTION`广播,以获取扫描结果。 ```java BroadcastReceiver wifiReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)) { List results = wifiManager.getScanResults(); // 处理扫描结果 } } }; registerReceiver(wifiReceiver, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)); // 不忘在适当的时候unregisterReceiver ``` ### 5. 连接WiFi网络 找到目标网络后,我们可以使用`addNetwork`创建一个网络配置,并通过`saveConfiguration`保存。然后调用`connect`尝试连接到指定的SSID(网络名)。 ```java WifiConfiguration wifiConfig = new WifiConfiguration(); wifiConfig.SSID = "\"你的SSID\""; // 如果有密码,设置预共享密钥 wifiConfig.preSharedKey = "\"你的密码\""; int networkId = wifiManager.addNetwork(wifiConfig); boolean saved = wifiManager.saveConfiguration(); if (saved && networkId != -1) { wifiManager.disconnect(); boolean connected = wifiManager.connect(networkId, new WifiManager.ActionListener() { @Override public void onSuccess() { // 连接成功 } @Override public void onFailure(int reasonCode) { // 连接失败 } }); } ``` ### 6. 权限管理 在AndroidManifest.xml中,需要添加以下权限: ```xml ``` ### 7. 实战AndroidWifiDemo AndroidWifiDemo-master可能包含了这个简单项目的源代码,包括UI界面、事件监听和上述逻辑实现。通过阅读和分析这些代码,你可以更深入地理解如何在实际应用中操作WiFi连接。 总结来说,AndroidWifiDemo是一个学习如何在Android应用中控制WiFi连接的绝佳示例。它涉及了`WifiManager`的使用、扫描网络、连接网络以及权限管理等多个重要知识点。通过对这个项目的研究,开发者可以掌握Android网络连接的核心技术,为构建更复杂的网络应用打下基础。
2026-02-08 14:52:39 193KB Java
1
RISC-V指令集手册 该存储库包含RISC-V指令集手册草案的LaTeX源。 在撰写本文时,RISC-V基金会尚未正式采用这些规范。 本作品已根据知识共享署名4.0国际许可协议获得许可。 有关详细信息,请参见LICENSE文件。 本手册分为以下几卷: 第I卷:用户级ISA 第二卷:特权架构 规范的正式版本可在获得。 规范最新草案的编译版本可在 规范的旧正式版本可在 提供了开源RISC-V实现的marchid CSR值的规范列表。
2026-02-08 14:50:49 453KB
1