Re: [Python.NET] Getting an open Python file handle into CLR

Ron Harding via PythonDotNet <[email protected]>
Newsgroups gmane.comp.python.dotnet
Message-ID <[email protected]>
>how do I cast a win32 file handle to an IntPtr?

i ran into this in the past as well; specifically when i started using FTDI USB devices on DLPdesign development kits.  the library is written in c++ MFC code.  After providing data marshal/platform invoke i applied the intptr in c#.   The USB device that I am accessing, passes a file handle to indicate specific pass / fail condition.  i.e. the first command opens a connection to the device, the expected handle is 'OK'.  if not one of many different possible error messages is passed in the file handle.  

SummaryOpen the device and return a handle which will be used for subsequent accesses.DefinitionFT_STATUS FT_Open (int iDevice, FT_HANDLE *ftHandle)ParametersiDevice Index of the device to open. Indices are 0 based.ftHandle Pointer to a variable of type FT_HANDLE where the handle will bestored. This handle must be used to access the device.Return ValueFT_OK if successful, otherwise the return value is an FT error code.
public class Wrapper{private static IntPtr m_USBhandler;
[DllImport("FTD2XX.dll", EntryPoint="FT_Open")]public static extern uint FT_Open(int iDevice, ref IntPtr ftHandle);
[DllImport("FTD2XX.dll", EntryPoint="FT_Close")]public static extern uint FT_Close(IntPtr ftHandle);
[DllImport("FTD2XX.dll", EntryPoint="FT_Read")]public static extern uint FT_Read(IntPtr ftHandle, byte[] lpBuffer,uint dwBytesToRead, ref uintlpdwBytesReturned);
[DllImport("FTD2XX.dll", EntryPoint="FT_Write")]public static extern uint FT_Write(IntPtr ftHandle, byte[] lpBuffer,uint dwBytesToWrite, ref uintlpdwBytesWritten);
[DllImport("FTD2XX.dll", EntryPoint="FT_Purge")]public static extern uint FT_Purge(IntPtr ftHandle, uint dwMask);
public static bool OpenDevice(){if (((FT_Status)Wrapper.FT_Open(1, ref m_USBhandler)) ==FT_Status.Ok){return true;}else{return false;}}

i hope this helps you by seeing one way of applying file handles in c#. 
Ron  “The desire that guides me in all I do is the desire to harness the forces of nature to the service of mankind.”Nikola Tesla“Radio Power Will Revolutionize the World” (Modern Mechanix & Inventions, July, 1934) 


     On Tuesday, July 21, 2015 11:12 AM, Dan Lenski <[email protected]> wrote:
   

 Ron Harding via PythonDotNet <pythondotnet@...> writes:

> perhaps re-directed command line calls for stdin, stdout, stderr in c# 
interacting with python i/o command line calls(although in python it is 
common practice to daisy chain commands).

Unfortunately, I cannot redirect the output of the C# library to a 
convenient filehandle like stdout/stderr; I need to be specify a 
FileStream object.

It pretty much comes down to this: how do I cast a win32 file handle to an 
IntPtr?

Thanks,
Dan

_________________________________________________
Python.NET mailing list - [email protected]
https://mail.python.org/mailman/listinfo/pythondotnet

_________________________________________________
Python.NET mailing list - [email protected]
https://mail.python.org/mailman/listinfo/pythondotnet
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.