예제 #1
0
 public void HandleRecvBmsInfoDataEvent(object sender, CustomRecvDataEventArgs e)
 {
     DdProtocol.bReadDdBmsResp = true;
     DdProtocolUpdateBmsInfo(e.RecvMsg);
     PassSOCEvent?.Invoke(this, new EventArgs <string>(ListBmsInfo[6].StrValue));
     PassUTCEvent?.Invoke(this, new EventArgs <string>(ListBmsInfo[25].StrValue));
 }
예제 #2
0
 public void HandleRecvDDFeedbackInfoEvent(object sender, CustomRecvDataEventArgs e)
 {
     if (isReadFeedback)
     {
         isReadFeedback = false;
         DdProtocol.DdInstance.m_bIsStopCommunication = false;
         List <byte> listRecv = e.RecvMsg;
         try
         {
             if (listRecv.Count < 0x0A || listRecv[1] != 0x06)
             {
                 return;
             }
             ListFeedbackInfo[0].StrValue = listRecv[2].ToString();
             int value = (listRecv[4] << 8) | listRecv[5];
             ListFeedbackInfo[1].StrValue = (value / 10.0).ToString("F1");
             int maxValue = (listRecv[6] << 8) | listRecv[7];
             ListFeedbackInfo[2].StrValue = (maxValue / 100.0).ToString("F2");
             MessageBox.Show("反馈信息读取完成!", "提示", MessageBoxButton.OK, MessageBoxImage.Information);
         }
         catch (Exception ex)
         {
             MessageBox.Show(ex.Message, "异常", MessageBoxButton.OK, MessageBoxImage.Error);
         }
     }
 }
예제 #3
0
        public void HandleRecvEepromDataEvent(object sender, CustomRecvDataEventArgs e)
        {
            if (isReadEeprom)
            {
                if (e.RecvMsg[0] == 0xCC && e.RecvMsg.Count >= (e.RecvMsg[2] << 8 | e.RecvMsg[3]))
                {
                    if (e.RecvMsg[1] == 0xB0)
                    {
                        Thread.Sleep(1000);
                        BqProtocol.bReadBqBmsResp = true;
                        BqProtocol.BqInstance.ReadEepromData();
                    }
                    else if (e.RecvMsg[1] == 0xB1)
                    {
                        isReadEeprom = false;
                        int offset = 4;
                        foreach (var it in m_ListEepromRegister)
                        {
                            it.StrValue = e.RecvMsg[offset].ToString("X2");
                            offset++;
                        }

                        if (SelectCANWnd.m_H5Protocol == H5Protocol.BO_QIANG)
                        {
                            BqProtocol.BqInstance.m_bIsStopCommunication = false;
                        }
                        else
                        {
                            DdProtocol.DdInstance.m_bIsStopCommunication = false;
                        }
                        MessageBox.Show("读取Eeprom寄存器参数完成", "提示", MessageBoxButton.OK, MessageBoxImage.Information);
                    }
                }
            }
        }
예제 #4
0
        public void HandleReadBqBootEvent(object sender, CustomRecvDataEventArgs e)
        {
            try
            {
                if (isReadBoot)
                {
                    if (e.RecvMsg[0] != 0xCC || e.RecvMsg[1] != 0xB9 || e.RecvMsg.Count < (e.RecvMsg[2] << 8 | e.RecvMsg[3]))
                    {
                        return;
                    }

                    int    offset      = 4;
                    byte[] array       = e.RecvMsg.ToArray();
                    string projectName = System.Text.Encoding.ASCII.GetString(array, offset, 8);
                    offset += 8;
                    string hardwareVersion = System.Text.Encoding.ASCII.GetString(array, offset, 8);
                    offset += 8;
                    string bootVersion = System.Text.Encoding.ASCII.GetString(array, offset, 8);
                    offset += 8;
                    string appNum = System.Text.Encoding.ASCII.GetString(array, offset, 8);
                    offset += 8;
                    string company = System.Text.Encoding.ASCII.GetString(array, offset, 16);
                    offset += 16;
                    string programStatusStr = string.Empty;
                    byte[] _array           = new byte[2];
                    Buffer.BlockCopy(array, offset, _array, 0, _array.Length);
                    int programStatus = ((_array[1] << 8) | (((_array[0]))));
                    if (programStatus == 1)
                    {
                        programStatusStr = "APP初始化完成";
                    }
                    else if (programStatus == 0)
                    {
                        programStatusStr = "BOOT";
                    }
                    else if (programStatus == 2)
                    {
                        programStatusStr = "APP初始化";
                    }

                    List <string> list = new List <string>();
                    list.Add(projectName.Substring(0, projectName.IndexOf('\0')));
                    list.Add(hardwareVersion.Substring(0, hardwareVersion.IndexOf('\0')));
                    list.Add(bootVersion.Substring(0, bootVersion.IndexOf('\0')));
                    list.Add(appNum.Substring(0, appNum.IndexOf('\0')));
                    list.Add(company.Substring(0, company.IndexOf('\0')));
                    list.Add(programStatusStr);

                    UpdateBqBootInfo(list);
                    MessageBox.Show("读取Boot信息成功!", "读取Boot提示", MessageBoxButton.OK, MessageBoxImage.Information);
                    isReadBoot = false;
                }
                BqProtocol.BqInstance.m_bIsStopCommunication = false;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Boot信息解析异常", "提示", MessageBoxButton.OK, MessageBoxImage.Information);
            }
        }
예제 #5
0
        public void HandleRecvAdjustParamEvent(object sender, CustomRecvDataEventArgs e)
        {
            if (isReadAdjustParam)
            {
                isReadAdjustParam = false;
                if (SelectCANWnd.m_H5Protocol == H5Protocol.BO_QIANG)
                {
                    BqProtocol.BqInstance.m_bIsStopCommunication = false;
                }
                else
                {
                    DdProtocol.DdInstance.m_bIsStopCommunication = false;
                }
                if (e.RecvMsg[0] == 0xCC && e.RecvMsg[1] == 0xAE && e.RecvMsg.Count >= (e.RecvMsg[2] << 8 | e.RecvMsg[3]))
                {
                    List <byte> data   = e.RecvMsg;
                    int         offset = 4;
                    for (int i = 0; i < m_ListAdjustParam.Count; i++)
                    {
                        if (m_ListAdjustParam[i].ByteCount == "2")
                        {
                            byte[] bytes = new byte[2];
                            if (BitConverter.IsLittleEndian)
                            {
                                bytes[0] = data[offset];
                                bytes[1] = data[offset + 1];
                            }
                            else
                            {
                                bytes[0] = data[offset + 1];
                                bytes[1] = data[offset];
                            }

                            if (m_ListAdjustParam[i].Name.Contains("电压"))
                            {
                                UInt16 nVal = BitConverter.ToUInt16(bytes, 0);
                                m_ListAdjustParam[i].StrValue = nVal.ToString();
                            }
                            else
                            {
                                Int16 nVal = BitConverter.ToInt16(bytes, 0);
                                m_ListAdjustParam[i].StrValue = nVal.ToString();
                            }
                            // nVal = (data[offset + 1] << 8 | data[offset]);

                            offset += 2;
                        }
                        else if (m_ListAdjustParam[i].ByteCount == "4")
                        {
                            int nVal = (data[offset + 3] << 24 | data[offset + 2] << 16 | data[offset + 1] << 8 | data[offset]);
                            m_ListAdjustParam[i].StrValue = nVal.ToString();
                            offset += 4;
                        }
                    }

                    MessageBox.Show("校准参数读取成功!", "提示", MessageBoxButton.OK, MessageBoxImage.Information);
                }
            }
        }
예제 #6
0
 public void HandleRecvDeviceInfoDataEvent(object sender, CustomRecvDataEventArgs e)
 {
     if (isReadDevice)
     {
         DdProtocol.bReadDdBmsResp = true;
         DdProtocolUpdateDeviceInfo(e.RecvMsg);
     }
 }
예제 #7
0
 public void HandleRecvMcuDataEvent(object sender, CustomRecvDataEventArgs e)
 {
     if (isReadMCU)
     {
         BqProtocol.BqInstance.m_bIsStopCommunication = false;
         BqUpdateMcuInfo(e.RecvMsg);
         isReadMCU = false;
     }
 }
예제 #8
0
        public virtual void OnRaiseReadDdRecordCountEvent(CustomRecvDataEventArgs e)
        {
            DelegateBoqiangH5 handler = RaiseReadDdRecordCountEvent;

            if (handler != null)
            {
                handler(this, e);
            }
        }
예제 #9
0
        public virtual void OnRaiseRequireReadOthersEvent(CustomRecvDataEventArgs e)
        {
            DelegateBoqiangH5 handler = RaiseRequireReadOthersEvent;

            if (handler != null)
            {
                handler(this, e);
            }
        }
예제 #10
0
        public virtual void OnRaiseSettingBrakeStatus(CustomRecvDataEventArgs e)
        {
            DelegateBoqiangH5 handler = RaiseSettingBrakeStatusEvent;

            if (handler != null)
            {
                handler(this, e);
            }
        }
예제 #11
0
        public virtual void OnRaiseAdjustInnerResistanceEvent(CustomRecvDataEventArgs e)
        {
            DelegateBoqiangH5 handler = RaiseAdjustInnerResistanceEvent;

            if (handler != null)
            {
                handler(this, e);
            }
        }
예제 #12
0
        public virtual void OnRaiseSendUpdateAppInfoEvent(CustomRecvDataEventArgs e)
        {
            DelegateBoqiangH5 handler = RaiseSendUpdateAppInfoEvent;

            if (handler != null)
            {
                handler(this, e);
            }
        }
예제 #13
0
        public virtual void OnRaiseWriteTemperatureProtectParamEvent(CustomRecvDataEventArgs e)
        {
            DelegateBoqiangH5 handler = RaiseWriteTemperatureProtectParamEvent;

            if (handler != null)
            {
                handler(this, e);
            }
        }
예제 #14
0
        public virtual void OnRaiseAdjustBatteryVoltageEvent(CustomRecvDataEventArgs e)
        {
            DelegateBoqiangH5 handler = RaiseAdjustBatteryVoltageEvent;

            if (handler != null)
            {
                handler(this, e);
            }
        }
예제 #15
0
 public void HandleRecvEepromDataEvent(object sender, CustomRecvDataEventArgs e)
 {
     if (isReadEeprom)
     {
         BqUpdateRomInfo(e.RecvMsg);
         BqProtocol.BqInstance.m_bIsStopCommunication = false;
         isReadEeprom = false;
     }
 }
예제 #16
0
        public virtual void OnRaiseReadHumidityProtectParamEvent(CustomRecvDataEventArgs e)
        {
            DelegateBoqiangH5 handler = RaiseReadHumidityProtectParamEvent;

            if (handler != null)
            {
                handler(this, e);
            }
        }
예제 #17
0
        public virtual void OnRaiseReadBqDeviceInfoEvent(CustomRecvDataEventArgs e)
        {
            DelegateBoqiangH5 handler = RaiseReadBqDeviceInfoEvent;

            if (handler != null)
            {
                handler(this, e);
            }
        }
예제 #18
0
        public virtual void OnRaiseWriteMcuEvent(CustomRecvDataEventArgs e)
        {
            DelegateBoqiangH5 handler = RaiseWriteMcuEvent;

            if (handler != null)
            {
                handler(this, e);
            }
        }
예제 #19
0
        public virtual void OnRaiseAdjustZeroCurrenEvent(CustomRecvDataEventArgs e)
        {
            DelegateBoqiangH5 handler = RaiseAdjustZeroCurrenEvent;

            if (handler != null)
            {
                handler(this, e);
            }
        }
예제 #20
0
        // lipeng 2020.04.02写入制造信息
        public virtual void OnRaiseWriteManufacturingInfoEvent(CustomRecvDataEventArgs e)
        {
            DelegateBoqiangH5 handler = RaiseWriteManufacturingInformationEvent;

            if (handler != null)
            {
                handler(this, e);
            }
        }
예제 #21
0
        public virtual void OnRaiseCommunicationMessageEvent(CustomRecvDataEventArgs e)
        {
            DelegateBoqiangH5 handler = RaiseCommunicationMessageEvent;

            if (handler != null)
            {
                handler(this, e);
            }
        }
 public void HandleRecvReadHumidityProtectParamEvent(object sender, CustomRecvDataEventArgs e)
 {
     UpdateProtectParam(e.RecvMsg, m_HumidityParamList);
     StartOrStopTimer(true);
     if (isRead)
     {
         isRead = false;
         MessageBox.Show("保护参数读取完成!", "提示", MessageBoxButton.OK, MessageBoxImage.Information);
     }
 }
예제 #23
0
 public void HandleRecvAdjustInnerResistanceEvent(object sender, CustomRecvDataEventArgs e)
 {
     BqProtocol.BqInstance.m_bIsStopCommunication = false;
     if (e.RecvMsg[0] == 0xDD && e.RecvMsg[1] == 0xAC && e.RecvMsg.Count == (e.RecvMsg[2] << 8 | e.RecvMsg[3]))
     {
         var res = e.RecvMsg[5] << 8 | e.RecvMsg[4];
         if (res == 0)
         {
             MessageBox.Show("校准内包进水阻抗成功!", "校准提示", MessageBoxButton.OK, MessageBoxImage.Information);
         }
         else
         {
             MessageBox.Show("校准内包进水阻抗失败!", "校准提示", MessageBoxButton.OK, MessageBoxImage.Information);
         }
     }
 }
 public void HandleRecvWriteWarningProtectParamEvent(object sender, CustomRecvDataEventArgs e)
 {
     BqProtocol.BqInstance.m_bIsStopCommunication = false;
     if (e.RecvMsg[0] == 0xDD && e.RecvMsg[1] == 0xA3 && e.RecvMsg.Count >= (e.RecvMsg[2] << 8 | e.RecvMsg[3]))
     {
         var res = e.RecvMsg[5] << 8 | e.RecvMsg[4];
         if (res == 0)
         {
             MessageBox.Show("告警配置参数写入成功!", "提示", MessageBoxButton.OK, MessageBoxImage.Information);
         }
         else
         {
             MessageBox.Show("告警配置参数写入失败!", "提示", MessageBoxButton.OK, MessageBoxImage.Information);
         }
     }
 }
예제 #25
0
 public void HandleReadBqRTCEvent(object sender, CustomRecvDataEventArgs e)
 {
     if (SelectCANWnd.m_H5Protocol == H5Protocol.BO_QIANG)
     {
         BqProtocol.bReadBqBmsResp = true;
         if (e.RecvMsg[1] == 0xA3 && e.RecvMsg[0] == 0xCC && (e.RecvMsg.Count >= (e.RecvMsg[2] << 8 | e.RecvMsg[3])))
         {
             int      nRegister = ((e.RecvMsg[7] << 24) | (e.RecvMsg[6] << 16) | (e.RecvMsg[5] << 8) | e.RecvMsg[4]);
             TimeSpan ts        = new TimeSpan((long)(nRegister * Math.Pow(10, 7)));
             tbRtc.Text = (systemStartTime + ts).ToString("yyyy/MM/dd HH:mm:ss");
         }
         else
         {
             string str = "RTC数据读取失败!";
             tbRtc.Text = str;
         }
     }
 }
예제 #26
0
 public void HandleEraseInfoDataEvent(object sender, CustomRecvDataEventArgs e)
 {
     if (isErase)
     {
         BqProtocol.bReadBqBmsResp = true;
         if (e.RecvMsg[0] == 0xD6)
         {
             MessageBox.Show("备份数据擦除成功!", "擦除提示", MessageBoxButton.OK, MessageBoxImage.Information);
             m_ListRecordsInfo.Clear();
             //dataGridRecord.Items.Clear();
         }
         else
         {
             MessageBox.Show("备份数据擦除失败!", "擦除提示", MessageBoxButton.OK, MessageBoxImage.Information);
         }
         isErase = false;
     }
 }
예제 #27
0
 public void HandleRecvBmsInfoDataEvent(object sender, CustomRecvDataEventArgs e)
 {
     if (SelectCANWnd.m_H5Protocol == H5Protocol.BO_QIANG)
     {
         if (string.IsNullOrEmpty(tbRtc.Text.Trim()))
         {
             BqProtocol.BqInstance.BQ_ReadRTC();
         }
         BqUpdateCellVoltage(e.RecvMsg);
     }
     else
     {
         ////if (string.IsNullOrEmpty(tbRtc.Text.Trim()))
         ////{
         ////    DDProtocol.DdProtocol.DdInstance.Didi_ReadRTC();
         ////}
         DdUpdateCellVoltage(e.RecvMsg);
     }
 }
예제 #28
0
 public void HandleAdjustZeroCurrenEvent(object sender, CustomRecvDataEventArgs e)
 {
     if (isAdjustZeroCurrent)
     {
         BqProtocol.bReadBqBmsResp = true;
         if (e.RecvMsg[0] == 0xDD && e.RecvMsg[1] == 0xA8 && e.RecvMsg.Count == (e.RecvMsg[2] << 8 | e.RecvMsg[3]))
         {
             var res = e.RecvMsg[5] << 8 | e.RecvMsg[4];
             if (res == 0)
             {
                 MessageBox.Show("校准零点电流成功!", "校准提示", MessageBoxButton.OK, MessageBoxImage.Information);
             }
             else
             {
                 MessageBox.Show("校准零点电流失败!", "校准提示", MessageBoxButton.OK, MessageBoxImage.Information);
             }
         }
         isAdjustZeroCurrent = false;
     }
 }
예제 #29
0
 public void HandleWriteEepromDataEvent(object sender, CustomRecvDataEventArgs e)
 {
     if (isWriteEeprom)
     {
         BqProtocol.bReadBqBmsResp = true;
         if (e.RecvMsg[0] == 0xDD || e.RecvMsg[1] == 0xA6 || e.RecvMsg.Count == (e.RecvMsg[2] << 8 | e.RecvMsg[3]))
         {
             var res = e.RecvMsg[5] << 8 | e.RecvMsg[4];
             if (res == 0)
             {
                 MessageBox.Show("写入 EEPROM 参数成功!", "写入 EEPROM 提示", MessageBoxButton.OK, MessageBoxImage.Information);
             }
             else
             {
                 MessageBox.Show("写入 EEPROM 参数失败!", "写入 EEPROM 提示", MessageBoxButton.OK, MessageBoxImage.Information);
             }
         }
         isWriteEeprom = false;
         BqProtocol.BqInstance.m_bIsStopCommunication = false;
     }
 }
예제 #30
0
 public void HandleAdjustRTCEvent(object sender, CustomRecvDataEventArgs e)
 {
     if (isAdjustRTC)
     {
         BqProtocol.bReadBqBmsResp = true;
         if (e.RecvMsg[0] == 0xDD && e.RecvMsg[1] == 0xA7 && e.RecvMsg.Count == (e.RecvMsg[2] << 8 | e.RecvMsg[3]))
         {
             var res = e.RecvMsg[5] << 8 | e.RecvMsg[4];
             if (res == 0)
             {
                 MessageBox.Show("校准RTC成功!", "校准提示", MessageBoxButton.OK, MessageBoxImage.Information);
                 BqProtocol.BqInstance.BQ_ReadRTC();
             }
             else
             {
                 MessageBox.Show("校准RTC失败!", "校准提示", MessageBoxButton.OK, MessageBoxImage.Information);
             }
         }
         isAdjustRTC = false;
     }
 }