1

我在从链接到 eBUS SDK 的 .NET dll 调用方法时遇到问题。代码的最终目标是使用 python 与 GigE 连接的相机进行通信。

在 C# 中,该方法是: public void SetStreamDestination( string aIPAddress, ushort aDataPort ) ,并且是名为 PvDeviceGEV 的类的一部分。

在 Python 中,我使用 pythonnet 导入 dll。然后我使用这段代码:

from PvDotNet import PvDeviceGEV
from PvDotNet import PvStreamGEV

DeviceGEV = PvDeviceGEV()
Stream = PvStreamGEV()

LocalIP = Stream.LocalIPAddress
LocalPort = Stream.LocalPort
DeviceGEV.SetStreamDestination(LocalIP, LocalPort)

这会导致错误:

TypeError: No method matches given arguments for SetStreamDestination: (<class 'str'>, <class 'int>)

看到 IPAddress 和 aDataPort 的类型应该分别是 string 和 UInt16 ,我不明白这个错误。我已经能够从这个类中调用其他方法。这是我第一次尝试将函数从另一种语言导入 Python。任何帮助理解或纠正此错误将不胜感激。

4

1 回答 1

0

我通过更改 SetStreamDestination(LocalIP, LocalPort)为解决了这个问题SetStreamDestination(LocalIP, UInt16(LocalPort))

于 2020-09-22T16:30:31.680 回答