示例#1
0
        public Form1()
        {
            InitializeComponent();
            scale1 = new ScaleParams();
            scale2 = new ScaleParams();
            linkLabelMy0.DataBindings.Add("Value", scale1, "S0");
            linkLabelMy1.DataBindings.Add("Value", scale1, "S1");
            linkLabelMy2.DataBindings.Add("Value", scale1, "N");
            linkLabelMy3.DataBindings.Add("Value", scale1, "UnitsName");

            linkLabelMy7.DataBindings.Add("Value", scale2, "S0");
            linkLabelMy6.DataBindings.Add("Value", scale2, "S1");
            linkLabelMy5.DataBindings.Add("Value", scale2, "N");
            linkLabelMy4.DataBindings.Add("Value", scale2, "UnitsName");

            Point p;

            myBar1 = new MyBar();
            p      = panel1.Location;
            p.Offset(panel1.Width + 10, 0);
            myBar1.Location = p;
            myBar1.h        = panel1.Height;
            myBar1.w        = this.Width - panel1.Width - 40;

            myBar2 = new MyBar();
            p      = panel2.Location;
            p.Offset(panel2.Width + 10, 0);
            myBar2.Location = p;
            myBar2.h        = panel2.Height;
            myBar2.w        = this.Width - panel2.Width - 40;

            myBar1.Scale = scale1;
            myBar2.Scale = scale2;
        }
示例#2
0
        private void tableLayoutPanel1_MouseClick(object sender, MouseEventArgs e)
        {
            MyBar myBar, myBarOther;

            ScaleParams sc1, sc2;
            TextBox     tx1, tx2;

            if (myBar1.BoundRect.Contains(e.X, e.Y))
            {
                myBar      = myBar1;
                myBarOther = myBar2;
                sc1        = scale1;
                sc2        = scale2;
                tx1        = textBox1;
                tx2        = textBox2;
            }
            else
            {
                if (myBar2.BoundRect.Contains(e.X, e.Y))
                {
                    myBar      = myBar2;
                    myBarOther = myBar1;
                    sc1        = scale2;
                    sc2        = scale1;
                    tx1        = textBox2;
                    tx2        = textBox1;
                }
                else
                {
                    return;
                }
            }

            int x = e.X - myBar.Location.X;
            int y = e.Y - myBar.Location.Y;

            myBar.Click(new Point(x, y));

            #region

            float value = ScaleParams.Translate(myBar.Value, sc1, sc2);

            tx1.Text = myBar.Value.ToString();
            tx2.Text = value.ToString();

            try
            {
                myBarOther.Value = value;
            }
            catch (ArgumentOutOfRangeException)
            {
                myBarOther.Value = value > scale2.S1 ? sc2.S1 : sc2.S0;
            }

            statusLabel1.Text = string.Format("{0} {1} = {2} {3}",
                                              myBar.Value, sc1.UnitsName, value, sc2.UnitsName);
            #endregion

            Refresh();
        }
示例#3
0
        public ActionResult <IEnumerable <TodoItemResponse> > PostTodoItems()
        {
            List <TodoItemResponse> response = new List <TodoItemResponse>();

            _context.TodoItems.ToList().ForEach(
                m => {
                ScaleParams scalParam             = _context.ScaleParams.FirstOrDefault(s => s.TaskId == m.TaskId);
                ScaleParamsResponse rspScaleParam = new ScaleParamsResponse {
                    TaskId       = scalParam.TaskId,
                    ScaleParamId = scalParam.ScaleParamId,
                    ScaleBitrate = scalParam.ScaleBitrate,
                    ScaleName    = scalParam.ScaleName,
                    ScalePort    = scalParam.ScalePort
                };
                List <ScaleValueResponse> rspScaleValues = new List <ScaleValueResponse>();
                _context.ScaleValues.Where(v => v.TaskId == m.TaskId).ToList().ForEach(v => rspScaleValues.Add(
                                                                                           new ScaleValueResponse()
                {
                    TaskId       = v.TaskId,
                    Name         = v.Name,
                    DateTime     = v.DateTime,
                    ScaleValueId = v.ScaleValueId,
                    Value        = v.Value
                }
                                                                                           ));
                response.Add(new TodoItemResponse
                {
                    TokenId        = m.TokenId,
                    TaskId         = m.TaskId,
                    ScaleType      = m.ScaleType,
                    ScaleName      = m.ScaleName,
                    ScaleCount     = m.ScaleCount,
                    IsComplete     = m.IsComplete,
                    ScaleFrequency = m.ScaleFrequency,
                    ScaleParams    = rspScaleParam,
                    ScaleValues    = rspScaleValues
                });
            }
                );

            return(response);
        }
示例#4
0
        public ActionResult <TodoItemResponse> PostTodoItem(TodoItemRequest request)
        {
            ScaleParams         scaleParams         = _context.ScaleParams.FirstOrDefault(p => p.TaskId == request.TaskId);
            ScaleParamsResponse scaleParamsResponse = new ScaleParamsResponse();

            scaleParamsResponse.TaskId       = scaleParams.TaskId;
            scaleParamsResponse.ScalePort    = scaleParams.ScalePort;
            scaleParamsResponse.ScaleParamId = scaleParams.ScaleParamId;
            scaleParamsResponse.ScaleName    = scaleParams.ScaleName;
            scaleParamsResponse.ScaleBitrate = scaleParams.ScaleBitrate;

            List <ScaleValue>         scaleValues         = _context.ScaleValues.Where(v => v.TaskId == request.TaskId).ToList();
            List <ScaleValueResponse> scaleValueResponses = new List <ScaleValueResponse>();

            scaleValues.ForEach(v => {
                scaleValueResponses.Add(
                    new ScaleValueResponse()
                {
                    DateTime     = v.DateTime,
                    Name         = v.Name,
                    ScaleValueId = v.ScaleValueId,
                    TaskId       = v.TaskId,
                    Value        = v.Value
                }
                    );
            });

            TodoItem         todoitem = _context.TodoItems.Find(request.TaskId);
            TodoItemResponse response = new TodoItemResponse();

            response.TokenId        = todoitem.TokenId;
            response.TaskId         = todoitem.TaskId;
            response.IsComplete     = todoitem.IsComplete;
            response.ScaleCount     = todoitem.ScaleCount;
            response.ScaleFrequency = todoitem.ScaleFrequency;
            response.ScaleName      = todoitem.ScaleName;
            response.ScaleType      = todoitem.ScaleType;
            response.ScaleParams    = scaleParamsResponse;
            response.ScaleValues    = scaleValueResponses;
            return(response);
        }
示例#5
0
        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)Keys.Enter)
            {
                float old_value;

                if (!float.TryParse(textBox1.Text, out old_value))
                {
                    statusLabel1.Text = "Float number format error at the 1st scale!";
                    return;
                }

                float value = ScaleParams.Translate(old_value, scale1, scale2);

                try
                {
                    myBar2.Value = value;
                }
                catch (ArgumentOutOfRangeException)
                {
                    myBar2.Value = value > scale2.S1 ? scale2.S1 : scale2.S0;
                }
                try
                {
                    myBar1.Value = old_value;
                }
                catch (ArgumentOutOfRangeException)
                {
                    myBar1.Value = old_value > scale1.S1 ? scale1.S1 : scale1.S0;
                }


                textBox2.Text = value.ToString();

                statusLabel1.Text = string.Format("{0} {1} = {2} {3}",
                                                  old_value, scale1.UnitsName, value, scale2.UnitsName);
            }
        }
示例#6
0
            public void Draw(Graphics g)
            {
                g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;

                scaleG.S0 = x;
                scaleG.S1 = x + w;

                int strokeSize = 2;
                int midY       = y + h / 3;

                g.DrawLine(Pens.Black, x, midY, x + w, midY);

                for (float ix = x; ix <= x + w + 1; ix += w / 20f)
                {
                    g.DrawLine(Pens.Black, ix, midY - strokeSize, ix, midY + strokeSize);
                    g.DrawString(
                        (ScaleParams.Translate((ix - x) / w, scale0, scale))
                        .ToString("F2"),
                        new Font("Arial", 8f),
                        Brushes.Black,
                        ix, midY + strokeSize + 1,
                        strFormat);
                }

                float currX = ScaleParams.Translate(pos, scale0, scaleG);

                g.DrawLine(Pens.Red,
                           currX - 2 * strokeSize, midY - 15,
                           currX, midY);

                g.DrawLine(Pens.Red,
                           currX + 2 * strokeSize, midY - 15,
                           currX, midY);

                g.DrawLine(Pens.Red,
                           currX - 2 * strokeSize, midY - 15,
                           currX + 2 * strokeSize, midY - 15);
            }
示例#7
0
        private void trackBar2_Scroll(object sender, EventArgs e)
        {
            float old_value = (float)trackBar2.Value / trackBar2.Maximum * (scale2.S1 - scale2.S0) + scale2.S0;

            textBox2.Text = old_value.ToString();

            float value = ScaleParams.Translate(old_value, scale2, scale1);

            textBox1.Text = value.ToString();

            try
            {
                trackBar1.Value = (int)((value - scale1.S0) / (scale1.S1 - scale1.S0) * trackBar1.Maximum);
            }
            catch (ArgumentOutOfRangeException)
            {
                trackBar1.Value = value > scale1.S1 ?
                                  trackBar1.Maximum : trackBar1.Minimum;
            }

            statusLabel1.Text = string.Format("{0} {1} = {2} {3}",
                                              old_value, scale2.UnitsName, value, scale1.UnitsName);
        }
示例#8
0
        public ActionResult <ScaleResponse> PostScale(ScaleRequest scaleRequest)
        {
            //生成TaskId
            string TaskId = Guid.NewGuid().ToString();
            //生成TodoItem并保存
            ScaleParams       scaleParams = this.scaleParams;
            List <ScaleValue> scaleValues = this.scaleValues;

            scaleParams.TaskId = TaskId;
            //主键不能重复
            scaleParams.ScaleParamId = _context.ScaleParams.Count() + 1;
            int currentCount = _context.ScaleValues.Count();

            scaleValues.ForEach(m => {
                m.ScaleValueId = currentCount + m.ScaleValueId;
            });
            //更新关联关系
            TodoItem todoItem = new TodoItem {
                TokenId = scaleRequest.TokenId, TaskId = TaskId, ScaleName = this.ScaleName, ScaleType = this.ScaleType, ScaleCount = this.ScaleCount, ScaleFrequency = this.ScaleFrequency, ScaleParams = scaleParams, ScaleValues = this.scaleValues, IsComplete = false
            };

            scaleParams.todoItem = todoItem;
            scaleValues.ForEach(m => {
                m.TodoItem = todoItem;
            });
            //保存关联关系
            _context.TodoItems.Add(todoItem);
            _context.ScaleParams.Add(scaleParams);
            scaleValues.ForEach(m => _context.ScaleValues.Add(m));
            _context.SaveChanges();
            //返回结果
            ScaleResponse scaleResponse = new ScaleResponse {
                TokenId = scaleRequest.TokenId, TaskId = TaskId, Result = true, Msg = ""
            };

            return(scaleResponse);
        }
示例#9
0
 /// <summary>
 /// Converts value in scale sp1 to the value in the scale sp2
 /// </summary>
 /// <param name="value">Value in the scale sp1</param>
 /// <param name="sp1">Source scale</param>
 /// <param name="sp2">Destination scale</param>
 /// <returns>Value in the scale sp2</returns>
 public static float Translate(float value, ScaleParams sp1, ScaleParams sp2)
 {
     return((value - sp1.S0) * sp2.Unit / sp1.Unit + sp2.S0);
 }
示例#10
0
        public ActionResult <ScaleSaveTaskResponse> PostScaleSaveTask(ScaleSaveTaskRequest scaleSaveTask)
        {
            //返回结果
            ScaleSaveTaskResponse scaleSaveTaskResponse = new ScaleSaveTaskResponse {
                TaskId = scaleSaveTask.TaskId, Msg = "", Result = true
            };
            //获得TodoItem
            TodoItem item = _context.TodoItems.Find(scaleSaveTask.TaskId);
            //获得当前TaskId的电子秤参数
            ScaleParams scaleParams = _context.ScaleParams.FirstOrDefault(m => m.TaskId == scaleSaveTask.TaskId);
            //获得当前TaskId的秤重值
            List <ScaleValue> scaleValues = _context.ScaleValues.Where(s => s.TaskId == scaleSaveTask.TaskId).ToList();

            //默认TodoItem不为null
            if (item != null)
            {
                item.ScaleType  = scaleSaveTask.ScaleType;
                item.ScaleName  = scaleSaveTask.ScaleName;
                item.ScaleCount = scaleSaveTask.ScaleCount;
                //初始化的称重次数小于用户指定的称重次数,则初始化剩余的称重次数
                if (scaleValues.Count < item.ScaleCount)
                {
                    int currentCountAsName = scaleValues.Count();
                    int currentCount       = _context.ScaleValues.Count();
                    for (int i = 1; i <= item.ScaleCount - scaleValues.Count; i++)
                    {
                        _context.ScaleValues.Add(new ScaleValue
                        {
                            TaskId       = scaleSaveTask.TaskId,
                            DateTime     = DateTime.Now.ToUniversalTime(),
                            Name         = (currentCountAsName + i).ToString(),
                            ScaleValueId = (currentCount + i),
                            TodoItem     = item,
                            Value        = 0
                        });
                    }
                }
                item.ScaleFrequency   = scaleSaveTask.ScaleFrequency;
                scaleParams.ScalePort = scaleSaveTask.ScaleParams.ScalePort;
                item.ScaleParams      = scaleParams;
                //重建关联
                scaleParams.todoItem = item;
                scaleValues.ForEach(m => m.TodoItem = item);
                //重新保存
                _context.Entry(item).State = EntityState.Modified;
                ScaleParams scaleParams1 = _context.ScaleParams.Find(scaleParams.ScaleParamId);
                _context.Entry(scaleParams1).State = EntityState.Modified;
                scaleValues.ForEach(m =>
                {
                    ScaleValue scaleValue            = _context.ScaleValues.Find(m.ScaleValueId);
                    _context.Entry(scaleValue).State = EntityState.Modified;
                });
                _context.SaveChanges();
            }
            else
            {
                scaleSaveTaskResponse.Msg    = "Can not find todoitem";
                scaleSaveTaskResponse.Result = false;
            }
            //返回结果
            return(scaleSaveTaskResponse);
        }