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