You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

107 lines
4.2 KiB
C#

using System;
using System.Text;
using System.Runtime.InteropServices;
using System.Security;
using System.Security.Permissions;
namespace Mesnac.Equip.AllenBradley.AB5000.Net
{
public class DTL32
{
public struct DtlDriver
{
public ushort wType;
public ushort wLength;
public ushort wMfgMask;
public ushort wNetworkType;
public ushort wDriverID;
public ushort wDstDriverID;
public uint dwHandle;
public uint dwStation;
public uint dwMaxStation;
public ushort wCapabilities;
public ushort wMTU;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
public char[] szDriverName;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
public char[] szDriverAlias;
public byte bAddrRadix;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
public byte[] bReserved;
}
private class DllImport
{
[DllImport("DTL32.dll")]
public extern static int DTL_INIT(uint id);
[DllImport("DTL32.dll")]
public extern static int DTL_UNINIT(uint dwError);
[DllImport("DTL32.dll")]
public extern static int DTL_DRIVER_LIST(IntPtr dtlDriver, ref uint drivers, int timeout);
[DllImport("DTL32.dll")]
public extern static int DTL_DRIVER_OPEN(uint id, string name, int timeout);
[DllImport("DTL32.dll")]
public extern static int DTL_DRIVER_CLOSE(uint id, int timeout);
[DllImport("DTL32.dll")]
public extern static int DTL_C_DEFINE(ref uint id, StringBuilder defString);
[DllImport("DTL32.dll")]
public extern static int DTL_UNDEF(uint id);
[DllImport("DTL32.dll")]
public extern static int DTL_READ_W(uint name_id, ushort[] buff, ref int state, int timeout);
[DllImport("DTL32.dll")]
public extern static int DTL_WRITE_W(uint name_id, ushort[] buff, ref int state, int timeout);
}
public static int DTL_INIT(uint tableSize)
{
new UIPermission(UIPermissionWindow.AllWindows).Demand();
return DllImport.DTL_INIT(tableSize);
}
public static int DTL_UNINIT(uint dwError)
{
new UIPermission(UIPermissionWindow.AllWindows).Demand();
return DllImport.DTL_UNINIT(dwError);
}
public static int DTL_DRIVER_LIST(IntPtr dtlDriver, ref uint drivers, int timeout)
{
new UIPermission(UIPermissionWindow.AllWindows).Demand();
return DllImport.DTL_DRIVER_LIST(dtlDriver, ref drivers, timeout);
}
public static int DTL_DRIVER_OPEN(uint id, string name, int timeout)
{
new UIPermission(UIPermissionWindow.AllWindows).Demand();
return DllImport.DTL_DRIVER_OPEN(id, name, timeout);
}
public static int DTL_DRIVER_CLOSE(uint id, int timeout)
{
new UIPermission(UIPermissionWindow.AllWindows).Demand();
return DllImport.DTL_DRIVER_CLOSE(id, timeout);
}
public static int DTL_C_DEFINE(ref uint id, string defString)
{
new UIPermission(UIPermissionWindow.AllWindows).Demand();
StringBuilder def = new StringBuilder();
def.Append(defString);
return DllImport.DTL_C_DEFINE(ref id, def);
}
public static int DTL_UNDEF(uint id)
{
new UIPermission(UIPermissionWindow.AllWindows).Demand();
return DllImport.DTL_UNDEF(id);
}
public static int DTL_READ_W(uint name_id, ushort[] buff, ref int state, int timeout)
{
new UIPermission(UIPermissionWindow.AllWindows).Demand();
return DllImport.DTL_READ_W(name_id, buff, ref state, timeout);
}
public static int DTL_WRITE_W(uint name_id, ushort[] buff, ref int state, int timeout)
{
new UIPermission(UIPermissionWindow.AllWindows).Demand();
return DllImport.DTL_WRITE_W(name_id, buff, ref state, timeout);
}
}
}