private void button1_Click(object sender, EventArgs e) { serialPort = new SerialPort("COM12", 115200, Parity.None, 8, StopBits.One); serialPort.ReadTimeout = 1000; serialPort.Open(); try { Send("p " + (Kp.Value / 1000.0).ToString()); Send("i " + (Ki.Value / 1000.0).ToString()); Send("d " + (Kd.Value / 1000.0).ToString()); Send("s " + Setpoint.Value.ToString()); Send("l 500"); Send("g"); string s_Kp = serialPort.ReadLine(); string s_Ki = serialPort.ReadLine(); string s_Kd = serialPort.ReadLine(); string s_SetPoint = serialPort.ReadLine(); string loops = serialPort.ReadLine(); DataBlock db = new DataBlock(); db.m_channels = 2; db.m_samplesPerChannel = 500; db.Alloc(); for (int i = 0; i < 500; i++) { string str = serialPort.ReadLine(); string[] ss = str.Split(' '); int val1; int val2; int.TryParse(ss[0], out val1); int.TryParse(ss[1], out val2); if (val1 < 0) val1 = 0; db.SetVoltage(0, i, (int)(val1 * 128 / Setpoint.Value)); db.SetVoltage(1, i, (int)((val2 / 2) + 128)); } db.m_sampleRate = 25; db.m_channels = 2; db.m_dataType = DataBlock.DATA_TYPE.ANALOG; graphControl1.SetScopeData(db); } catch { graphControl1.SetScopeData(null); } serialPort.Close(); }