[DllImport("dtl.dll", SetLastError=true)]
static extern public int DTL_INIT(int table_size);
Declare Function DTL_INIT Lib "dtl.dll" (TODO) As TODO
None.
Do you know one? Please contribute it!
None.
Please add some!
public static int DtlInit(int tableSize)
{
new UIPermission(UIPermissionWindow.AllWindows).Demand();
return (UnsafeNativeMethods.DTL_INIT(tableSize));
}
public static int DtlDriverOpen(int driverId, string driverName, int timeOut)
{
new UIPermission(UIPermissionWindow.AllWindows).Demand();
return (UnsafeNativeMethods.DTL_DRIVER_OPEN(driverId, driverName, timeOut));
}
protected void OpenDriver(string driverName, int timeoutFactor)
{
int dtlSts;
string msg = " ";
//Look for drivername in list
bool driverAlreadyOpened = _driverLookupList.TryGetValue(_driverName, out _driverId);
//Initialize DTL
if (!_dtlInitialized)
{
dtlSts = Dtl.DtlInit(TableSize);
if (DtlStatusOk("DtlInit", dtlSts, ref msg, " "))
{
_dtlInitialized = true;
}
else
{
_logger.Error(LoggerEvent.RockwellPlcError, msg);
throw new PlcException();
}
}
//Open driver
if (!driverAlreadyOpened)
{
if (_dtlInitialized)
{
_driverId = _nextDriverId;
dtlSts = Dtl.DtlDriverOpen(_driverId, _driverName, _timeoutFactor * 3);
if (DtlStatusOk("DtlDriverOpen", dtlSts, ref msg, " ", 0, true))
{
_driverLookupList[_driverName] = _driverId;
int highestId = -1;
foreach (KeyValuePair<string, int> id in _driverLookupList)
{
if (id.Value > highestId)
{
_nextDriverId = id.Value + 1;
highestId = id.Value;
}
}
}
else
{
_logger.Error(LoggerEvent.RockwellPlcError, msg);
throw new PlcException();
}
}
}
}