//================================================================================================================ /// <summary> /// Enables a callback method to be invoked when a certain condition is met /// </summary> /// <param name="callback">The callback delegate</param> /// <param name="type">The callback type</param> /// <param name="numberOfSamples">The number of samples that will be passed to the callback method</param> //================================================================================================================ public void EnableCallback(InputScanCallbackDelegate callback, CallbackType callbackType, object callbackData) { Monitor.Enter(m_deviceLock); if (callbackType == CallbackType.OnDataAvailable) { if (m_driverInterface.OnDataAvailableCallbackControl != null) { DaqException dex = new DaqException(ErrorMessages.CallbackOperationAlreadyEnabled, ErrorCodes.CallbackOperationAlreadyEnabled); throw dex; } m_driverInterface.OnDataAvailableCallbackControl = new CallbackControl(this, callback, callbackType, callbackData); } else if (callbackType == CallbackType.OnInputScanComplete) { if (m_driverInterface.OnInputScanCompleteCallbackControl != null) { DaqException dex = new DaqException(ErrorMessages.CallbackOperationAlreadyEnabled, ErrorCodes.CallbackOperationAlreadyEnabled); throw dex; } m_driverInterface.OnInputScanCompleteCallbackControl = new CallbackControl(this, callback, callbackType, callbackData); } else if (callbackType == CallbackType.OnInputScanError) { if (m_driverInterface.OnInputScanErrorCallbackControl != null) { DaqException dex = new DaqException(ErrorMessages.CallbackOperationAlreadyEnabled, ErrorCodes.CallbackOperationAlreadyEnabled); throw dex; } m_driverInterface.OnInputScanErrorCallbackControl = new CallbackControl(this, callback, callbackType, callbackData); } //else if (callbackType == CallbackType.OnAcquisitionArmed) //{ // if (m_driverInterface.OnInputScanErrorCallbackControl != null) // { // DaqException dex = new DaqException(ErrorMessages.CallbackOperationAlreadyEnabled, ErrorCodes.CallbackOperationAlreadyEnabled); // throw dex; // } // m_driverInterface.OnAcquisitionArmedCallbackControl = new CallbackControl(this, callback, callbackType, callbackData); //} Monitor.Exit(m_deviceLock); }
public void EnableCallback(InputScanCallbackDelegate callback, CallbackType callbackType, object callbackData, bool executeOnUIThread) { Monitor.Enter(m_deviceLock); if (callbackType == CallbackType.OnDataAvailable) { if (m_driverInterface.OnDataAvailableCallbackControl != null) { DaqException dex = new DaqException(ErrorMessages.CallbackOperationAlreadyEnabled, ErrorCodes.CallbackOperationAlreadyEnabled); throw dex; } m_driverInterface.OnDataAvailableCallbackControl = new CallbackControl(this, callback, callbackType, callbackData, executeOnUIThread); } else if (callbackType == CallbackType.OnInputScanComplete) { if (m_driverInterface.OnInputScanCompleteCallbackControl != null) { DaqException dex = new DaqException(ErrorMessages.CallbackOperationAlreadyEnabled, ErrorCodes.CallbackOperationAlreadyEnabled); throw dex; } m_driverInterface.OnInputScanCompleteCallbackControl = new CallbackControl(this, callback, callbackType, callbackData, executeOnUIThread); } else if (callbackType == CallbackType.OnInputScanError) { if (m_driverInterface.OnInputScanErrorCallbackControl != null) { DaqException dex = new DaqException(ErrorMessages.CallbackOperationAlreadyEnabled, ErrorCodes.CallbackOperationAlreadyEnabled); throw dex; } m_driverInterface.OnInputScanErrorCallbackControl = new CallbackControl(this, callback, callbackType, callbackData, executeOnUIThread); } Monitor.Exit(m_deviceLock); }
//============================================================================== /// <summary> /// Creates an Exception object based on the error code /// </summary> /// <param name="deviceMessage">The message that was sent to the device</param> /// <param name="errorCode">The error that occurred</param> /// <returns>The Exception</returns> //============================================================================== internal DaqException ResolveException(string deviceMessage, ErrorCodes errorCode) { DaqException daqException; string errorMessage = GetErrorMessage(errorCode); if (errorCode == ErrorCodes.InvalidMessage) errorMessage += String.Format(" [{0}]", deviceMessage); daqException = new DaqException(errorMessage, errorCode); return daqException; }
//============================================================================== /// <summary> /// Creates an Exception object based on the error code /// </summary> /// <param name="errorCode">The error that occurred</param> /// <param name="response">The last response</param> /// <returns>The Exception</returns> //============================================================================== internal DaqException ResolveException(ErrorCodes errorCode, DaqResponse response) { DaqException daqException; string errorMessage = GetErrorMessage(errorCode); ErrorLevel level; if (errorCode < ErrorCodes.DeviceNotResponding) level = ErrorLevel.Warning; else level = ErrorLevel.Error; daqException = new DaqException(this, errorMessage, errorCode, level, response); return daqException; }