Form2.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Windows.Forms;
  8. using ZedGraph;
  9. namespace MOTINOVA_MC_Test
  10. {
  11. public partial class Form2 : Form
  12. {
  13. //力矩曲线
  14. private PointPairList list_TorqueData = new PointPairList();
  15. private LineItem myCurve_TorqueData;
  16. //传感器1曲线
  17. private PointPairList list_Sensor1 = new PointPairList();
  18. private LineItem myCurve_Sensor1;
  19. //传感器2曲线
  20. private PointPairList list_Sensor2 = new PointPairList();
  21. private LineItem myCurve_Sensor2;
  22. //传感器3曲线
  23. private PointPairList list_Sensor3 = new PointPairList();
  24. private LineItem myCurve_Sensor3;
  25. //电流曲线
  26. private PointPairList list_CurrentData = new PointPairList();
  27. private LineItem myCurve_CurrentData;
  28. //马达转速曲线
  29. private PointPairList list_MotorSpeedData = new PointPairList();
  30. private LineItem myCurve_MotorSpeedData;
  31. public Form2()
  32. {
  33. InitializeComponent();
  34. this.ControlBox = false;
  35. }
  36. private void Form2_Load(object sender, EventArgs e)
  37. {
  38. ZedGraphControl1Init();
  39. }
  40. #region ZedGraphControlInit()
  41. private void ZedGraphControl1Init()
  42. {
  43. this.zedGraphControl1.IsShowPointValues = true;
  44. this.zedGraphControl1.GraphPane.Title.Text = "曲线采集";
  45. this.zedGraphControl1.GraphPane.XAxis.Title.Text = "时间";
  46. this.zedGraphControl1.GraphPane.YAxis.Title.Text = "数值";
  47. this.zedGraphControl1.GraphPane.XAxis.Type = ZedGraph.AxisType.Ordinal;
  48. this.zedGraphControl1.IsEnableHZoom = true;
  49. this.zedGraphControl1.IsEnableVZoom = false;
  50. this.zedGraphControl1.IsZoomOnMouseCenter = true;
  51. this.zedGraphControl1.ZoomStepFraction = 0.1;
  52. this.zedGraphControl1.GraphPane.Chart.Fill.Color = Color.Black;//图表颜色
  53. this.zedGraphControl1.GraphPane.Fill.Color = Color.Gray;//背景
  54. this.zedGraphControl1.GraphPane.Chart.Fill.Type = FillType.Solid;
  55. this.zedGraphControl1.GraphPane.XAxis.MajorGrid.IsVisible = true;
  56. this.zedGraphControl1.GraphPane.YAxis.MajorGrid.IsVisible = true;
  57. this.zedGraphControl1.GraphPane.XAxis.MinorGrid.IsVisible = false;
  58. this.zedGraphControl1.GraphPane.YAxis.MinorGrid.IsVisible = false;
  59. this.zedGraphControl1.GraphPane.XAxis.MajorGrid.DashOff = 1f;
  60. this.zedGraphControl1.GraphPane.YAxis.MajorGrid.DashOff = 1f;
  61. this.zedGraphControl1.GraphPane.XAxis.MajorGrid.Color = Color.Gray;
  62. this.zedGraphControl1.GraphPane.YAxis.MajorGrid.Color = Color.Gray;
  63. this.zedGraphControl1.GraphPane.YAxis.Scale.Min = -5;
  64. this.zedGraphControl1.GraphPane.YAxis.Scale.Max = 200;
  65. this.zedGraphControl1.GraphPane.YAxis.Scale.MinorStep = 1;
  66. this.zedGraphControl1.GraphPane.YAxis.Scale.MajorStep = 5;
  67. this.zedGraphControl1.GraphPane.XAxis.Scale.MinorStep = 10;
  68. this.zedGraphControl1.GraphPane.XAxis.Scale.MajorStep = 50;
  69. for (int i = 0; i < 500; i++)
  70. {
  71. double x = (double)new XDate(DateTime.Now.AddSeconds(-(500 - i)));
  72. double y = 0;//ran.NextDouble();
  73. list_TorqueData.Add(x, y);
  74. list_Sensor1.Add(x, y);
  75. list_Sensor2.Add(x, y);
  76. list_Sensor3.Add(x, y);
  77. list_CurrentData.Add(x, y);
  78. list_MotorSpeedData.Add(x, y);
  79. }
  80. myCurve_TorqueData = zedGraphControl1.GraphPane.AddCurve("(黄色)TqSensor * 1N.m", list_TorqueData, Color.Yellow, SymbolType.None);
  81. myCurve_Sensor1 = zedGraphControl1.GraphPane.AddCurve("(粉色)Sensor1 * 1N.m", list_Sensor1, Color.Pink, SymbolType.None);
  82. myCurve_Sensor2 = zedGraphControl1.GraphPane.AddCurve("(紫色)Sensor2 * 1N.m", list_Sensor2, Color.Purple, SymbolType.None);
  83. myCurve_Sensor3 = zedGraphControl1.GraphPane.AddCurve("(青色)Sensor3 * 1N.m", list_Sensor3, Color.Cyan, SymbolType.None);
  84. myCurve_CurrentData = zedGraphControl1.GraphPane.AddCurve("(红色)BusCurrent * 0.1A", list_CurrentData, Color.Red, SymbolType.None);
  85. myCurve_MotorSpeedData = zedGraphControl1.GraphPane.AddCurve("(绿色)MotorSpeed * 10rpm", list_MotorSpeedData, Color.Green, SymbolType.None);
  86. this.zedGraphControl1.AxisChange();
  87. this.zedGraphControl1.Refresh();
  88. }
  89. #endregion
  90. private void timer1_Tick(object sender, EventArgs e)
  91. {
  92. DataRefresh();
  93. WaveRefresh();
  94. }
  95. private void DataRefresh()
  96. {
  97. textBox_Torque.Text = Class_TorqueData.String;
  98. textBox_Sensor1.Text = Class_Sensor1Data.String;
  99. textBox_Sensor2.Text = Class_Sensor2Data.String;
  100. textBox_Sensor3.Text = Class_Sensor3Data.String;
  101. textBox_Current.Text = Class_CurrentData.String;
  102. textBox_MotorSpeed.Text = Class_MotorSpeed.String;
  103. }
  104. private void WaveRefresh()
  105. {
  106. if (checkBox_ReadWave.Checked == true)
  107. {
  108. double x = (double)new XDate(DateTime.Now);
  109. /***********力矩曲线**********/
  110. list_TorqueData.Add(x, (double)Class_TorqueData.Data);
  111. if (list_TorqueData.Count >= 500)
  112. {
  113. list_TorqueData.RemoveAt(0);
  114. }
  115. /***********传感器1曲线**********/
  116. list_Sensor1.Add(x, (double)Class_Sensor1Data.Data);
  117. if (list_Sensor1.Count >= 500)
  118. {
  119. list_Sensor1.RemoveAt(0);
  120. }
  121. /***********传感器2曲线**********/
  122. list_Sensor2.Add(x, (double)Class_Sensor2Data.Data);
  123. if (list_Sensor2.Count >= 500)
  124. {
  125. list_Sensor2.RemoveAt(0);
  126. }
  127. /***********传感器3曲线**********/
  128. list_Sensor3.Add(x, (double)Class_Sensor3Data.Data);
  129. if (list_Sensor3.Count >= 500)
  130. {
  131. list_Sensor3.RemoveAt(0);
  132. }
  133. /***********电流曲线**********/
  134. list_CurrentData.Add(x, (double)Class_CurrentData.Data / 100);
  135. if (list_CurrentData.Count >= 500)
  136. {
  137. list_CurrentData.RemoveAt(0);
  138. }
  139. /***********马达转速曲线**********/
  140. list_MotorSpeedData.Add(x, (double)Class_MotorSpeed.Data / 10);
  141. if (list_MotorSpeedData.Count >= 500)
  142. {
  143. list_MotorSpeedData.RemoveAt(0);
  144. }
  145. }
  146. zedGraphControl1.AxisChange();
  147. zedGraphControl1.Refresh();
  148. }
  149. private void button1_Click(object sender, EventArgs e)
  150. {
  151. Bitmap bit = new Bitmap(this.Width, this.Height);//实例化一个和窗体一样大的bitmap
  152. Graphics g = Graphics.FromImage(bit);
  153. g.CopyFromScreen(this.Left, this.Top, 0, 0, new Size(this.Width, this.Height));//保存整个窗体为图片
  154. SaveFileDialog sf = new SaveFileDialog();
  155. sf.Title = "保存曲线";
  156. if ((Class_Motor_Ver.Mode == "---") || (Class_Motor_Ver.SN == "---"))
  157. {
  158. MessageBox.Show("请查询版本信息!", "", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  159. return;
  160. }
  161. sf.FileName = Class_Motor_Ver.Mode + "_" + Class_Motor_Ver.SN + "_";
  162. sf.FileName += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss").Replace("/", "-").Replace(":", string.Empty).Replace(" ", "_") + "_曲线采集" + ".png";
  163. sf.Filter="图片|*.png";
  164. if (sf.ShowDialog() == DialogResult.OK)
  165. {
  166. bit.Save(sf.FileName);//默认保存格式为PNG,保存成jpg格式质量不是很好
  167. }
  168. }
  169. private void timer2_Tick(object sender, EventArgs e)
  170. {
  171. label5.Text = DateTime.Now.ToString();
  172. }
  173. private void textBox1_TextChanged(object sender, EventArgs e)
  174. {
  175. ushort Period;
  176. Period = Convert.ToUInt16(textBox_ReadDataPeriod.Text);
  177. if (Period < 20)
  178. {
  179. Period = 20;
  180. }
  181. timer1.Interval = Period;
  182. }
  183. #region 曲线显示设置
  184. private void checkBox_TorqueLine_CheckedChanged(object sender, EventArgs e)
  185. {
  186. if (checkBox_TorqueLine.Checked == true)
  187. {
  188. myCurve_TorqueData.IsVisible = true;
  189. }
  190. else
  191. {
  192. myCurve_TorqueData.IsVisible = false;
  193. }
  194. }
  195. private void checkBox_CurrentLine_CheckedChanged(object sender, EventArgs e)
  196. {
  197. if (checkBox_CurrentLine.Checked == true)
  198. {
  199. myCurve_CurrentData.IsVisible = true;
  200. }
  201. else
  202. {
  203. myCurve_CurrentData.IsVisible = false;
  204. }
  205. }
  206. private void checkBox_MotorSpeedLine_CheckedChanged(object sender, EventArgs e)
  207. {
  208. if (checkBox_MotorSpeedLine.Checked == true)
  209. {
  210. myCurve_MotorSpeedData.IsVisible = true;
  211. }
  212. else
  213. {
  214. myCurve_MotorSpeedData.IsVisible = false;
  215. }
  216. }
  217. private void checkBox_Sensor1_CheckedChanged(object sender, EventArgs e)
  218. {
  219. if (checkBox_Sensor1.Checked == true)
  220. {
  221. myCurve_Sensor1.IsVisible = true;
  222. }
  223. else
  224. {
  225. myCurve_Sensor1.IsVisible = false;
  226. }
  227. }
  228. private void checkBox_Sensor2_CheckedChanged(object sender, EventArgs e)
  229. {
  230. if (checkBox_Sensor2.Checked == true)
  231. {
  232. myCurve_Sensor2.IsVisible = true;
  233. }
  234. else
  235. {
  236. myCurve_Sensor2.IsVisible = false;
  237. }
  238. }
  239. private void checkBox_Sensor3_CheckedChanged(object sender, EventArgs e)
  240. {
  241. if (checkBox_Sensor3.Checked == true)
  242. {
  243. myCurve_Sensor3.IsVisible = true;
  244. }
  245. else
  246. {
  247. myCurve_Sensor3.IsVisible = false;
  248. }
  249. }
  250. #endregion
  251. }
  252. }