Beispiel #1
0
        //读取测量数据
        /// <summary>
        /// 读取测量数据和数据的处理
        /// </summary>
        /// <param name="testkind">测试类型</param>
        /// <returns>回复解析完成的数据</returns>
        public string[] ReadTestData(Parameter.TestKind testkind)
        {
            if (testkind == Parameter.TestKind.介质损耗)
            {
                //string[] RetData = new string[5];
                byte[] SendComman = { 0x12 };
                byte[] RecBuffer  = new byte[31];
                sc.SendCommand(SendComman, ref RecBuffer, 50);

                if (RecBuffer[0] == 0xfa)
                {
                    string[] RetData = new string[5];
                    RetData[0] = RecBuffer[1].ToString();
                    PhysicalVariable pv = NumericsConverter.Text2Value(Encoding.ASCII.GetString(RecBuffer.Skip(2).Take(7).ToArray()));
                    RetData[1] = pv.ToString();
                    PhysicalVariable pv1 = NumericsConverter.Text2Value(Encoding.ASCII.GetString(RecBuffer.Skip(9).Take(7).ToArray()));
                    RetData[2] = pv1.ToString();
                    PhysicalVariable pv2 = NumericsConverter.Text2Value(Encoding.ASCII.GetString(RecBuffer.Skip(16).Take(7).ToArray()));
                    RetData[3] = pv2.ToString();
                    RetData[4] = "0";
                    return(RetData);
                }
                if (RecBuffer[0] == 0xff)
                {
                    string[]         RetData = new string[5];
                    PhysicalVariable pv      = NumericsConverter.Text2Value(Encoding.ASCII.GetString(RecBuffer.Skip(2).Take(7).ToArray()));
                    RetData[0] = pv.ToString();
                    PhysicalVariable pv1 = NumericsConverter.Text2Value(Encoding.ASCII.GetString(RecBuffer.Skip(9).Take(7).ToArray()));
                    RetData[1] = pv1.ToString();
                    PhysicalVariable pv2 = NumericsConverter.Text2Value(Encoding.ASCII.GetString(RecBuffer.Skip(16).Take(7).ToArray()) + "%");
                    RetData[2] = pv2.ToString(percentage: true, positiveSign: true);
                    PhysicalVariable pv3 = NumericsConverter.Text2Value(Encoding.ASCII.GetString(RecBuffer.Skip(23).Take(7).ToArray()));
                    RetData[3] = pv3.ToString();
                    RetData[4] = "1";

                    return(RetData);
                }
                if (RecBuffer[0] == 0xee)
                {
                    string[] Rd = new string[1];
                    Rd[0] = TestErrDC(RecBuffer[1].ToString());
                    return(Rd);//错误类型
                }
            }
            if (testkind == Parameter.TestKind.直流电阻)
            {
                byte[] Sendbuffer = { 0x32 };
                byte[] RecBuffer  = new byte[75];
                try
                {
                    sc.SendCommand(Sendbuffer, ref RecBuffer, 10);
                    //if (CheckData(RecData) == RecData[74])
                    //{
                    if (RecBuffer[0] == 0xfa)
                    {
                        string[] RetData = new string[10];
                        RetData[0] = Encoding.ASCII.GetString(RecBuffer.Skip(2).Take(8).ToArray());
                        PhysicalVariable pv = NumericsConverter.Text2Value(RetData[0]);
                        RetData[0] = pv.ToString();
                        RetData[1] = Encoding.ASCII.GetString(RecBuffer.Skip(10).Take(8).ToArray());
                        PhysicalVariable pv1 = NumericsConverter.Text2Value(RetData[1]);
                        RetData[1] = pv1.ToString();
                        RetData[2] = Encoding.ASCII.GetString(RecBuffer.Skip(18).Take(8).ToArray()).Replace("$", "Ω");
                        PhysicalVariable pv2 = NumericsConverter.Text2Value(RetData[2]);
                        RetData[2] = pv2.ToString();

                        RetData[3] = Encoding.ASCII.GetString(RecBuffer.Skip(26).Take(8).ToArray());
                        PhysicalVariable pv3 = NumericsConverter.Text2Value(RetData[3]);
                        RetData[3] = pv3.ToString();

                        RetData[4] = Encoding.ASCII.GetString(RecBuffer.Skip(34).Take(8).ToArray());
                        PhysicalVariable pv4 = NumericsConverter.Text2Value(RetData[4]);
                        RetData[4] = pv4.ToString();
                        RetData[5] = Encoding.ASCII.GetString(RecBuffer.Skip(42).Take(8).ToArray()).Replace("$", "Ω");
                        PhysicalVariable pv5 = NumericsConverter.Text2Value(RetData[5]);
                        RetData[5] = pv5.ToString();

                        RetData[6] = Encoding.ASCII.GetString(RecBuffer.Skip(50).Take(8).ToArray());
                        PhysicalVariable pv6 = NumericsConverter.Text2Value(RetData[6]);
                        RetData[6] = pv6.ToString();

                        RetData[7] = Encoding.ASCII.GetString(RecBuffer.Skip(58).Take(8).ToArray());
                        PhysicalVariable pv7 = NumericsConverter.Text2Value(RetData[7]);
                        RetData[7] = pv7.ToString();
                        RetData[8] = Encoding.ASCII.GetString(RecBuffer.Skip(66).Take(8).ToArray()).Replace("$", "Ω");
                        PhysicalVariable pv8 = NumericsConverter.Text2Value(RetData[8]);
                        RetData[8] = pv8.ToString();

                        RetData[9] = "0";
                        return(RetData);
                    }
                    else if (RecBuffer[0] == 0xff)
                    {
                        string[] RetData = new string[10];
                        RetData[0] = Encoding.ASCII.GetString(RecBuffer.Skip(2).Take(8).ToArray());
                        PhysicalVariable pv = NumericsConverter.Text2Value(RetData[0]);
                        RetData[0] = pv.ToString();
                        RetData[1] = Encoding.ASCII.GetString(RecBuffer.Skip(10).Take(8).ToArray());
                        PhysicalVariable pv1 = NumericsConverter.Text2Value(RetData[1]);
                        RetData[1] = pv1.ToString();
                        RetData[2] = Encoding.ASCII.GetString(RecBuffer.Skip(18).Take(8).ToArray()).Replace("$", "Ω");
                        PhysicalVariable pv2 = NumericsConverter.Text2Value(RetData[2]);
                        RetData[2] = pv2.ToString();
                        RetData[3] = Encoding.ASCII.GetString(RecBuffer.Skip(26).Take(8).ToArray());
                        PhysicalVariable pv3 = NumericsConverter.Text2Value(RetData[3]);
                        RetData[3] = pv3.ToString();
                        RetData[4] = Encoding.ASCII.GetString(RecBuffer.Skip(34).Take(8).ToArray());
                        PhysicalVariable pv4 = NumericsConverter.Text2Value(RetData[4]);
                        RetData[4] = pv4.ToString();
                        RetData[5] = Encoding.ASCII.GetString(RecBuffer.Skip(42).Take(8).ToArray()).Replace("$", "Ω");
                        PhysicalVariable pv5 = NumericsConverter.Text2Value(RetData[5]);
                        RetData[5] = pv5.ToString();
                        RetData[6] = Encoding.ASCII.GetString(RecBuffer.Skip(50).Take(8).ToArray());
                        PhysicalVariable pv6 = NumericsConverter.Text2Value(RetData[6]);
                        RetData[6] = pv6.ToString();
                        RetData[7] = Encoding.ASCII.GetString(RecBuffer.Skip(58).Take(8).ToArray());
                        PhysicalVariable pv7 = NumericsConverter.Text2Value(RetData[7]);
                        RetData[7] = pv7.ToString();
                        RetData[8] = Encoding.ASCII.GetString(RecBuffer.Skip(66).Take(8).ToArray()).Replace("$", "Ω");
                        PhysicalVariable pv8 = NumericsConverter.Text2Value(RetData[8]);
                        RetData[8] = pv8.ToString();
                        RetData[9] = "1";

                        return(RetData);
                    }
                    else if (RecBuffer[0] == 0xee)
                    {
                        string[] Rd = new string[1];
                        Rd[0] = TestErr(RecBuffer[1].ToString());
                        return(Rd);//错误类型
                    }
                    //}
                }
                catch
                {
                }
            }
            if (testkind == Parameter.TestKind.绝缘电阻)
            {
                byte[] SendComman = { 0x22 };
                byte[] RecData    = new byte[18];
                //  float[] RetData = new float[4];

                sc.SendCommand(SendComman, ref RecData, 50);

                if (CheckData(RecData) == RecData[17])
                {
                    if (RecData[0] == 0xfa)
                    {
                        string[] RetData = new string[4];

                        PhysicalVariable pv = NumericsConverter.Text2Value(Encoding.ASCII.GetString(RecData.Skip(1).Take(5).ToArray()) + "V");
                        RetData[0] = pv.ToString();
                        string TempData = Encoding.ASCII.GetString(RecData.Skip(6).Take(7).ToArray()).Replace("$", "Ω");
                        if (TempData.IndexOf('Ω') < 0)
                        {
                            TempData += "Ω";
                        }
                        PhysicalVariable pv1 = NumericsConverter.Text2Value(Encoding.ASCII.GetString(RecData.Skip(6).Take(7).ToArray()).Replace("$", "Ω"));
                        RetData[1] = pv1.ToString();
                        PhysicalVariable pv2 = NumericsConverter.Text2Value(Encoding.ASCII.GetString(RecData.Skip(13).Take(4).ToArray()));
                        RetData[2] = pv2.ToString();
                        RetData[3] = "0";
                        return(RetData);
                    }
                    if (RecData[0] == 0xff)
                    {
                        string[] RetData  = new string[4];
                        string   TempData = Encoding.ASCII.GetString(RecData.Skip(1).Take(7).ToArray()).Replace("$", "Ω");
                        if (TempData.IndexOf('Ω') < 0)
                        {
                            TempData += "Ω";
                        }
                        PhysicalVariable pv = NumericsConverter.Text2Value(TempData);
                        RetData[0] = pv.ToString();

                        PhysicalVariable pv1 = NumericsConverter.Text2Value(Encoding.ASCII.GetString(RecData.Skip(8).Take(4).ToArray()));
                        RetData[1] = pv1.ToString();
                        PhysicalVariable pv2 = NumericsConverter.Text2Value(Encoding.ASCII.GetString(RecData.Skip(12).Take(4).ToArray()));
                        RetData[2] = pv2.ToString();
                        RetData[3] = "1";

                        return(RetData);
                    }
                    if (RecData[0] == 0xee)
                    {
                        string[] Rd = new string[1];
                        Rd[0] = TestErrDC(RecData[1].ToString());

                        return(Rd);//错误类型
                    }
                }

                else
                {
                }
            }
            if (testkind == Parameter.TestKind.载分接)
            {
                byte[] RecBuffer = new byte[51];
                // float[] RetData = new float[7];
                byte[] SendComman = { 0x42 };
                sc.SendCommand(SendComman, ref RecBuffer, 50);
                if (RecBuffer[0] == 0xfa)
                {
                    string[] RetData = new string[7];
                    RetData[0] = RecBuffer[1].ToString();
                    PhysicalVariable pv = NumericsConverter.Text2Value(Encoding.ASCII.GetString(RecBuffer.Skip(2).Take(8).ToArray()));
                    RetData[1] = pv.ToString();
                    PhysicalVariable pv1 = NumericsConverter.Text2Value(Encoding.ASCII.GetString(RecBuffer.Skip(10).Take(8).ToArray()));
                    RetData[2] = pv1.ToString();
                    PhysicalVariable pv2 = NumericsConverter.Text2Value(Encoding.ASCII.GetString(RecBuffer.Skip(18).Take(8).ToArray()));
                    RetData[3] = pv2.ToString();
                    PhysicalVariable pv3 = NumericsConverter.Text2Value(Encoding.ASCII.GetString(RecBuffer.Skip(26).Take(8).ToArray()));
                    RetData[4] = pv3.ToString();
                    PhysicalVariable pv4 = NumericsConverter.Text2Value(Encoding.ASCII.GetString(RecBuffer.Skip(34).Take(8).ToArray()));
                    RetData[5] = pv4.ToString();
                    PhysicalVariable pv5 = NumericsConverter.Text2Value(Encoding.ASCII.GetString(RecBuffer.Skip(42).Take(8).ToArray()));
                    RetData[6] = pv5.ToString();
                    return(RetData);
                }
                else if (RecBuffer[0] == 0xff && RecBuffer[1] == 0xff)
                {
                    string[]         RetData = new string[6];
                    PhysicalVariable pv      = NumericsConverter.Text2Value(Encoding.ASCII.GetString(RecBuffer.Skip(2).Take(8).ToArray()));
                    RetData[0] = pv.ToString();
                    PhysicalVariable pv1 = NumericsConverter.Text2Value(Encoding.ASCII.GetString(RecBuffer.Skip(10).Take(8).ToArray()));
                    RetData[1] = pv1.ToString();
                    PhysicalVariable pv2 = NumericsConverter.Text2Value(Encoding.ASCII.GetString(RecBuffer.Skip(18).Take(8).ToArray()));
                    RetData[2] = pv2.ToString();
                    PhysicalVariable pv3 = NumericsConverter.Text2Value(Encoding.ASCII.GetString(RecBuffer.Skip(26).Take(8).ToArray()));
                    RetData[3] = pv3.ToString();
                    PhysicalVariable pv4 = NumericsConverter.Text2Value(Encoding.ASCII.GetString(RecBuffer.Skip(34).Take(8).ToArray()));
                    RetData[4] = pv4.ToString();
                    PhysicalVariable pv5 = NumericsConverter.Text2Value(Encoding.ASCII.GetString(RecBuffer.Skip(42).Take(8).ToArray()));
                    RetData[5] = pv5.ToString();
                    return(RetData);
                }
                else if (RecBuffer[0] == 0xee)
                {
                    string[] Rd = new string[1];

                    Rd[0] = TestErr(RecBuffer[1].ToString());
                    return(Rd);//错误类型
                }
                else
                {
                    return(null);
                }
            }
            if (testkind == Parameter.TestKind.读取放电数据)
            {
                byte[] RecData = new byte[26];
                // float[] RetData = new float[4];
                byte[] SendComman = { 0x3e };
                if (sc.SendCommand(SendComman, ref RecData, 50) >= 0)
                {
                    string[] RetData = new string[4];
                    bool     Success;
                    RetData[0] = RecData[0].ToString();
                    PhysicalVariable pv = NumericsConverter.Text2Value(Encoding.ASCII.GetString(RecData.Skip(1).Take(8).ToArray()), out Success);
                    if (Success)
                    {
                        RetData[1] = pv.ToString();
                    }
                    else
                    {
                        RetData[1] = Encoding.ASCII.GetString(RecData.Skip(1).Take(8).ToArray());
                    }
                    PhysicalVariable pv1 = NumericsConverter.Text2Value(Encoding.ASCII.GetString(RecData.Skip(9).Take(8).ToArray()), out Success);
                    if (Success)
                    {
                        RetData[2] = pv1.ToString();
                    }
                    else
                    {
                        RetData[2] = Encoding.ASCII.GetString(RecData.Skip(9).Take(8).ToArray());
                    }
                    PhysicalVariable pv2 = NumericsConverter.Text2Value(Encoding.ASCII.GetString(RecData.Skip(17).Take(8).ToArray()), out Success);
                    if (Success)
                    {
                        RetData[3] = pv2.ToString();
                    }
                    else
                    {
                        RetData[3] = Encoding.ASCII.GetString(RecData.Skip(17).Take(8).ToArray());
                    }

                    return(RetData);
                }
            }
            return(null);
        }