C#Winform串口如何实现多次发送?需要经过比对成功才发送下一次。需要实现功能如下!

当PC发送一个数据后,PC会接收到一个返回值,这个数据是硬件执行完之后的返回值。
想把返回值与发送值进行比对,如果正确的话,那么继续发送另一条数据(在循环里面)
然后继续判断、继续发送。

这是我的接收代码,举个例是这样的值{"c":"done"x":"0.0 "y":"0.0 "z":"48"r":"0.0 ","v":"26108"}
如何可以单独的取出x的值,y的值,r的值去和发送的比对呢?
我发送的值的格式为这样{"c":"run","x":"0","y":"0","z":"0","r":"0","v":"322"}
他们俩的格式不同,发送的值有逗号(,)上面的有些有有些没有,所以想把对应的值取出来!

        void Comm_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            try
            {
                Byte[] InputBuf = new Byte[128];
                serialPort.Read(InputBuf, 0, serialPort.BytesToRead);

                ASCIIEncoding encoding = new ASCIIEncoding();
                data = encoding.GetString(InputBuf);
                new Thread(SetReceiveData).Start();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
        }
        public void SetReceiveData()
        {
            lock (this)

                Invoke(new MethodInvoker(delegate ()

                {

                    this.txtReceive.AppendText(data);

                }));

        }

这是我发送给串口的代码

private void btnSend_Click(object sender, EventArgs e)
        {
            try
            {
                for (int i = 1; i <= 2;) 
                {
                    string valuex = @""""+ini.IniReadValue("坐标值" + i, "x")+ @"""";
                    string valuey = @""""+ini.IniReadValue("坐标值" + i, "y")+ @"""";
                    string valuez = @""""+ini.IniReadValue("坐标值" + i, "z")+ @"""";
                    string valuer = @""""+ini.IniReadValue("坐标值" + i, "r")+ @"""";

                    sd = Encoding.UTF8.GetBytes(@"{""c"":""run""," + @"""x"":" + valuex + "," + @"""y"":" + valuey + "," + @"""z"":" + valuez + "," + @"""r"":" + valuer + "," + @"""v"":""322""}");
                    serialPort.Write(sd, 0, sd.Length);
                    textBox12.AppendText(valuex);
                    Thread.Sleep(10000);
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show("Error:" + ex.Message, "Error");
            }
        }