DTL_DRIVER_OPEN (dtl)
Last changed: -71.87.24.210

.
Summary
TODO - a short description

C# Signature:

[DllImport("dtl.dll", SetLastError=true)]
static extern public int DTL_DRIVER_OPEN(int driver_id, string szDriverName, int timeout);

VB Signature:

Declare Function DTL_DRIVER_OPEN Lib "dtl.dll" (TODO) As TODO

User-Defined Types:

None.

Alternative Managed API:

Do you know one? Please contribute it!

Notes:

None.

Tips & Tricks:

Please add some!

Sample Code:

    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));
    }

    public static void DtlErrorS(int dtlSts, StringBuilder msg, int buffSize)
    {
        new UIPermission(UIPermissionWindow.AllWindows).Demand();
        UnsafeNativeMethods.DTL_ERROR_S(dtlSts, msg, buffSize);
    }

    bool DtlStatusOk(string dtlFunction, int dtlSts, ref string errorText, string address = null, int ioStat = 0, bool logIt = false)
    {
        var msg = new StringBuilder(256);

        if (dtlSts != DtlSuccess)
        {
        if (ioStat == 0)
        {
            ioStat = dtlSts;
        }

        Dtl.DtlErrorS(ioStat, msg, msg.MaxCapacity);

        if (address != null)
        {
            errorText = dtlFunction + ": " + address + ' ' + msg;
        }

        else
        {
            errorText = dtlFunction + ": " + msg;
        }

        if (logIt)
        {
            _logger.Warn(LoggerEvent.RockwellPlcError, msg.ToString());
        }

        return (false);
        }

        return (true);
    }

    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();
            }
        }
        }
    }

Documentation