/** * 此函数完成的工作: * 接收CANMessage的Name和CANSignal的Name和用户输入的物理值,以及对CANTool向CAN总线发送命令的周期 * 返回封装好的字符串 */ public static string EncodeCANSignal(string messageName, string signalName, double input) { return(Encode.EncodeCANSignal(messageName, signalName, input, "0000")); }
//发送按钮 private void btnSend_Click(object sender, EventArgs e) { if (!sp1.IsOpen) //如果没打开 { MessageBox.Show("请先打开串口!", "Error"); return; } if (canOpen.Enabled) { MessageBox.Show("请先打开CANTool装置!", "Error"); return; } string strMessage = ""; string strSignal = ""; if (message.SelectedItem == null) { MessageBox.Show("请选择Message!", "Error"); return; } else { strMessage = (string)message.SelectedItem.ToString(); } if (signal.SelectedItem == null) { MessageBox.Show("请选择Signal!", "Error"); return; } else { strSignal = (string)signal.SelectedItem.ToString(); } double strSend = -1; if (txtSend.Text == "") { MessageBox.Show("请填写信息!", "Error"); return; } else if (double.TryParse(txtSend.Text, out strSend) == false) { MessageBox.Show("输入内容有误,请重新输入", "Error"); return; } //检查sendcycle非法输入 string str3 = ""; int strcheck = -1; if (sendcycle.Text == "Range:0 - 65535") { str3 = Encode.EncodeCANSignal(strMessage, strSignal, strSend); } else if (int.TryParse(sendcycle.Text, out strcheck) == false) { MessageBox.Show("输入内容有误,请重新输入", "Error"); return; } else { int a = int.Parse(sendcycle.Text); if (a < 0 || a > 65535) { MessageBox.Show("输入数据超出范围,请重新输入", "Error"); return; } else { str3 = Encode.EncodeCANSignal(strMessage, strSignal, strSend, Convert.ToUInt32(sendcycle.Text).ToString("x4").ToUpper()); } } //丢弃来自串行驱动程序的接受缓冲区的数据 sp1.DiscardInBuffer(); //丢弃来自串行驱动程序的传输缓冲区的数据 sp1.DiscardOutBuffer(); //使用缓冲区的数据将指定数量的字节写入串行端口 //MessageBox.Show(str3, "发送的数据为"); //sp1.Write(str3); if (str3!=null&&!str3.Equals("")) { sp1.Write(str3); } }