コード例 #1
0
        public bool RunCommand(BusMasterCommandBase cmd)
        {
            if (cmd == null)
            {
                return(lastCmdSuccess = false);
            }

            string ec = null;

            if (!ServiceConnectionState(true))
            {
                ec = "SerialPort is not connected or Part is not Online";
            }

            if (string.IsNullOrEmpty(ec))
            {
                if (!lastCmdSuccess)
                {
                    ec = spFlushAction.Run();
                }

                if (cmd.SP != sp)
                {
                    cmd.SP = sp;        // update commands serial port if needed.
                    if (cmd.ResponseTimeLimit == TimeSpan.Zero)
                    {
                        cmd.ResponseTimeLimit = DefaultResponseTimeLimit;
                    }
                }

                if (String.IsNullOrEmpty(ec))
                {
                    ec = cmd.RunCmdWrite();
                }

                while (String.IsNullOrEmpty(ec))
                {
                    if (cmd.RunIncrementalCmdResponseRead(ref ec))
                    {
                        break;
                    }
                }
            }

            if (String.IsNullOrEmpty(ec))
            {
                cmd.SetSucceeded();
                return(lastCmdSuccess = true);
            }
            else
            {
                cmd.SetFailed(ec);
                return(lastCmdSuccess = false);
            }
        }
コード例 #2
0
        public bool RunCommand(BusMasterCommandBase cmd)
        {
            if (cmd == null)
                return (lastCmdSuccess = false);

            string ec = null;

            if (!ServiceConnectionState(true))
                ec = "SerialPort is not connected or Part is not Online";

            if (string.IsNullOrEmpty(ec))
            {
                if (!lastCmdSuccess)
                    ec = spFlushAction.Run();

                if (cmd.SP != sp)
                {
                    cmd.SP = sp;        // update commands serial port if needed.
                    if (cmd.ResponseTimeLimit == TimeSpan.Zero)
                        cmd.ResponseTimeLimit = DefaultResponseTimeLimit;
                }

                if (String.IsNullOrEmpty(ec))
                    ec = cmd.RunCmdWrite();

                while (String.IsNullOrEmpty(ec))
                {
                    if (cmd.RunIncrementalCmdResponseRead(ref ec))
                        break;
                }
            }

            if (String.IsNullOrEmpty(ec))
            {
                cmd.SetSucceeded();
                return lastCmdSuccess = true;
            }
            else
            {
                cmd.SetFailed(ec);
                return lastCmdSuccess = false;
            }
        }