TypeError 使用 Pythonnet 调用 .NET 方法
TypeError calling .NET method using Pythonnet
我在从链接到 eBUS SDK 的 .NET dll 调用方法时遇到问题。代码的最终目标是使用 python.
与 GigE 连接的相机通信
在 C# 中,方法是:
public void SetStreamDestination( string aIPAddress, ushort aDataPort )
,并且是名为 PvDeviceGEV 的 class 的一部分。
在 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,我不明白这个错误。我已经能够从此 class 调用其他方法。这是我第一次尝试将函数从另一种语言导入 Python。任何有助于理解或纠正此错误的帮助将不胜感激。
我通过更改解决了这个问题
SetStreamDestination(LocalIP, LocalPort)
至 SetStreamDestination(LocalIP, UInt16(LocalPort))
我在从链接到 eBUS SDK 的 .NET dll 调用方法时遇到问题。代码的最终目标是使用 python.
与 GigE 连接的相机通信在 C# 中,方法是:
public void SetStreamDestination( string aIPAddress, ushort aDataPort )
,并且是名为 PvDeviceGEV 的 class 的一部分。
在 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,我不明白这个错误。我已经能够从此 class 调用其他方法。这是我第一次尝试将函数从另一种语言导入 Python。任何有助于理解或纠正此错误的帮助将不胜感激。
我通过更改解决了这个问题
SetStreamDestination(LocalIP, LocalPort)
至 SetStreamDestination(LocalIP, UInt16(LocalPort))