You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

无法通过pypylon启用Basler相机PTP功能的问题求助

无法通过pypylon启用Basler相机PTP功能的问题求助

我正尝试给多台Basler相机做时钟同步,参考了官方的PTP配置文档,但按照文档里的代码操作时却行不通。

下面是我写的一段独立可运行的测试代码:

from pypylon import pylon

_tlf: pylon.TlFactory = pylon.TlFactory.GetInstance()

devices: list[pylon.DeviceInfo] = list(filter(lambda d: d.GetModelName() == "a2A4200-12gcBAS", _tlf.EnumerateDevices()))
print([d.GetFriendlyName() for d in devices])
cam_array: pylon.InstantCameraArray = pylon.InstantCameraArray(len(devices))
for device, cam in zip(devices, cam_array, strict=True):
    cam.Attach(_tlf.CreateDevice(device))
    cam.Open()

for cam in cam_array:
    assert cam.IsOpen()
    cam.PtpEnable.Value = True

这个脚本能正确识别到我的所有相机,打印出的序列号如下:

['Basler a2A4200-12gcBAS (40400219)', 'Basler a2A4200-12gcBAS (40400220)', 'Basler a2A4200-12gcBAS (40400221)', 'Basler a2A4200-12gcBAS (40400222)']

但紧接着就抛出了权限相关的错误:

Traceback (most recent call last):
  File "/home/samdm/Safe/0041-VFE/rt-vfe/packages/vfe_rt_plugin_basler/scripts/ptp_stackoverflow.py", line 14, in <module>
    cam.PtpEnable.Value = True
    ^^^^^^^^^^^^^^^^^^^
  File "/home/samdm/Safe/0041-VFE/rt-vfe/packages/vfe_rt_plugin_basler/.venv/lib/python3.12/site-packages/pypylon/genicam.py", line 2073, in SetValue
    return _genicam.IBoolean_SetValue(self, Value, Verify)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_genicam.AccessException: Node is not writable. : AccessException thrown in node 'PtpEnable' while calling 'PtpEnable.SetValue()' (file 'BooleanT.h', line 61)

奇怪的是,我在Pylon Viewer里完全可以正常勾选或取消Enable Ptp这个选项,没有任何问题。

请问我是不是漏掉了某个配置步骤?

备注:内容来源于stack exchange,提问作者Sam De Meyer

火山引擎 最新活动