Esempio n. 1
0
 private void button12_Click(object sender, EventArgs e)
 {
     for (int i = 0; i < dgvCalcDc.Rows.Count; i++)
     {
         /*
          * if (WriteReg(2, (byte)i, (UInt16)UInt16.Parse(dgvCalcDc.Rows[i].Cells[3].Value.ToString(), System.Globalization.NumberStyles.HexNumber)) == false)
          * {
          *  MessageBox.Show("写入失败");
          *  return;
          * }
          * if (WriteReg(2, (byte)(i + 0x10), (UInt16)UInt16.Parse(dgvCalcDc.Rows[i].Cells[4].Value.ToString(), System.Globalization.NumberStyles.HexNumber)) == false)
          * {
          *  MessageBox.Show("写入失败");
          *  return;
          * }
          * */
         UInt16 val   = 0;
         byte   board = (byte)UInt16.Parse(textBoxBoardAddr.Text);
         val = UInt16.Parse(dgvCalcDc.Rows[i].Cells[3].Value.ToString(), System.Globalization.NumberStyles.HexNumber);
         if (Funs485.WriteDebugReg(board, (byte)i, val) == false)
         {
             MessageBox.Show("写入失败");
             return;
         }
         val = UInt16.Parse(dgvCalcDc.Rows[i].Cells[4].Value.ToString(), System.Globalization.NumberStyles.HexNumber);
         if (Funs485.WriteDebugReg(board, (byte)(i + 0x10), val) == false)
         {
             MessageBox.Show("写入失败");
             return;
         }
     }
     MessageBox.Show("写入完成");
 }
Esempio n. 2
0
 private void ProcCalc()
 {
     CalcFullValues();
     Int16[] coefValues;
     if (!Funs485.RdScaleList(cardAddr, out coefValues))
     {
         AppendText(this.txtMessage, "读取系数失败");
         ShowText(this.btnStartCalc, "自动校准");
         return;
     }
     for (int i = 0; i < coefValues.Length; i++)
     {
         if (coefValues[i] < 0 || coefValues[i] == 0x0)
         {
             coefValues[i] = 1024;
         }
     }
     coefValues.CopyTo(CoeffValues, 0);
     InvalidateCtrl(this.gridValueView);
     for (int i = 0; i < 4; i++)
     {
         DoCalcStep(i, CoeffValues);
     }
     if (!Funs485.WriteCoeff(cardAddr, CoeffValues))
     {
         ShowText(this.txtMessage, "系数写入失败");
     }
     WriteFactoryMessage(cardAddr);
     ShowText(this.btnStartCalc, "自动校准");
 }
Esempio n. 3
0
        private void GetFullSendAmpli(int freqStep)
        {
            sendFullValue = 1;
            sigSource.SetFreq(freqList[freqStep]);
            sigSource.SetAmpli(sendFullValue);
            AppendText(this.txtMessage, "等待幅度稳定(8S),按任意键退出");

            Int16[]  refValues = new Int16[100];
            DateTime startTime = DateTime.Now;

            while ((DateTime.Now - startTime).TotalSeconds < 8)
            {
                if (!Funs485.RdAllCh(refCardNo, out refValues))
                {
                    AppendText(this.txtMessage, String.Format("读取板{0}模拟量数据失败\r\n", cardAddr));
                    return;
                }
                //if (waitKey.WaitOne(0,true))
                //{
                //    break;
                //}
            }
            try
            {
                sendFullValue            = (float)firstChFullVal / refValues[0];
                freqFullValues[freqStep] = sendFullValue;
            }
            catch
            {
            }
        }
Esempio n. 4
0
        private void ProcCalc()
        {
            Int16[] coefValues;
            if (!Funs485.RdScaleList(cardAddr, out coefValues))
            {
                AppendText(this.txtMessage, "读取系数失败");
                ShowText(this.btnStartCalc, "自动校准");
                return;
            }
            for (int i = 0; i < coefValues.Length / 2; i++)
            {
                if (coefValues[i * 2 + 1] < 0 || coefValues[i * 2 + 1] == 0x0)
                {
                    coefValues[i] = 1024;
                }
            }
            AppendText(this.txtMessage, String.Format("读取板系数完成\r\n"));
            coefValues.CopyTo(CoeffValues, 0);
            InvalidateCtrl(this.gridValueView);

            DoCalcStep(CoeffValues);

            if (!Funs485.WriteCoeff(cardAddr, CoeffValues))
            {
                ShowText(this.txtMessage, "系数写入失败");
            }
            WriteFactoryMessage(cardAddr);
            AppendText(this.txtMessage, String.Format("校准完成\r\n"));
            ShowText(this.btnStartCalc, "自动校准");
        }
Esempio n. 5
0
        private bool DoCalcStep(Int16[] scaleList)
        {
            Int16[] chValues  = new Int16[100];
            Int16[] refValues = new Int16[100];


            DateTime startTime = DateTime.Now;

            AppendText(this.txtMessage, String.Format("开始读取模拟量,按任意键退出\r\n"));
            waitKey.Reset();
            while ((DateTime.Now - startTime).TotalSeconds < 10)
            {
                if (!Funs485.RdAllCh(cardAddr, out chValues))
                {
                    AppendText(this.txtMessage, String.Format("读取板{0}模拟量数据失败\r\n", cardAddr));
                    return(false);
                }
                if (!Funs485.RdAllCh(refCardNo, out refValues))
                {
                    refValues = new Int16[chValues.Length];
                    for (int i = 0; i < refValues.Length; i++)
                    {
                        refValues[i] = (Int16)Math.Round(realVal);
                    }
                    // AppendText(this.txtMessage, String.Format("读取板{0}模拟量数据失败", cardAddr));
                    //  return false;
                }
                if (chValues.Length != refValues.Length)
                {
                    AppendText(this.txtMessage, String.Format("基准板与待校准板不一致"));
                    return(false);
                }
                for (int i = 0; i < chValues.Length; i++)
                {
                    chValues[i] = (Int16)(chValues[i] & 0x7fff);
                }
                chValues.CopyTo(WaitCalcValues, 0);
                refValues.CopyTo(RefValues, 0);
                InvalidateCtrl(this.gridValueView);
                if (waitKey.WaitOne(0, true))
                {
                    break;
                }
            }
            for (int i = 0; i < chValues.Length; i++)
            {
                double coef    = scaleList[i * 2 + 1] * 1.0;
                float  refVal  = refValues[i];
                float  realVal = chValues[i];
                coef = coef * refVal;
                coef = coef / realVal;
                // coef *= coef * refVal /realVal;
                scaleList[i * 2 + 1] = (Int16)Math.Round(coef);
            }
            scaleList.CopyTo(CoeffValues, 0);
            InvalidateCtrl(this.gridValueView);
            return(true);
        }
Esempio n. 6
0
        private void buttonExt4_Click(object sender, EventArgs e)
        {
            cardAddr = (byte)int.Parse(FormMain.Instance.txtBoardAddr.Text);
            String tster;

            Funs485.RdTsterMessage(cardAddr, out tster);
            AppendText(this.txtMessage,
                       String.Format("测试人{0}", tster));
        }
Esempio n. 7
0
        private void buttonExt2_Click(object sender, EventArgs e)
        {
            cardAddr = (byte)int.Parse(FormMain.Instance.txtBoardAddr.Text);
            DateTime dt;
            String   id;

            Funs485.RdIdMessage(cardAddr, out id, out dt);
            AppendText(this.txtMessage,
                       String.Format("板卡ID:{0},校准日期:{1:F}\r\n", id, dt));
        }
Esempio n. 8
0
 private void buttonExt1_Click(object sender, EventArgs e)
 {
     Int16[] coefValues;
     cardAddr = (byte)int.Parse(FormMain.Instance.txtBoardAddr.Text);
     Funs485.RdScaleList(cardAddr, out coefValues);
     if (coefValues == null)
     {
         return;
     }
     coefValues.CopyTo(CoeffValues, 0);
     InvalidateCtrl(this.gridValueView);
 }
Esempio n. 9
0
 private void buttonExt5_Click(object sender, EventArgs e)
 {
     for (int i = 0; i < 4; i++)
     {
         CoeffValues[i * 2]     = 0;
         CoeffValues[i * 2 + 1] = 4095;
     }
     if (!Funs485.WriteCoeff(cardAddr, CoeffValues))
     {
         ShowText(this.txtMessage, "系数写入失败");
     }
 }
Esempio n. 10
0
        private bool DoAmpliTstStep(int step, Int16[] scaleList)
        {
            Int16[] chValues  = new Int16[100];
            Int16[] refValues = new Int16[100];
            sigSource.SetAmpli(ampliTable[step] * freqFullValues[step]);
            DateTime startTime = DateTime.Now;

            AppendText(this.txtMessage, String.Format("读值稳定后按任意键进入下一个幅度\r\n"));
            waitKey.Reset();
            while ((DateTime.Now - startTime).TotalSeconds < 10)
            {
                if (!Funs485.RdAllCh(cardAddr, out chValues))
                {
                    AppendText(this.txtMessage, String.Format("读取板{0}模拟量数据失败", cardAddr));
                    return(false);
                }
                if (!Funs485.RdAllCh(refCardNo, out refValues))
                {
                    AppendText(this.txtMessage, String.Format("读取板{0}模拟量数据失败", cardAddr));
                    return(false);
                }
                if (chValues.Length != refValues.Length)
                {
                    AppendText(this.txtMessage, String.Format("基准板与待校准板不一致"));
                    return(false);
                }
                chValues.CopyTo(WaitCalcValues, 0);
                refValues.CopyTo(RefValues, 0);
                InvalidateCtrl(this.gridValueView);
                if (waitKey.WaitOne(0, true))
                {
                    break;
                }
            }
            StringBuilder sb = new StringBuilder();

            sb.AppendFormat("幅度误差测试{0}:", step);
            for (int i = 0; i < chValues.Length / 3; i++)
            {
                float refVal  = refValues[i * 3];
                float realVal = chValues[i * 3];
                sb.AppendFormat("{0}/{1}/{2}%,", realVal, refVal, realVal * 100 / refVal);
            }
            sb.AppendLine();
            AppendText(this.txtMessage, sb.ToString());
            WriteToFile(sb.ToString());
            scaleList.CopyTo(CoeffValues, 0);
            InvalidateCtrl(this.gridValueView);
            return(true);
        }
Esempio n. 11
0
        private bool DoCalcStep(int step, Int16[] scaleList)
        {
            Int16[] chValues  = new Int16[100];
            Int16[] refValues = new Int16[100];
            SetFreq(step);

            DateTime startTime = DateTime.Now;

            AppendText(this.txtMessage, String.Format("开始校准频率{0},读值稳定后按任意键进入下一个频率\r\n", freqNameList[step]));
            waitKey.Reset();
            while ((DateTime.Now - startTime).TotalSeconds < 10)
            {
                if (!Funs485.RdAllCh(cardAddr, out chValues))
                {
                    AppendText(this.txtMessage, String.Format("读取板{0}模拟量数据失败", cardAddr));
                    return(false);
                }
                if (!Funs485.RdAllCh(refCardNo, out refValues))
                {
                    AppendText(this.txtMessage, String.Format("读取板{0}模拟量数据失败", cardAddr));
                    return(false);
                }
                if (chValues.Length != refValues.Length)
                {
                    AppendText(this.txtMessage, String.Format("基准板与待校准板不一致"));
                    return(false);
                }
                chValues.CopyTo(WaitCalcValues, 0);
                refValues.CopyTo(RefValues, 0);
                InvalidateCtrl(this.gridValueView);
                if (waitKey.WaitOne(0, true))
                {
                    break;
                }
            }
            for (int i = 0; i < chValues.Length / 3; i++)
            {
                double coef    = scaleList[i * 4 + step] * 1.0;
                float  refVal  = refValues[i * 3];
                float  realVal = chValues[i * 3];
                coef = coef * refVal;
                coef = coef / realVal;
                // coef *= coef * refVal /realVal;
                scaleList[i * 4 + step] = (Int16)Math.Round(coef);
            }
            scaleList.CopyTo(CoeffValues, 0);
            InvalidateCtrl(this.gridValueView);
            return(true);
        }
Esempio n. 12
0
        private void btnCalcAndWrite_Click(object sender, EventArgs e)
        {
            try
            {
                for (int index = 0; index < this.dgvCalcDc.Rows.Count; ++index)
                {
                    this.dgvCalcDc.Rows[index].Cells[3].Value = (object)short.Parse(this.dgvCalcDc.Rows[index].Cells[0].Value.ToString()).ToString("X4");
                    int num = (int)short.Parse(this.dgvCalcDc.Rows[index].Cells[1].Value.ToString()) - (int)short.Parse(this.dgvCalcDc.Rows[index].Cells[0].Value.ToString());
                    this.dgvCalcDc.Rows[index].Cells[4].Value = (object)((int)short.Parse(this.dgvCalcDc.Rows[index].Cells[2].Value.ToString()) * 4096 / (int)(short)((int)short.Parse(this.dgvCalcDc.Rows[index].Cells[1].Value.ToString()) - (int)short.Parse(this.dgvCalcDc.Rows[index].Cells[0].Value.ToString()))).ToString("X4");
                }
            }
            catch
            {
            }
            byte boardAddr = (byte)ushort.Parse(this.textBoxBoardAddr.Text);

            Funs485.Rst(boardAddr);
            Funs485.UnLock(boardAddr);
            for (int index = 0; index < this.dgvCalcDc.Rows.Count; ++index)
            {
                ushort val1 = ushort.Parse(this.dgvCalcDc.Rows[index].Cells[3].Value.ToString(), NumberStyles.HexNumber);
                if (!Funs485.WriteDebugReg(boardAddr, (ushort)(byte)index, val1))
                {
                    int num = (int)MessageBox.Show("写入失败");
                    return;
                }
                else
                {
                    ushort val2 = ushort.Parse(this.dgvCalcDc.Rows[index].Cells[4].Value.ToString(), NumberStyles.HexNumber);
                    if (!Funs485.WriteDebugReg(boardAddr, (ushort)(byte)(index + 16), val2))
                    {
                        int num = (int)MessageBox.Show("写入失败");
                        return;
                    }
                }
            }
            this.boardAddress1 = (int)byte.Parse(this.textBoxBoardAddr.Text);
            if (!this.WriteReg(this.boardAddress1, (ushort)528, (ushort)43605))
            {
                int num1 = (int)MessageBox.Show("写入失败");
            }
            else
            {
                int num2 = (int)MessageBox.Show("写入成功");
            }
        }
Esempio n. 13
0
        private void WriteFactoryMessage(byte cardAddr)
        {
            byte[] message  = new byte[16];
            byte[] idStrBuf = Encoding.Default.GetBytes(cardId);
            int    coypLen  = idStrBuf.Length < 12 ? idStrBuf.Length : 12;

            Array.Copy(idStrBuf, message, coypLen);
            DateTime dt = DateTime.Now;

            message[12] = (byte)(dt.Year);
            message[13] = (byte)(dt.Year >> 8);
            message[14] = (byte)(dt.Month);
            message[15] = (byte)(dt.Day);
            Funs485.WrFactoryMessage(cardAddr, message);
            message = new byte[16];
            byte[] tsterNameBuf = Encoding.Default.GetBytes(testerName);
            coypLen = tsterNameBuf.Length < 16 ? tsterNameBuf.Length : 16;
            Array.Copy(tsterNameBuf, message, coypLen);
            Funs485.WrTsterMessage(cardAddr, message);
        }
Esempio n. 14
0
        private void ProcTest()
        {
            Int16[]  coefValues;
            String   id;
            DateTime dt;

            if (!Funs485.RdIdMessage(cardAddr, out id, out dt))
            {
                AppendText(this.txtMessage, "读取板Id失败");
            }
            AppendText(this.txtMessage, "开始测试" + id + "\r\n");

            WriteToFile(DateTime.Now.ToString("F") + id);
            if (!Funs485.RdScaleList(cardAddr, out coefValues))
            {
                AppendText(this.txtMessage, "读取系数失败");
                ShowText(this.btnRun, "开始测试");
                return;
            }

            coefValues.CopyTo(CoeffValues, 0);
            InvalidateCtrl(this.gridValueView);
            CalcFullValues();



            for (int i = 0; i < 4; i++)
            {
                DoAmpliTstStep(i, CoeffValues);
            }



            String ver;

            Funs485.RdVerMessage(cardAddr, out ver);
            AppendText(this.txtMessage, ver + "\r\n");
            // WriteFactoryMessage(cardAddr);
            ShowText(this.btnRun, "开始测试");
        }