自定义库模块增加自定义许可操作详细方法

自定义库模块增加自定义许可操作详细方法

用到的工具:
在这里插入图片描述
后面程序用到的所有代码均是该工具生成的秘密!!!!

【切记切记!!! 一定要记住密码,不然如果你想将库的许可认证移除,则无法无法实现】

关键字认识:

1、setRequiredLicense

setRequiredLicense【设置库记载时检查秘钥,如果秘钥错误或版本错误或时间过期均无法加载秘钥】
案例演示:

--策略功能说明:
--配置库秘钥检查【如果秘钥不对则直接加载失败】
-------------------------------------------------------------------------------------Called By :--Calls  :--Author:Yechaocheng--CreateDate  : 2025/05/17 10:20:35.3210
-------------------------------------------------------------------------------------History:--2025/05/17  KM  SimTalk 2.0
-----------------------------------------------------------------------------------
-->USER CODE BEGIN
-----------------------------------------------------------------------------------
RootFolder.setRequiredLicense("AHRF_KEYGEN","1.0.0","18D77674-23E1-4329-B470-F58E8DC59B17","","安徽锐锋科技秘钥管理:提醒您请联系您的服务商获取许可证!请从(文件 > 首选项 > 许可证下单击查询主机 ID)获取HostID 并提供给服务商!")
-----------------------------------------------------------------------------------
-->USER CODE End
-----------------------------------------------------------------------------------

官方说明:
setRequiredLicense [SimTalk]
语法

.setRequiredLicense(Feature:string, Version:string, Password:string[, FreeInLicense:string, Comment:string, PreviousPasswordForUpdate:string])
描述

方法 setRequiredLicense 用于告知 指定的库文件夹请求用户定义的许可证。

加载包含此类库的仿真模型或对象时,Plant Simulation 会在 Windows 注册表中查找相应的用户定义许可证。如果未找到具有指定功能名称的有效许可证,Plant Simulation 无法分别加载仿真模型或对象。

仅当版本高于或等于请求的版本、许可证的主机 ID 与计算机的主机 ID 匹配、未超过许可证的有效日期以及已注册许可证的密码与所请求许可证的密码匹配时,注册的许可证才有效。

可使用用户定义许可证限制仿真模型和对象(包括库)的传递。

要限制仿真模型的传递,调用 basis.setRequiredLicense,然后保存模型。

要限制库的传递,针对库文件夹调用 setRequiredLicense,然后保存库。

更新需要用户定义库的库时,新版本的库还必须请求此用户定义许可证(即,功能相同),请求的版本号必须至少与旧库一样大,并且许可证必须使用相同的密码进行保护。

如果要为较新版本的库指派其他密码,调用方法 setRequiredLicense,然后将空字符串 “” 传递给参数 Feature,将旧密码传递给参数 Password。这将取消注册用户定义的许可证。然后再次调用方法 setRequiredLicense,将许可证功能的名称传递到参数 Feature,将新密码传递到参数 Password,将旧密码传递到参数 PreviousPasswordForUpdate。库不仅可根据上述规则更新使用新密码的库版本,还可以更新使用旧密码的任何库版本,即使许可证功能的名称更改或新版本号低于旧库的版本号也是如此。

参数

数据类型为 string 的 Feature 参数用于指定许可证功能的名称。传递空字符串 “” 时,将移除现有许可证,前提是输入了正确的密码。

数据类型为 string 的 Version 参数用于指定许可证的版本号。注:已注册版本必须大于或等于请求的许可证。

例如,如果已注册功能的版本 10,可以请求版本 9.5.0,反之不行。

数据类型为 string 的 Password 参数用于指定密码。已注册许可证的密码必须与此密码一致,才会将已注册的许可证视为有效。

数据类型为 string 的可选参数 FreeInLicense 用于设置当 Plant Simulation 使用请求的许可证类型或值较低的许可证类型时,不请求用户定义的许可证。可以输入 “Application”、“Runtime”、“Simulation”、“” 或 “-”。

值的含义如下:

“-”:许可证永不免费,即使在查看器许可证中也如此。

“”:许可证仅在查看器许可证中免费。这是不输入参数时的默认设置。

“Simulation”:许可证在仿真和较低的查看器许可证中免费。

“Runtime”::许可证在运行时许可证和较低的许可证类型(即仿真和查看器)中免费。

“Application”:许可证在应用许可证和较低的许可证类型(即运行时、仿真和查看器)中免费。

“Educational”:许可证在教育许可证和较低的许可证类型(即运行时、仿真和查看器)中免费。

数据类型为 string 的可选参数 Comment 用于设置将附加到消息的文本,如果在加载对象或模型时不存在许可证,该文本会在消息窗口中显示。这仅在输入任何文本时适用。

数据类型为 string 的可选参数 PreviousPasswordForUpdate 用于指定更新库的先前密码。

可以使用 SimTalk 函数 createLicenseFile 生成用户定义许可证。

示例

.Standard.MyLibrary.setRequiredLicense(“MyFeature”, “9.5.7”, “MySecretPassword123”)

2、checkForLicense

checkForLicense【秘钥有效性检查】

案例演示:

--策略功能说明:
--本程序用于自定义程序进行秘钥检查,一般只需要初始化的时候调用一次即可
-------------------------------------------------------------------------------------Called By :--Calls  :--Author:Yechaocheng--CreateDate  : 2025/05/17 10:13:34.6020
-------------------------------------------------------------------------------------History:--2025/05/17  KM  SimTalk 2.0
-----------------------------------------------------------------------------------
-->USER CODE BEGIN
-----------------------------------------------------------------------------------
param KeyName:string:="AHRF_KEYGEN",keyPwd:string:="18D77674-23E1-4329-B470-F58E8DC59B17"->boolean
var InPUTValue:string:=computeSHA1Hash(keyPwd)
var CheckValue:integer:=checkForLicense(KeyName, "1", InPUTValue)
if CheckValue=0return true//0:许可证功能已注册且有效。
end
var Err:string
switch CheckValue
case 1Err:="许可证功能未注册!"
case 2Err:="文件具有无效的注册表数据格式!"
case 3Err:="SHA-1 哈希错误!"
case 4Err:="主机 ID 错误!"
case 5Err:="功能的注册版本太旧!"
case 6Err:="许可证已过期!"
case 7Err:="此功能不允许与 Plant Simulation 许可证类型 (Professional / Standard / Runtime /...) 一同使用!"
elseErr:="未知错误!"
end
messageBox(to_str("|安琥锐锋科技提醒您:|",Err),0,1)
return false
--closemodel //强制关闭当前模型
-----------------------------------------------------------------------------------
-->USER CODE End
-----------------------------------------------------------------------------------

完整功能代码代码如下:

--策略功能说明:-------------------------------------------------------------------------------------Called By :--Calls  :--Author:Yechaocheng--CreateDate  : 2025/05/17 10:13:34.6020
-------------------------------------------------------------------------------------History:--2025/05/17  KM  SimTalk 2.0
-----------------------------------------------------------------------------------
-->USER CODE BEGIN
-----------------------------------------------------------------------------------
->boolean
//哈希转换
var InPUTValue:string:=computeSHA1Hash("585E4D1C-9E64-415F-A83B-E4E0FBABBB6C")
//秘钥验证
var CheckValue:integer:=checkForLicense("MyFeature", "1", InPUTValue)
if CheckValue=0return true//0:许可证功能已注册且有效。
end
var Err:string
switch CheckValue
case 1Err:="许可证功能未注册!"
case 2Err:="文件具有无效的注册表数据格式!"
case 3Err:="SHA-1 哈希错误!"
case 4Err:="主机 ID 错误!"
case 5Err:="功能的注册版本太旧!"
case 6Err:="许可证已过期!"
case 7Err:="此功能不允许与 Plant Simulation 许可证类型 (Professional / Standard / Runtime /...) 一同使用!"
elseErr:="未知错误!"
end
messageBox(to_str("|安琥锐锋科技提醒您:|",Err),0,1)
return false
--closemodel //强制关闭当前模型
-----------------------------------------------------------------------------------
-->USER CODE End
-----------------------------------------------------------------------------------

官方说明:
checkForLicense [SimTalk]
语法

checkForLicense(Feature:string, Version:string, PasswordHash:string) → integer
描述

checkForLicense 函数检查用户定义的许可证是否可用。

参数

数据类型为 string 的 Feature 参数用于指定许可证功能的名称。

字符串数据类型的版本参数指定所请求许可证的版本号。

字符串数据类型的密码哈希参数指定许可证密码的 SHA-1 哈希。

返回值的数据类型

返回值的数据类型为整数。

各个值的含义如下:

0:许可证功能已注册且有效。

1:许可证功能未注册。

2:文件具有无效的注册表数据格式。

3:SHA-1 哈希错误。

4:主机 ID 错误。

5:功能的注册版本太旧。

6:许可证已过期。

7:此功能不允许与 Plant Simulation 许可证类型 (Professional / Standard / Runtime /…) 一同使用。

示例

if checkForLicense(“MyFeature”, “1”, “686483805ac47ca14e03514f7481a7973b401762”) = 0
// The license is available, you can proceed …
else
closeModel
messageBox(“The license ‘MyFeature’ is unavailable. The model was closed.\n”, 1, 1)
end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/83458.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python的漫画网站管理系统

目录 技术栈介绍具体实现截图![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/0ed2084038144499a162b3fb731a5f37.png)![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/a76a091066f74a80bf7ac1be489ae8a8.png)系统设计研究方法:设计步骤设计流程核…

Python循环性脚本实践要点:打造稳定高效的定时任务

在Python开发中,循环性脚本(长时间运行并定期执行任务的脚本)非常常见,比如监控系统、数据采集程序、定时清理任务等。这类脚本虽然看似简单,但实际开发中容易遇到各种陷阱。本文将分享六大核心实践要点,帮…

编程基础:什么是变量

文章目录 变量:双要素变量必须代表一个意义:编程不需要无意义的变量。只要是变量,都需要有一个意义。变量必须要有不同的值:编程不需要只有一个值的变量。只要是变量,都需要有不同的值。 双要素少一个都不是变量即看见…

利用SenseGlove触觉手套开发XR手术训练体验

VirtualiSurg和VR触觉 作为领先的培训平台,VirtualiSurg自2017年以来一直利用扩展现实 (XR) 和触觉技术,为全球医疗保健行业提供个性化、数据驱动的学习解决方案。该平台赋能医疗专业人员进行协作式学习和培训,提升他们的技能,使…

【记录】Windows|竖屏怎么调整分辨率使横竖双屏互动鼠标丝滑

本文版本:Windows11,记录一下,我最后调整的比较舒适的分辨率是800*1280。 文章目录 第一步 回到桌面第二步 右键桌面第三步 设置横屏为主显示器第四步 调整分辨率使之符合你的需求第五步 勾选轻松在显示器之间移动光标第六步 拖动屏幕符合物理…

手机打电话时如何将通话对方的声音在手机上识别成文字

手机打电话时如何将通话对方的声音在手机上识别成文字 --本地AI电话机器人 上一篇:手机打电话时由对方DTMF响应切换多级IVR语音应答(一) 下一篇:手机打电话时由对方DTMF响应切换多级IVR语音应答(二) 一、…

uniapp-商城-61-后台 新增商品(添加商品到数据库)

完成商品的布局&#xff0c;完成商品的属性添加&#xff0c;最后的目的还是要完成数据添加&#xff0c;将我们前台的数据添加后台的数据库。 1、界面 2、点击提交完成商品添加 点击下方的提交按钮&#xff0c;将数据添加到数据库。 onSubmit 使用该函数---见3 <view cla…

A级、B级弱电机房数据中心建设运营汇报方案

该方案围绕A 级、B 级弱电机房数据中心建设与运营展开,依据《数据中心设计规范》等标准,施工范围涵盖 10 类机房及配套设施,采用专业化施工团队与物资调配体系,强调标签规范、线缆隐藏等细节管理。运营阶段建立三方协同运维模式,针对三级故障制定30 分钟至 1 小时响应机制…

RAG数据处理:PDF/HTML

RAG而言用户输入的数据通常是各种各样文档&#xff0c;本文主要采用langchain实现PDF/HTML文档的处理方法 PDF文档解析 PDF文档很常见格式&#xff0c;但内部结构常常较复杂&#xff1a; 复杂的版式布局多样的元素&#xff08;段落、表格、公式、图片等&#xff09;文本流无…

时源芯微| KY键盘接口静电浪涌防护方案

KY键盘接口静电浪涌防护方案通过集成ESD保护元件、电阻和连接键&#xff0c;形成了一道有效的防护屏障。当键盘接口受到静电放电或其他浪涌冲击时&#xff0c;该方案能够迅速将过电压和过电流引导至地&#xff0c;从而保护后续电路免受损害。 ESD保护元件是方案中的核心部分&a…

Java 原生网络编程(BIO | NIO | Reactor 模式)

1、基本常识 Socket 是应用层与 TCP/IP 协议族通信的中间软件抽象层&#xff0c;是一组接口&#xff0c;使用了门面模式对应用层隐藏了传输层以下的实现细节。TCP 用主机的 IP 地址加上主机端口号作为 TCP 连接的端点&#xff0c;该端点叫做套接字 Socket。 比如三次握手&…

OpenCV透视变换

概念 OpenCV 透视变换是将图像从一个视平面投影到另一个视平面的过程&#xff0c;也叫投影映射 &#xff0c;属于空间立体三维变换。它基于透视原理&#xff0c;通过 33 的变换矩阵作用于图像像素坐标来实现映射转换 &#xff0c;能模拟人眼或相机镜头观看三维空间物体时的透视…

STM32F103定时器1每毫秒中断一次

定时器溢出中断&#xff0c;在程序设计中经常用到。在使用TIM1和TIM8溢出中断时&#xff0c;需要注意“TIM_TimeBaseStructure.TIM_RepetitionCounter0;”&#xff0c;它表示溢出一次&#xff0c;并可以设置中断标志位。 TIM1_Interrupt_Initializtion(1000,72); //当arr1…

数据库——SQL约束窗口函数介绍

4.SQL约束介绍 &#xff08;1&#xff09;主键约束 A、基本内容 基本内容 p r i m a r y primary primary k e y key key约束唯一表示数据库中的每条记录主键必须包含唯一的值&#xff08;UNIQUE&#xff09;主键不能包含NULL值&#xff08;NOT NULL&#xff09;每个表都应…

【typenum】 8 常量文件(consts.rs)

一、源码 这段代码通过类型级编程&#xff08;type-level programming&#xff09;在编译期实现数值计算。以下是常量定义部分&#xff1a; // THIS IS GENERATED CODE #![allow(missing_docs)] use crate::int::{NInt, PInt}; /** Type aliases for many constants.This fil…

第8讲、Multi-Head Attention 的核心机制与实现细节

&#x1f914; 为什么要有 Multi-Head Attention&#xff1f; 单个 Attention 机制虽然可以捕捉句子中不同词之间的关系&#xff0c;但它只能关注一种角度或模式。 Multi-Head 的作用是&#xff1a; 多个头 多个视角同时观察序列的不同关系。 例如&#xff1a; 一个头可能专…

百度智能云千帆携手联想,共创MCP生态宇宙

5月7日&#xff0c;2025联想创新科技大会&#xff08;Tech World&#xff09;在上海世博中心举行&#xff0c;本届大会以“让AI成为创新生产力”为主题。会上&#xff0c;联想集团董事长兼CEO杨元庆展示了包括覆盖全场景的超级智能体矩阵&#xff0c;包括个人超级智能体、企业超…

【OpenCV】帧差法、级联分类器、透视变换

一、帧差法&#xff08;移动目标识别&#xff09;&#xff1a; 好处&#xff1a;开销小&#xff0c;不怎么消耗CPU的算力&#xff0c;对硬件要求不高&#xff0c;但只适合固定摄像头 1、优点 计算效率高&#xff0c;硬件要求 响应速度快&#xff0c;实时性强 直接利用连续帧…

数据库迁移的艺术:团队协作中的冲突预防与解决之道

title: 数据库迁移的艺术:团队协作中的冲突预防与解决之道 date: 2025/05/17 00:13:50 updated: 2025/05/17 00:13:50 author: cmdragon excerpt: 在团队协作中,数据库迁移脚本冲突是常见问题。通过Alembic工具,可以有效地管理和解决这些冲突。冲突预防的四原则包括功能分…

Linux常用命令43——bunzip2解压缩bz2文件

在使用Linux或macOS日常开发中&#xff0c;熟悉一些基本的命令有助于提高工作效率&#xff0c;bunzip2可解压缩.bz2格式的压缩文件。bunzip2实际上是bzip2的符号连接&#xff0c;执行bunzip2与bzip2 -d的效果相同。本篇学习记录bunzip2命令的基本使用。 首先查看帮助文档&#…