/// <summary>
        /// 组装自定义数据包
        /// </summary>
        /// <typeparam name="T">数据包类型</typeparam>
        /// <param name="msg">数据</param>
        /// <param name="command">命令</param>
        /// <param name="platform">目标平台</param>
        /// <param name="shopId">店铺ID</param>
        /// <param name="info">普通消息</param>
        /// <returns></returns>
        public static string GetTransmitPackets <T>(this T msg, CustomCommand command, string platform = "", string shopId = "", string info = "") where T : class
        {
            TransmitPackets <T> transmit = new TransmitPackets <T>
            {
                Command  = (int)command,
                Data     = msg,
                Platform = platform,
                ShopId   = shopId,
                Message  = info
            };

            return(transmit.TryToJson(true));
        }
        //************************************
        //Send fuzzed selected packet over the network
        //written by Parnian Najafi Borazjani
        //************************************
        private void TransmitFuzz_Click_1(object sender, EventArgs e)
        {
            CanData can = new CanData();
            string msgOutput = "";

            if (dataGridView1.SelectedRows.Count > 0 && dataGridView1.SelectedRows[0] != null)
            {

                if (dataGridView1.SelectedRows[0].Cells[1].Value == null)
                    return;
                if (!(String.IsNullOrEmpty(dataGridView1.SelectedRows[0].Cells[1].Value.ToString()))) //ID
                    msgOutput = dataGridView1.SelectedRows[0].Cells[1].Value.ToString() + ";";
                if (!(String.IsNullOrEmpty(dataGridView1.SelectedRows[0].Cells[4].Value.ToString()))) //DLC
                    msgOutput += dataGridView1.SelectedRows[0].Cells[4].Value.ToString() + ";";

                if (!(String.IsNullOrEmpty(dataGridView1.SelectedRows[0].Cells[5].Value.ToString()))) //flag
                    msgOutput += dataGridView1.SelectedRows[0].Cells[5].Value.ToString() + ";";
                else
                    msgOutput += "S" + ";";

                if (Monitor_Hex.Checked == true)
                {
                    can.format = "hex";
                    msgOutput += dataGridView1.SelectedRows[0].Cells[2].Value.ToString().Replace(" ", string.Empty);
                }
                else
                {
                    can.format = "decimal";
                    msgOutput += dataGridView1.SelectedRows[0].Cells[2].Value.ToString();
                }

                ////put for testing
                // MessageBox.Show("Data to convert:" + msgOutput);
                CommonUtils.ConvertStringtoCAN(can, msgOutput); //added

                can.hardware = TransmitInterfaceBox.SelectedItem.ToString();

                // Verbose Output
                //if (VerboseTransmit.Checked == true)
                //    MessageBox.Show(CommonUtils.DisplayMsg(can));

            }

            TransmitPackets tp = new TransmitPackets();

            tp.ShowForm(can);
            tp.MdiParent = MainWindow.ActiveForm;
            tp.Show();
        }