示例#1
0
        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();
        }