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();
            }
        }
Пример #2
0
        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);
                }
            });
        }
        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();
            }
        }