BMS上位机

  private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)//串口数据接收事件
  {
      try
      {

          int bufferlen = serialPort1.BytesToRead;
          byte[] bytes = new byte[bufferlen];
          serialPort1.Read(bytes, 0, bufferlen);
          buffer.AddRange(bytes);
          while(buffer.Count >= 50)
          {
              if (buffer[0] == 0xAA) //传输数据有帧头,用于判断 
              {
                  //readBuffer = new byte[6];
                  得到完整的数据,复制到readBuffer中    
                  //buffer.CopyTo(0, readBuffer, 0, 5);
                  HandData();

                  //从缓冲区中清除
                  buffer.RemoveRange(0, 50);
              }
              else //开始标记或版本号不正确时清除           
              {
                  buffer.RemoveAt(0);
              }

          }

      }
      catch
      {

      }

  }
 if (buffer[0] == 0xAA && buffer[1] == 0x01 )
 {
     num++;
     data_package.Text = num.ToString();
     clean1_all();
     //Thread.Sleep(1);
     //str = Convert.ToString((byte)buffer[2], 16).ToUpper();
     textBox1.AppendText(num.ToString());
     textBox1.AppendText("  已接收电池串1信息!\r\n");
     V1_Box.Text = ((buffer[2] << 8) + buffer[3]).ToString();
     V2_Box.Text = ((buffer[4] << 8) + buffer[5]).ToString();
     V3_Box.Text = ((buffer[6] << 8) + buffer[7]).ToString();
     V4_Box.Text = ((buffer[8] << 8) + buffer[9]).ToString();
     V5_Box.Text = ((buffer[10] << 8) + buffer[11]).ToString();
     V6_Box.Text = ((buffer[12] << 8) + buffer[13]).ToString();
     V7_Box.Text = ((buffer[14] << 8) + buffer[15]).ToString();
     V8_Box.Text = ((buffer[16] << 8) + buffer[17]).ToString();
     V9_Box.Text = ((buffer[18] << 8) + buffer[19]).ToString();
     V10_Box.Text = ((buffer[20] << 8) + buffer[21]).ToString();
     V11_Box.Text = ((buffer[22] << 8) + buffer[23]).ToString();
     V12_Box.Text = ((buffer[24] << 8) + buffer[25]).ToString();

     tol1_V_Box.Text =( (buffer[32] << 8) + buffer[33]).ToString();
     SOC1_Box.Text = ((buffer[34] << 8) + buffer[35]).ToString();
     progressBar1.Value = Convert.ToInt32(SOC1_Box.Text);
     cur1_Box.Text = ((buffer[36] << 8) + buffer[37]).ToString();
     temp1_1_Box.Text = buffer[38].ToString();
     temp1_2_Box.Text = buffer[45].ToString();
     if (buffer[39] != 0)
     {
         DSG_STA.Text = ("开启");
     }
     else { DSG_STA.Text = ("关闭"); }
     if (buffer[40] != 0)
     {
         CHG_STA.Text = ("开启");
     }
     else { CHG_STA.Text = ("关闭"); }

     
     MAX1_V_Box.Text = ((buffer[41] << 8) + buffer[42]).ToString();
     MIN1_V_Box.Text = ((buffer[43] << 8) + buffer[44]).ToString();
     Diff1_V_Box.Text = ((buffer[41] << 8) + buffer[42] - ((buffer[43] << 8) + buffer[44])).ToString();
 }

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洛溪之恋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值