@Brett When I try
bitmapsrc = BitmapSource() I get the following error: Traceback (most recent call last): File "C:\Users\mdk\workspace\\camera\testbitmap.py", line 8, in <module> bitmapsrc = BitmapSource() TypeError: cannot instantiate abstract class I will have a look at System.Reflection, thanks for the hint. @Brad The documentation does not say anything about "safe" or "unsafe". I do not have the source for the dll, only for the examples shipped with the dll. If you would like to have a look at them, I could send them to you. Daniel 2013/1/23 b...@fie.us <b...@fie.us> > Just to clarify: neither version of the methods you are calling are marked > "unsafe" in the proper c# .net manner are they? I would not be surprised > to find PythonNet not providing access to "unsafe" methods. I would need > to take a trip through the source to verify. > > On Jan 22, 2013, at 4:10 PM, Daniel Krause <m.daniel.kra...@googlemail.com> > wrote: > > That is right, I want to get the value of the output parameter. > > The following variant looks much more logical to me, but than I get > another error: > bitmapsrc = cam.GetImage(timeout) > TypeError: No method matches given arguments > > So it seems that I have to pass the "out"-parameter to the method as well, > but that was not working either. > > > > 2013/1/22 b...@fie.us <b...@fie.us> > >> You are setting the bitmapsrc variable to be equal to the class >> BitmapSource. I assume you mean to get the value of an output parameter, >> rather than pass a class object into the method. >> >> Though I do not speak german. But I think that's it. >> >> On Jan 22, 2013, at 2:58 PM, Daniel Krause < >> m.daniel.kra...@googlemail.com> wrote: >> >> > I want to use a method from an API to control a camera >> (xiApi.NETX64.dll). >> > >> > The method is described in two ways: >> > // >> > void GetImage( out WriteableBitmap image, int timeout) >> > Description : This function acquires image and returns fills >> WritableBitmap object. Supports UNSAFE buffer policy mode. >> > Parameters : >> > out WriteableBitmap image : WPF BitmapSource to be filled. >> > int timeout : Time interval required to wait for the image (in >> milliseconds). >> > // >> > void GetImage(WriteableBitmap image, int timeout) >> > Description : This function acquires image and returns fills >> WritableBitmap object. Supports SAFE buffer policy mode. >> > Parameters : >> > WriteableBitmap image : WPF BitmapSource to be filled. >> > int timeout : Time interval required to wait for the image (in >> milliseconds). >> > // >> > >> > The code in a c#-sample looks like this (I skipped the initialisation >> of myCam, but if it helps I can provide the complete code): >> > // >> > using System.Windows.Media.Imaging; >> > int timeout = 10000; >> > BitmapSource myBitmapSrc; >> > myCam.GetImage(out myBitmapSrc, timeout); >> > // >> > This code I can compile, and it is working. >> > >> > I tried to keep the python code as close as possible, but I get errors >> I do not understand: >> > ## >> > import clr >> > import sys >> > sys.path.append("C: >> \\Windows\\Microsoft.NET\\Framework64\\v4.0.30319\\WPF") >> > clr.AddReference("PresentationCore") >> > clr.AddReference("xiAPI.NETX64") >> > from xiApi.NET import * >> > from System.Windows.Media.Imaging import BitmapSource >> > bitmapsrc = BitmapSource >> > print bitmapsrc >> > cam = xiCam() >> > cam.OpenDevice(0) >> > cam.SetParam(PRM.BUFFER_POLICY, BUFF_POLICY.SAFE) >> > cam.SetParam(PRM.IMAGE_DATA_FORMAT, IMG_FORMAT.MONO8) >> > cam.StartAcquisition() >> > timeout = 1000 >> > bitmapsrc = cam.GetImage(bitmapsrc, timeout) >> > cam.StopAcquisition() >> > ## >> > >> > Console output: >> > <class 'System.Windows.Media.Imaging.BitmapSource'> >> > Traceback (most recent call last): >> > File "C:\Users\mdk\workspace\camera\testbitmap.py", >> > line 17, in <module> >> > bitmapsrc = cam.GetImage(bitmapsrc, timeout) >> > System.ArgumentException: Das Objekt mit dem Typ "System.RuntimeType" >> kann nicht >> > in den Typ "System.Drawing.Bitmap&" konvertiert werden. >> > bei System.RuntimeType.TryChangeType(Object value, Binder binder, >> CultureInfo >> > culture, Boolean needsSpecialCast) >> > >> > bei System.Reflection.MethodBase.CheckArguments(Object[] parameters, >> Binder b >> > inder, BindingFlags invokeAttr, CultureInfo culture, Signature sig) >> > >> > bei System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(Object >> obj, Bind >> > ingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo >> culture) >> > >> > bei System.Reflection.RuntimeMethodInfo.Invoke(Object obj, >> BindingFlags invok >> > eAttr, Binder binder, Object[] parameters, CultureInfo culture) >> > >> > bei Python.Runtime.MethodBinder.Invoke(IntPtr inst, IntPtr args, >> IntPtr kw, M >> > ethodBase info, MethodInfo[] methodinfo) >> > _________________________________________________ >> > Python.NET mailing list - PythonDotNet@python.org >> > http://mail.python.org/mailman/listinfo/pythondotnet >> >> > _________________________________________________ > Python.NET mailing list - PythonDotNet@python.org > http://mail.python.org/mailman/listinfo/pythondotnet > > >
_________________________________________________ Python.NET mailing list - PythonDotNet@python.org http://mail.python.org/mailman/listinfo/pythondotnet