public void ShouldSetExternalCommandSensitivityUnits( [Values((UInt32)0, (UInt32)1, (UInt32)2)] UInt32 operatingMode ) { var data = new MultiClampInterop.MC_TELEGRAPH_DATA() { uOperatingMode = operatingMode }; var mcd = new MultiClampInterop.MulticlampData(data); switch (mcd.OperatingMode) { case MultiClampInterop.OperatingMode.VClamp: Assert.That(mcd.ExternalCommandSensitivityUnits, Is.EqualTo(MultiClampInterop.ExternalCommandSensitivityUnits.V_V)); break; case MultiClampInterop.OperatingMode.IClamp: Assert.That(mcd.ExternalCommandSensitivityUnits, Is.EqualTo(MultiClampInterop.ExternalCommandSensitivityUnits.A_V)); break; case MultiClampInterop.OperatingMode.I0: Assert.That(mcd.ExternalCommandSensitivityUnits, Is.EqualTo(MultiClampInterop.ExternalCommandSensitivityUnits.OFF)); break; default: throw new ArgumentOutOfRangeException(); } }
private void RegisterForWmCopyDataEvents() { log.Debug("Registering from WM_COPYDATA messages"); Win32Interop.MessageEvents.WatchMessage(Win32Interop.WM_COPYDATA, (sender, evtArgs) => { // WM_COPYDATA LPARAM is a pointer to a COPYDATASTRUCT structure Win32Interop.COPYDATASTRUCT cds; cds = (Win32Interop.COPYDATASTRUCT) Marshal.PtrToStructure( evtArgs.Message.LParam, typeof( Win32Interop.COPYDATASTRUCT)); // WM_COPYDATA structure (COPYDATASTRUCT) // dwData -- RegisterWindowMessage(MCTG_REQUEST_MESSAGE_STR) // cbData -- size (in bytes) of the MC_TELEGRAPH_DATA structure being sent // lpData -- MC_TELEGRAPH_DATA* try { if (cds.lpData != IntPtr.Zero) { MultiClampInterop. MC_TELEGRAPH_DATA mtd = ( MultiClampInterop. MC_TELEGRAPH_DATA ) Marshal. PtrToStructure (cds.lpData, typeof( MultiClampInterop . MC_TELEGRAPH_DATA )); var md = new MultiClampInterop. MulticlampData( mtd); log.Debug( "WM_COPYDATA message recieved from MCCommander"); OnParametersChanged(md); } } catch (ArgumentOutOfRangeException) { log.ErrorFormat("WM_COPYDATA message received from MCCommander, but operating mode is not valid."); RequestTelegraphValue((uint)evtArgs.Message.LParam); } }); }