Ejemplo n.º 1
0
        /// <summary>
        /// Determine i there is any error in communication
        /// </summary>
        /// <returns>Is Error?</returns>
        private Err_t IsError(string cmd)
        {
            Err_t err = Err_t.NoError;

            if (cmd[3] == errorFlag)
            {
                err = (Err_t)(Array.IndexOf(errorWords, cmd[4].ToString()) + 1);
            }

            return(err);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 从温控设备读取数据,返回错误代码
        /// </summary>
        /// <param name="cmd">参数指令符</param>
        /// <param name="value">参数值</param>
        /// <returns></returns>
        internal Err_t ReadData(Cmd_t cmd, out float val)
        {
            // 读取 温度设定值 / 温度调整值 / 超前调整值 / 模糊系数 / 比例系数 / 积分系数 / 功率系数 / 温度显示值 / 功率显示值
            // 创建指令
            string command = ConstructCommand(cmd, 0.0f, false);
            // 用于存放返回的数据
            string data = string.Empty;

            try
            {
                if (!sPort.IsOpen)
                {
                    this.sPort.Open();
                }

                // 写入数据
                this.sPort.Write(command + "\r\n");
                // 读取返回数据
                Thread.Sleep(intervalOfWR);
                data = this.sPort.ReadTo(cmdFinish);
                //Improve: Add BCC checker
                sPort.DiscardInBuffer();
                sPort.Close();
            }
            catch (Exception ex)
            {
                val = 0.0f;
                Debug.WriteLine("温控设备读取参数 " + cmd.ToString() + " 异常: " + ex.Message);
                // 关闭串口
                try { sPort.Close(); } catch { }
                return(Err_t.ComError);
            }

            // 检查错误并提取参数值
            Err_t err = IsError(data);

            if (err != Err_t.NoError)
            {
                // 发生错误
                val = 0.0f;
            }
            else
            {
                // 未发生错误
                // 如果格式转化错误,则返回 ComErr
                if (!float.TryParse(data.Substring(5), out val))
                {
                    err = Err_t.ComError;
                }
            }

            return(err);
        }