private void cbTimeHex_CheckedChanged(object sender, EventArgs e)
        {
            try
            {
                if (cbTimeHex.Checked)
                {
                    //禁止Str自动发送。
                    cbTimeStr.Checked = false;

                    int t = int.Parse(tbTimeHex.Text);
                    if (t < 5)
                    {
                        t = 5;
                        tbTimeHex.Text = Convert.ToString(t, 10);
                    }
                    //起动Hex自动发送。
                    tbTimeHex.Enabled = false;
                    TimeHex.Enabled   = true;
                    TimeHex.Interval  = t;
                    TimeHex.Start();
                }
                else
                {
                    TimeHex.Stop();
                    TimeHex.Enabled   = false;
                    tbTimeHex.Enabled = true;
                }
            }
            catch (Exception Err)
            {
                MessageBox.Show("定时值不正确!" + Err.Message, "提示");
            }
        }
        private void CmdClick(int idx)
        {   //发送命令。
            try
            {
                //自动打开端口。
                if (!sComm.IsOpen)
                {
                    btOpen_Click(null, null);
                }

                string TempStr = string.Empty;

                TempStr = DelSpace(TempStr);

                if (cbDefFrm.Checked)                           //自动添加帧头帧尾和校验
                {
                    TempStr = DelSpace(tbStart.Text) + TempStr; //加入头。

                    //转换为字节数组。
                    int    Len    = TempStr.Length;   //待校验的字符串长度。
                    byte[] VerBin = new byte[Len / 2];
                    int    j      = 0;
                    for (int i = 0; i < Len; i += 2, j++)
                    {
                        VerBin[j] = Convert.ToByte(TempStr.Substring(i, 2), 16);
                    }
                    //计算校验字节。
                    byte VerByte = 0;
                    if (rdXor.Checked)
                    {
                        for (int i = 0; i < VerBin.Length; i++)
                        {
                            VerByte ^= VerBin[i];     //异或校验。
                        }
                    }
                    else if (rdAdd.Checked)
                    {
                        for (int i = 0; i < VerBin.Length; i++)
                        {
                            VerByte += VerBin[i];     //和校验。
                        }
                    }
                    //校验字节转为HEX字符串。
                    string VerStr = Convert.ToString(VerByte, 16);
                    //合成一帧。
                    TempStr = TempStr + DelSpace(VerStr) + DelSpace(tbEnd.Text);
                }

                SendAsHex(TempStr);
            }
            catch (Exception err)
            {
                TimeHex.Stop();
                TimeHex.Enabled = false;
                MessageBox.Show(err.Message, "提示");
                cbTimeHex.Checked = false;
            }
        }
 private void StopAutoSend()
 {
     //停止自动发送字符串。
     TimeStr.Stop();
     TimeStr.Enabled   = false;
     tbTimeStr.Enabled = true;
     cbTimeStr.Checked = false;
     //停止自动发送命令。
     TimeHex.Stop();
     TimeHex.Enabled   = false;
     tbTimeHex.Enabled = true;
     cbTimeHex.Checked = false;
 }