public override void DoWork()
        {
            /*
             * try
             * {
             *  LocalMach3.Singleton.Reset();
             *  LocalMach3.Singleton.LoadGCodeFile("C:\\Mach3\\GCode\\roadrunner.tap");
             *  LocalMach3.Singleton.SetOEMDRO((short)Mach3ULink.DROs.X_WORK_OFFSET_DRO, DELETETHIS++);
             *  LocalMach3.Singleton.SetOEMDRO((short)Mach3ULink.DROs.X_MACHINE_COORD_DRO, DELETETHIS / 2);
             * }
             * catch (ArgumentException exception)
             * {
             *  TestSequence().Window().logMessage("error talking to Mach3: " + exception.Message);
             * }
             */

            //TND_WRITE_HACK START
            TestExecution().LogMessageWithTimeFromTrigger(Name + " started");
            if (mEnabled == null || !mEnabled.ValueAsBoolean())
            {
                TestExecution().LogMessageWithTimeFromTrigger(Name + " disabled. Did NOT write value to Mach3.");
            }
            else if (mPrerequisite != null && !mPrerequisite.ValueAsBoolean())
            {
                TestExecution().LogMessageWithTimeFromTrigger("TND Write " + Name + ": prerequisites not met. Skipping.");
            }
            else
            {
                WriteValueToMach3Definition theDef = (WriteValueToMach3Definition)Definition();
                try
                {
                    LocalMach3.Singleton.SetOEMDRO((short)theDef.Mach3DRO, mValueToWrite.ValueAsDecimal());
                }
                catch (ArgumentException e)
                {
                    TestExecution().LogErrorWithTimeFromTrigger(Name + " couldn't write to Mach3; message=" + e.Message);
                }
            }

            mIsComplete = true;
            TestExecution().LogMessageWithTimeFromTrigger(Name + " completed");

            /* // TODO: optionally get value from Mach3 to verify?  any return value from SetOEMDRO?  just exceptions?
             * if (success)
             * {
             *  TestExecution().LogMessageWithTimeFromTrigger(Name + " completed");
             * }
             * else
             * {
             *  TestExecution().LogErrorWithTimeFromTrigger( Name + " completed with errors");
             * }
             */
        }
        public WriteValueToMach3Instance(WriteValueToMach3Definition theDefinition, TestExecution testExecution)
            : base(theDefinition, testExecution)
        {
            if (theDefinition.ValueToWrite == null)
            {
                throw new ArgumentException("'" + theDefinition.Name + "' doesn't have a value assigned to ValueToWrite");
            }
            mValueToWrite = TestExecution().DataValueRegistry.GetObject(theDefinition.ValueToWrite.Name);

            if (theDefinition.Enabled == null)
            {
                throw new ArgumentException("'" + theDefinition.Name + "' doesn't have a value assigned to Enabled");
            }
            mEnabled = TestExecution().DataValueRegistry.GetObject(theDefinition.Enabled.Name);
        }