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; }
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(); }
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); }
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); }
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); } }
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); }
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); }
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); }
/// <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); }
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); }