Ejemplo n.º 1
0
        // Acttion, ������������ ������� �� ���������� �������
        private void ShowChartAction_Execute(object sender, EventArgs e)
        {
            Plant CurrentPlant;
              ReportPart CurrentPart;
              DataRow ChartRow;
              BookColumn ChartColumn;
              GetCurrentCellInfo(out CurrentPlant, out CurrentPart, out ChartRow, out ChartColumn);
              if (ChartColumn == null)
              {
            MessageBox.Show("���������� ������� ������� � ������� ��� ��������� ��������", "�������� ��������", MessageBoxButtons.OK, MessageBoxIcon.Error);
            return;
              }
              if (ChartRow == null || CurrentPart == null)
              {
            MessageBox.Show("���������� ������� ������ � ��������� ��� ��������� ��������", "�������� ��������", MessageBoxButtons.OK, MessageBoxIcon.Error);
            return;
              }
              string ModuleNorm = FM[CurrentPart.NormRow, ChartColumn.column1];
              string ModuleName = "";

              string CurrentFieldIndex = CurrentPart.FieldName(ChartColumn.column1).Split('*')[1];
              object CurrentLowerNorm = ChartRow["LowerLimit*" + CurrentFieldIndex];
              object CurrentUpperNorm = ChartRow["UpperLimit*" + CurrentFieldIndex];

              List<Plant> PlantsList = new List<Plant>();
              foreach (ReportPart part in Parts)
            if (part.Data != null && part.Data.Rows.Count > 0)
            {
              Plant p = plants.FindPlant(Convert.ToInt32(part.Data[0, "plantid"]));
              if (!PlantsList.Contains(p))
            PlantsList.Add(p);
            }

              QueryResult[] ChartDatas = new QueryResult[PlantsList.Count];
              DataRow ModuleRow;

              int i = 0;
              foreach (ReportPart part in Parts)
              {
            if (part.Data != null && part.Data.Rows.Count > 0)
            {
              string FieldName = part.FieldName(ChartColumn.column1);
              if (FieldName != "")
              {
            string[] values = FieldName.Split('*');
            int ColumnIndex = Functions.ConvertToInt32(values[1]);
            ModuleRow = part.Columns.Rows[ColumnIndex];

            ModuleName = ModuleRow["TextModule"].ToString();
            if (ModuleRow["TestGroup"].ToString().Trim() != "")
              ModuleName = ModuleRow["TestGroup"].ToString() + ", " + ModuleName;

            string DateField = "qaodecisiontime";
            string CertField = "batchno";
            string DataField = "Result*" + ColumnIndex.ToString();
            string MinField = "LowerLimit*" + ColumnIndex.ToString();
            string MaxField = "UpperLimit*" + ColumnIndex.ToString();

            // ���� ����� ���������, ��
            /*if (ModuleNorm.ToLower() != ModuleRow["ModuleNorm"].ToString().ToLower())
              continue;*/
            if (CurrentLowerNorm.ToString().ToLower() != part.Data[0, MinField].ToString().ToLower()
             || CurrentUpperNorm.ToString().ToLower() != part.Data[0, MaxField].ToString().ToLower())
              continue;

            // ��������� ����� �������� �������
            QueryResult dt = new QueryResult(part.Data.DefaultView.ToTable(false, DateField, CertField, DataField, MinField, MaxField));
            // �������������� ��������
            dt.Columns[DateField].ColumnName = "Date";
            dt.Columns[CertField].ColumnName = "Passport";
            dt.Columns[DataField].ColumnName = "Value";
            dt.Columns[MinField].ColumnName = "Min";
            dt.Columns[MaxField].ColumnName = "Max";
            // ���������� ����� ��������
            dt.AddColumn("PlantName", typeof(string), plants.FindPlant(Convert.ToInt32(part.Data[0, "plantid"])).ShortPlantName);
            dt.AddColumn("Module", typeof(string), ModuleName);
            dt.AddColumn("Norm", typeof(string), ModuleRow["ModuleNorm"]);
            if (Functions.IsNumber(FM[part.RowAvg, ChartColumn.column1]))
              dt.AddColumn("Average", typeof(double), FM[part.RowAvg, ChartColumn.column1]);

            i = PlantsList.IndexOf(plants.FindPlant(Convert.ToInt32(part.Data[0, "plantid"])));
            if (ChartDatas[i] == null)
              ChartDatas[i] = new QueryResult(dt);
            else
            {
              // ���� � ������ ������ ���� �������� � ����������� �������, �� �� ����� ����������
              ChartDatas[i].Merge(dt);
              // �������� ����������������� �������� ����� ����������� ������
              if (ChartDatas[i].Columns.Contains("Average"))
              {
                object newavg = ChartDatas[i].Compute("avg(Average)", "");
                foreach (DataRow row in ChartDatas[i].Rows)
                  row["Average"] = newavg;
              }
            }
              }

            }
            if (ChartDatas[i] != null) // ��������� ������ ����� ������������ (����� ����������, ���� ���� ����������� ������ ���������)
            {
              DataView dv = ChartDatas[i].DefaultView;
              dv.Sort = "Date, Passport";
              ChartDatas[i] = new QueryResult(dv.ToTable());
            }
              }

              //Array.Resize<QueryResult>(ref ChartDatas, 5);

              ChartForm form = new ChartForm();
              form.Text = string.Format("{0}. {1}, {2}", (ProductCombo.SelectedItem as DataRowView)["Description"], ModuleName, ModuleNorm);
              form.TitleLabel.Text = form.Text;
              form.Initialize(ChartDatas);

              form.WindowState = FormWindowState.Maximized;
              form.Show();
        }
Ejemplo n.º 2
0
        private void Execute()
        {
            List<byte> rxBuff = new List<byte>();

            while(true)
            {
                byte[] read = new byte[1];

                try
                {
                    // Read
                    int rxed = _socket.Receive(read, read.Length, SocketFlags.None);

                    // Add data to buffer
                    rxBuff.AddRange(read.Take(rxed));

                    // process data if it contains a terminating character
                    if (rxBuff.Contains(0x02))
                    {
                        // retreive the string
                        string rxStr = Encoding.UTF8.GetString(rxBuff.Take(rxBuff.IndexOf(0x02)).ToArray());
                        // remove the data that was just converted into a string (plus the 0x02 terminator)
                        rxBuff.RemoveRange(0, rxBuff.IndexOf(0x02) + 1);

                        // Deserialize to the message structure
                        Message msg = JsonConvert.DeserializeObject<Message>(rxStr);

                        // Notify all listeners
                        if (msg != null)
                        {
                            OnMessageRxed(msg);
                        }
                    }
                }
                catch
                {
                    OnDisconnected();
                }
            }
        }
Ejemplo n.º 3
0
        public void SendSolvingResultType1(RKResults res, IFunctionExecuter fe)
        {
            var dz = new double[res.Count - 1];
            for (int i = 1; i < res.Count; i++)
            {
                dz[i - 1] = (res[i].Y[0] - res[i - 1].Y[0])/(res[i].X - res[i - 1].X);
            }
            var lambda = new int[res.Count - 1];

            //v[0] = t <= 0 ? -1 : 1
            var valInPoint = new List<double>();
            for (int i = 0; i < res.Count - 1; i++)
            {
                valInPoint.Clear();
                for (int j = 0; j < fe.SetCount; j++)
                {
                    valInPoint.Add(Math.Abs(dz[i] - fe.FunctionSet(res[i].X, res[i].Y, j)));
                }

                lambda[i] = valInPoint.IndexOf(valInPoint.Min()) + 1;
            }
            //int g = 0;

            int mn = lambda[0];
            var divZ = new List<double>(); // res[0].Y[0];
            var divT = new List<double>(); // res[0].X;

            var checkedSet = new List<int>();

            for (int i = 1; i < lambda.Length; i++)
            {
                if (lambda[i] != mn && (checkedSet.Count == 0 || !checkedSet.Contains(lambda[i])))
                {
                    divT.Add((res[i].X + res[i - 1].X)/2f);
                    divZ.Add((res[i].Y[0] + res[i - 1].Y[0])/2f);
                    checkedSet.Add(mn);
                    mn = lambda[i];
                    continue;
                }
            }

            //fill DataSouce
            var list = new List<ResPointViewType1>();
            for (int i = 0; i < lambda.Length; i++)
            {
                list.Add(new ResPointViewType1(res[i].X, res[i].Y[0], lambda[i], -1));
            }

            ShowResultType1(divT, divZ, list, res[0].X, res[res.Count - 1].X);
        }
Ejemplo n.º 4
0
        private void ResolveType2(RKResults res, IFunctionExecuter fe, out List<double> divT, out List<double> divZ,
                                  out List<double> divZ2, out List<ResPointViewType2> list)
        {
            var dz1 = new double[res.Count - 1];
            for (int i = 1; i < res.Count; i++)
            {
                dz1[i - 1] = (res[i].Y[0] - res[i - 1].Y[0])/(res[i].X - res[i - 1].X);
            }
            var dz2 = new double[res.Count - 2];
            for (int i = 1; i < dz1.Length; i++)
            {
                dz2[i - 1] = (dz1[i] - dz1[i - 1])/(res[i].X - res[i - 1].X);
            }

            var lambda = new int[res.Count - 2];

            var valInPoint = new List<double>();
            for (int i = 0; i < res.Count - 2; i++)
            {
                valInPoint.Clear();
                for (int j = 0; j < fe.SetCount; j++)
                {
                    valInPoint.Add(Math.Abs(dz2[i] - fe.FunctionSet(res[i].X, res[i].Y, j)));
                }

                lambda[i] = valInPoint.IndexOf(valInPoint.Min()) + 1;
            }
            //int g = 0;

            int mn = lambda[0];
            divZ = new List<double>(); // res[0].Y[0];
            divT = new List<double>(); // res[0].X;
            divZ2 = new List<double>();

            var checkedSet = new List<int>();

            for (int i = 1; i < lambda.Length; i++)
            {
                if (lambda[i] != mn && (checkedSet.Count == 0 || !checkedSet.Contains(lambda[i])))
                {
                    divT.Add((res[i].X + res[i - 1].X)/2f);
                    divZ.Add((res[i].Y[0] + res[i - 1].Y[0])/2f);
                    divZ2.Add((res[i].Y[1] + res[i - 1].Y[1])/2f);
                    checkedSet.Add(mn);
                    mn = lambda[i];
                }
            }

            //fill DataSouce
            list = new List<ResPointViewType2>();
            for (int i = 0; i < lambda.Length; i++)
            {
                list.Add(new ResPointViewType2(res[i].X, res[i].Y[0], res[i].Y[1], lambda[i], -1));
            }
        }
Ejemplo n.º 5
0
 public int IndexOfItem(ListItem item)
 {
     return(items.IndexOf(item));
 }