Skip to main content

使用 PI 设备和处理 GCS 数据的库集合。

项目描述

PIPython

PIPython 是 Python 模块的集合,用于访问 PI 设备和处理 GCS 数据。它可以在 Windows、Linux 和 OS X 上与 Python 3.6+ 一起使用,并且在任何其他平台上也可以在没有 GCS DLL 的情况下使用。

安装

使用 PIPython 即表示您同意许可协议,请参阅提供的文件:

eula.md

从本地文件夹

解压缩文件 PIPython.zip,打开命令条目(Linux 控制台或 Windows CMD 窗口)并运行:

python setup.py install

如需进一步阅读,请在浏览器中 打开index.html文件并查看示例文件夹中的示例。

来自 GitHub

GitHub 上的 PIPython

git clone git@github.com:PI-PhysikInstrumente/PIPython.git
python setup.py install

来自 pypi.org

pip install PIPython    

反馈

我们感谢您的反馈:

service@pi.de

快速开始

GCSDevice与封装 GCS DLL 函数并提供连接到设备的方法的 PI 设备通信。GCSDevice使用控制器名称作为参数调用。

from pipython import GCSDevice
pidevice = GCSDevice('C-884')
pidevice.InterfaceSetupDlg()
print pidevice.qIDN()
pidevice.CloseConnection()

GCSDevicewith是一个上下文管理器,如果在语句中引发异常,它会关闭连接。

from pipython import GCSDevice
with GCSDevice('C-884') as pidevice:
    pidevice.InterfaceSetupDlg()
    print(pidevice.qIDN())

samples另请参阅子目录中提供的示例。开始quickstart.py

要求

使用 pip install 下载这些 python 包:

  • PyUSB
  • PySocket
  • PySerial

使用 pipython.interfaces.piusb,您可以在不使用 GCS DLL 的情况下连接 USB 设备。这仅适用于 Linux,并且需要通常由操作系统提供的 LibUSB。

论据

从现在开始pidevice是指一个连接的GCSDevice实例。

设置器函数

通常你可以调用一个setter函数

  • 轴/通道和值的字典
  • 轴/通道列表和值列表
  • 轴/通道的单个项目和单个值
gcs.MOV({'X': 1.23, 'Y': 2.34})
gcs.MOV(['X', 'Y'], [1.23, 2.34])
gcs.MOV('X', 1.23)

对于通道和数字轴名称,您可以省略引号。

gcs.MOV({1: 1.23, 2: 2.34})
gcs.MOV([1, 2], [1.23, 2.34])
gcs.MOV(1, 1.23)

吸气剂函数

地面站 2.0

通常可以使用 getter 命令调用

  • 轴/通道列表。
  • 轴/通道的单个项目,如果是数字则不带引号
  • 没有任何参数将返回所有可用轴/通道的答案
gcs.qPOS(['X', 'Y'])
gcs.qPOS('X')
gcs.qPOS(1)
gcs.qPOS()

地面站 3.0

通常可以使用 getter 命令调用

  • 单轴
  • 没有任何参数将返回所有可用轴的答案
gcs.qPOS('AXIS_1')
gcs.qPOS()

返回值

轴或通道相关的答案作为(有序)字典返回。

pidevice.qPOS()
>>>{'X': 1.23, 'Y': 2.34}

如果您不提供参数,则始终必须使用字符串作为键。

pos = pidevice.qPOS()
print(pos['1'])

以下示例将全部axes移至targets并等待动作完成。它显示了如何仅使用返回字典中的值。

from time import sleep
...
pidevice.MOV(axes, targets)
while not all(list(pidevice.qONT(axes).values())):
    sleep(0.1)

地面站 2.0

如果您提供参数,它们的类型将被保留,您可以将它们用作键。

pos = pidevice.qPOS([1, 2, 3])
print(pos[1])

地面站 3.0

如果您提供参数,它们的类型将被保留,您可以将它们用作键。

pos = pidevice.qPOS('AXIS_1') # only one axis is possible
print(pos['AXIS_1'])

一些提示...

帮手

为了pipython.pitools您的方便,您会在其中找到一些辅助功能。请参阅提供的示例以了解如何使用它们。上面的示例可以写成:

from pipython import pitools
...
pidevice.MOV(axes, targets)
pitools.waitontarget(pidevice, axes)

启用调试日志记录

要在控制台上记录调试消息,只需在调用之前输入这些行GCSDevice

from pipython import PILogger, DEBUG, INFO, WARNING, ERROR, CRITICAL

PILogger.setLevel(DEBUG)

GCSError 和错误检查

默认情况下,“ERR?” 命令在每个命令之后发送以查询设备上是否发生错误,然后将其作为GCSError异常引发。如果通信速度是一个问题,您可以禁用错误检查。

pidevice.errcheck = False

要处理捕获的GCSError异常,您可以使用由提供的定义 gcserror而不是纯数值。GCSError请记住哪个是异常类和gcserror哪个是相应的模块之间的区别。

from pipython import GCSDevice, GCSError, gcserror
with GCSDevice('C-884') as pidevice:
    try:
        pidevice.MOV('X', 1.23)
    except GCSError as exc:
        if exc == gcserror.E_1024_PI_MOTION_ERROR:
            print('There was a motion error, please check the mechanics.')
        else:
            raise

异常类GCSError会将错误代码转换为可读消息。

from pipython import GCSError, gcserror
raise GCSError(gcserror.E_1024_PI_MOTION_ERROR)
>>>GCSError: Motion error: position error too large, servo is switched off automatically (-1024)

地面站 3.0

  • 重置 1 个或多个轴的错误状态
for axis in device.axes:
    if axis_has_error(device):
        while check_axis_status_bit(device, axis, AXIS_STATUS_FAULT_REACTION_ACTIVE):
            pass
        print('reset axis error: ', axis)
        device.RES(axis)

大数据

qDRR()对于 GCS 2.0 语法或qREC_DAT()读取大量 GCS 数据的 GCS 3.0 语法等命令会立即返回包含有关数据信息的标题字典。然后他们将启动一个后台任务,将设备中的数据读取到内部缓冲区中。该 bufstate属性以 0 到 1 范围内的浮点数形式返回读取进度,并True在读取完成时返回。因此,当在循环中使用它时,检查 is not True. (请记住,这与.)不同!= True。)

地面站 2.0

header = pidevice.qDRR(1, 1, 8192)
while pidevice.bufstate is not True:
    print('read data {:.1f}%...'.format(pidevice.bufstate * 100))
    sleep(0.1)
data = pidevice.bufdata

地面站 3.0

header = pidevice.qREC_DAT('REC_1', 'ASCII', 1, 1, 8192)
while pidevice.bufstate is not True:
    print('read data {:.1f}%...'.format(pidevice.bufstate * 100))
    sleep(0.1)
data = pidevice.bufdata

文字界面

除了 GCSCommands 中实现的功能之外,您还可以将 GCS 命令作为字符串发送到控制器。用于read()返回答案read_gcsdata()的命令、返回 GCS 数据的命令和send()无应答命令。

print(pidevice.read('POS?'))
print(pidevice.read_gcsdata('DRR? 1 100 1'))
pidevice.send('MOV X 1.23')

它们从控制器返回原始字符串或 GCS 数据。如果errorcheck启用,则会自动从设备查询错误状态。我们建议使用提供的函数而不是发送原始字符串。

与 C++ GCS DLL 一致,这些功能ReadGCSCommand()GcsCommandset()可用。他们永远不会从设备中查询错误。

print(pidevice.ReadGCSCommand('POS?'))
pidevice.GcsCommandset('MOV X 1.23')

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

PIPython-2.8.0.3.tar.gz (1.1 MB 查看哈希

已上传 source

内置分布

PIPython-2.8.0.3-py3-none-any.whl (176.4 kB 查看哈希

已上传 py3