Пример #1
0
 /**
  * 此函数完成的工作:
  *  接收CANMessage的Name和CANSignal的Name和用户输入的物理值,以及对CANTool向CAN总线发送命令的周期
  *  返回封装好的字符串
  */
 public static string EncodeCANSignal(string messageName, string signalName, double input)
 {
     return(Encode.EncodeCANSignal(messageName, signalName, input, "0000"));
 }
Пример #2
0
        //发送按钮
        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);
            }
            
        }