Skip to content

swbpy2.swblmclient 模块

概述

swbpy2.swblmclient 实现了与 swblm 通信守护进程交换消息的类。您可以使用预定义的通信方法,或者通过 swblm 通信接口与其他工具交换自定义消息。

要使用自定义通信,您需要在 SWBLM 守护进程的运行工具表中注册一个 swbpy2.swblmclient.Client 实例。具体示例请参考 Examples。

类和方法列表

class swbpy2.swblmclient.Client(projectpath, toolname='swblmclient-py', registertool=False)

基类:SWBLMClient

与 SWBLM 传输层通信的客户端类。


Client.AbortNodes(nodes=[])

指示 gsub 中止给定的一组节点(或所有节点)。

参数

  • nodes (list):要中止的输入节点列表;如果列表为空,则中止所有节点。

Client.AddObserver(observer)

添加 Observer 对象以接收 SWBLM 消息。

参数

  • observer (swbpy2.swblmclient.Observer.Observer): Observer 类型实例。

抛出

  • TypeError: 如果输入 observer 不是 swbpy2.swblmclient.Observer.Observer 类型。

Client.IsRegistered()

检查客户端是否已在 SWBLM 守护进程注册。

返回

  • bool: 客户端是否已注册。

Client.LoadFileInSvisual(inputfile)

指示 SVisual 加载给定的绘图文件或脚本文件。

参数

  • inputfile (str): 输入脚本文件。

抛出

  • ValueError: 未提供输入脚本文件。

Client.ReloadInSWB()

在 SWB GUI 中重新加载 SWB 项目(如果已打开)。


Client.RemoveObserver(observer)

移除 Observer 对象以停止接收 SWBLM 消息。

抛出

  • TypeError: 如果输入 observer 不是 swbpy2.swblmclient.Observer.Observer 类型。

Client.SendMessage(args)

通过 SWBLM 传输层发送消息给接收者。

抛出

  • ValueError: 如果 RECIPIENTS 列表为空。
  • ValueError: 如果未提供 COMMAND

注意: 具体用例请参考 Examples。


class swbpy2.swblmclient.Observer

基类:ABC, SWBObserver

从 SWBLM 传输层接收消息的 Observer 接口。


Observer.HandleEvents(args) (abstract)

当从 SWBLM 守护进程接收到消息时调用的回调函数。

参数

  • args (dict): 从 SWBLM 守护进程接收到的键值对字典,包含一组消息值。

注意: 具体用例请参考 Examples。

示例

swbpy2.swblmclient.Observer observer 类可用于建模自定义实体,该实体使用 swbpy2.swblmclient.Client 类型的 Python 客户端实例处理通过 SWBLM 守护进程交换的消息:

python
# custom observer class to process SWBLM messages
from swbpy2.swblmclient.Observer import Observer

class ProcessMessage(Observer):
    def __init__(self):
        super().__init__()

    def HandleEvents(self, args):
        # custom logic to process SWBLM message
        # e.g. output message map received
        for key in args:
            print('key:', key, 'value:', args[key])

# sender
from swbpy2.swblmclient import Client
import ProcessMessage

client = Client('/u/username/Applications_Library/GettingStarted/swb/SimpleMOS/', 'python-client-sender', True)
args = dict()
args['RECIPIENTS'] = 'python-client-receiver'
args['PROJECT'] = client.GetProjectPath()
args['COMMAND'] = 'TEST_COMMAND'
args['KEY_01'] = 'VALUE_01'
args['KEY_02'] = 'VALUE_02'
client.SendMessage(args)

# receiver
from swbpy2.swblmclient import Client
import ProcessMessage

client = Client('/u/username/Applications_Library/GettingStarted/swb/SimpleMOS/', 'python-client-receiver', True)
_ob = ProcessMessage()
client.AddObserver(_ob)

基于 Sentaurus TCAD 官方文档构建

代码块