Пример #1
0
        /// <summary>
        /// 读取快充模式
        /// </summary>
        /// <param name="addr"></param>
        /// <param name="qcm">0x8007</param>
        /// <param name="qcv">0x8008</param>
        /// <param name="qci">0x8009</param>
        /// <param name="er"></param>
        /// <returns></returns>
        public bool ReadQCM(int addr, out EQCM qcm, out double qcv, out double qci, out string er)
        {
            qcm = EQCM.Normal;

            qcv = 0;

            qci = 0;

            er = string.Empty;

            try
            {
                int[] rVal = new int[3];

                if (!Read(addr, ERegType.D, 0x8007, ref rVal, out er))
                {
                    return(false);
                }

                qcm = (EQCM)(rVal[0] % 0x100);

                qcv = ((double)rVal[1]) / 1000;

                qci = ((double)rVal[2]) / 1000;

                return(true);
            }
            catch (Exception ex)
            {
                er = ex.ToString();
                return(false);
            }
        }
Пример #2
0
        /// <summary>
        /// 快充模式配置D8007--D8009
        /// </summary>
        /// <param name="addr"></param>
        /// <param name="qcm">8007</param>
        /// <param name="qcv">8008</param>
        /// <param name="qci">8009</param>
        /// <param name="er"></param>
        /// <returns></returns>
        public bool SetQCM(int addr, EQCM qcm, double qcv, double qci, out string er, bool cc2 = false)
        {
            try
            {
                int qcmVal = (int)qcm;

                if (cc2)
                {
                    qcmVal += 0x600;
                }

                if (qcm == EQCM.MTK1_0 || qcm == EQCM.MTK2_0)
                {
                    qcmVal = 0;
                }

                int qcvVal = (int)(qcv * 1000);

                int qciVal = (int)(qci * 1000);

                int[] wVal = new int[] { qcmVal, qcvVal, qciVal };

                return(Write(addr, ERegType.D, 0x8007, wVal, out er));
            }
            catch (Exception ex)
            {
                er = ex.ToString();
                return(false);
            }
        }
Пример #3
0
        /// <summary>
        /// 读取快充模式
        /// </summary>
        /// <param name="addr"></param>
        /// <param name="er"></param>
        /// <returns></returns>
        private bool readQCM(int addr, out string er)
        {
            er = string.Empty;

            try
            {
                _syncLock.AcquireWriterLock(-1);

                EQCM qcm = EQCM.Normal;

                double qcv = 0;

                double qci = 0;

                Thread.Sleep(_delayMs);

                if (!_devFMB.ReadQCM(addr, out qcm, out qcv, out qci, out er))
                {
                    Thread.Sleep(_delayMs);

                    if (!_devFMB.ReadQCM(addr, out qcm, out qcv, out qci, out er))
                    {
                        er = _Mon[addr].ToString() + CLanguage.Lan("读快充模式") + ";";
                        return(false);
                    }
                }

                _Mon[addr].Para.QCM.qcm = qcm;

                _Mon[addr].Para.QCM.qcv = qcv;

                _Mon[addr].Para.QCM.qci = qci;

                _Mon[addr].Para.QCM.op = EOP.读取OK;

                return(true);
            }
            catch (Exception ex)
            {
                er = ex.ToString();
                return(false);
            }
            finally
            {
                _syncLock.ReleaseWriterLock();
            }
        }
Пример #4
0
        private void btnReadQCM_Click(object sender, EventArgs e)
        {
            try
            {
                btnReadQCM.Enabled = false;

                if (!checkSystem())
                {
                    return;
                }

                int addr = System.Convert.ToInt16(txtAddr.Text);

                string er = string.Empty;

                EQCM qcm = EQCM.Normal;

                double qcv = 0;

                double qci = 0;

                if (!comMon.ReadQCM(addr, out qcm, out qcv, out qci, out er))
                {
                    showInfo(CLanguage.Lan("读取快充模式地址") + "[" + addr.ToString("D2") + "]" + CLanguage.Lan("错误") + ":" + er, true);
                    return;
                }
                cmbQCM.Text = qcm.ToString();

                txtQCV.Text = qcv.ToString();

                txtQCI.Text = qci.ToString();

                showInfo(CLanguage.Lan("读取快充模式地址") + "[" + addr.ToString("D2") + "]OK");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                btnReadQCM.Enabled = true;
            }
        }
Пример #5
0
        private void btnWriteQCM_Click(object sender, EventArgs e)
        {
            try
            {
                btnWriteQCM.Enabled = false;

                if (!checkSystem())
                {
                    return;
                }

                int addr = System.Convert.ToInt16(txtAddr.Text);

                string er = string.Empty;

                EQCM qcm = (EQCM)Enum.Parse(typeof(EQCM), cmbQCM.Text);

                double qcv = System.Convert.ToDouble(txtQCV.Text);

                double qci = System.Convert.ToDouble(txtQCI.Text);

                if (!comMon.SetQCM(addr, qcm, qcv, qci, out er))
                {
                    showInfo(CLanguage.Lan("设置快充模式地址") + "[" + addr.ToString("D2") + "]" + CLanguage.Lan("错误") + ":" + er, true);
                    return;
                }

                showInfo(CLanguage.Lan("设置快充模式地址") + "[" + addr.ToString("D2") + "]OK");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                btnWriteQCM.Enabled = true;
            }
        }
Пример #6
0
 /// <summary>
 /// 快充模式配置D8007
 /// </summary>
 /// <param name="addr"></param>
 /// <param name="qcm"></param>
 /// <param name="er"></param>
 /// <returns></returns>
 public bool ReadQCM(int addr, out EQCM qcm, out double qcv, out double qci, out string er)
 {
     return(_devFCMB.ReadQCM(addr, out qcm, out qcv, out qci, out er));
 }
Пример #7
0
 /// <summary>
 /// 快充模式配置D8007
 /// </summary>
 /// <param name="addr"></param>
 /// <param name="qcm"></param>
 /// <param name="er"></param>
 /// <returns></returns>
 public bool SetQCM(int addr, EQCM qcm, double qcv, double qci, out string er, bool cc2 = false)
 {
     return(_devFCMB.SetQCM(addr, qcm, qcv, qci, out er, cc2));
 }