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; }