Думаю, легче и быстрее будет написать обертку на C# для этой библиотеки. И выглядеть она будет скорее всего так:
Код | [StructLayout(LayoutKind.Sequential)] public struct tagFCPipeUSB { IntPtr m_hPipeIn; IntPtr m_hPipeOut; }
public class PFCPipeUSB { [DllImport("USBLibrary.dll")] public static extern PFCPipeUSB FCPipeUSB_New(); [DllImport("USBLibrary.dll")] public static extern void FCPipeUSB_Delete(PFCPipeUSB hPipe); [DllImport("USBLibrary.dll")] public static extern short FCPipeUSB_Open(PFCPipeUSB hPipe, string sDeviceName); [DllImport("USBLibrary.dll")] public static extern short FCPipeUSB_Close(PFCPipeUSB hPipe); [DllImport("USBLibrary.dll")] public static extern short FCPipeUSB_ReadPipe(PFCPipeUSB hPipe, char[] pBuffer, ulong ulBufferSize); [DllImport("USBLibrary.dll")] public static extern short FCPipeUSB_WritePipe(PFCPipeUSB hPipe, char[] pBuffer, ulong ulBufferSize, ulong pBytesWritten); [DllImport("USBLibrary.dll")] public static extern int GetUsbDeviceListName(ref string[] devicesList);
PFCPipeUSB hPipe;
PFCPipeUSB() { hPipe = new PFCPipeUSB(); }
public short Open(string sDeviceName) { return FCPipeUSB_Open(hPipe, sDeviceName); }
public short Close() { return FCPipeUSB_Close(hPipe); }
public virtual short ReadPipe(char[] buffer, ulong bufferSize) { return FCPipeUSB_ReadPipe(hPipe, buffer, bufferSize); }
public virtual short WritePipe(char[] pBuffer, ulong ulBufferSize, ulong pBytesWritten) { return FCPipeUSB_WritePipe(hPipe, pBuffer, ulBufferSize, pBytesWritten); }
}
|
К сожалению, как я понял библиотека взаимодействует с USB устройствами ATMEL, а у меня их нет, протестировать ее не удалось. |