예제 #1
0
 /// <summary>
 /// Converts data to string of Comma Separated Variables.
 /// </summary>
 /// <returns>
 /// CSV text line.
 /// </returns>
 public string ConvertToCSVstring()
 {
     return(BatteryVoltage.ToString(CultureInfo.InvariantCulture) + "," + Thermometer.ToString(CultureInfo.InvariantCulture));
 }
예제 #2
0
 /// <summary>
 /// Converts data to string of Comma Separated Variables.
 /// </summary>
 /// <returns>
 /// CSV text line.
 /// </returns>
 public string ConvertToCSVstring()
 {
     return(BatteryVoltage.ToString() + "," + Thermometer.ToString());
 }
예제 #3
0
        public void DataReceiveHandler(object sender, SerialDataReceivedEventArgs e)
        {
            /*
             * Q1 Command
             * (000.8 160.0 230.1 009 50.0 2.22 32.1 10000001 (batt mode)
             * (214.3 110.0 214.1 009 50.0 2.12 32.0 00100001 (power mode with eco bypass)
             * (212.6 110.0 229.7 008 49.9 2.22 32.4 00000001 (power mode normal)
             *
             * F Command
             #230.0 008 048.0 50.0
             *
             * I Command
             #Ablerex         RS-RT 2000 AS041811
             */
            SerialPort sp     = (SerialPort)sender;
            string     indata = sp.ReadLine();

            Console.WriteLine(indata); //for debug

            double BatVal;
            bool   upsType = false;

            if (indata.Substring(0, 1) == "#")
            {
                indata = indata.Substring(1);

                if (indata.Contains("Ablerex") || indata.Contains("ABLEREX")) //I Command
                {
                    string[] ModelInfo = indata.Split(' ');
                    Brand           = ModelInfo[0];
                    Model           = ModelInfo[9] + " " + ModelInfo[10];
                    FirmwareVersion = ModelInfo[11];
                }
                else //F Command
                {
                    string[] ratedInfo = indata.Split(' ');

                    RatedVoltage   = (float)Convert.ToDouble(ratedInfo[0]);
                    RatedCurrent   = Convert.ToInt32(ratedInfo[1]);
                    BatteryVoltage = (float)Convert.ToDouble(ratedInfo[2]);
                    RatedFrequency = (float)Convert.ToDouble(ratedInfo[3]);
                }
            }
            else if (indata.Substring(0, 1) == "(") //Q1 Command
            {
                indata  = indata.Substring(1);
                RawData = indata;
                string[] upsState = indata.Split(' ');

                InputVoltage  = (float)Convert.ToDouble(upsState[0]);
                OutputVoltage = (float)Convert.ToDouble(upsState[2]);
                UPSLoad       = Convert.ToInt32(upsState[3]);
                UPSLoadAmp    = (Convert.ToDouble(UPSLoad) / Convert.ToDouble(100.0)) * RatedCurrent;
                UPSLoadWatt   = (float)Convert.ToDouble(OutputVoltage * UPSLoadAmp);

                InputFrequency = (float)Convert.ToDouble(upsState[4]);
                Temperature    = (float)Convert.ToDouble(upsState[6]);

                //UPS Battery Capacity
                StatusFlag = upsState[7];
                BatVal     = Convert.ToDouble(upsState[5]);

                if (Convert.ToInt16(RawData.Substring(42, 1)) == 0)
                {
                    upsType = false;
                }
                else if (Convert.ToInt16(RawData.Substring(42, 1)) == 1)
                {
                    upsType = true;
                }

                //BatteryVoltage
                BatteryPercent = CalCapacity(upsType, BatVal.ToString(), BatteryVoltage.ToString());
            }
            else if (indata.Substring(0, 5) == "M02.0" || indata.Substring(0, 5) == "M00.0") //Q3 Command
            {
                indata = indata.Substring(5);

                DisplaySystem   = Convert.ToInt32(indata.Substring(0, 1)); //Display System
                VoltageOutput   = Convert.ToInt32(indata.Substring(1, 1)); //Vout
                UPSMode         = Convert.ToInt32(indata.Substring(4, 1)); //UPS Mode
                FineTuning      = Convert.ToInt32(indata.Substring(7, 1)); //Fine Tuning
                BypassWindow    = Convert.ToInt32(indata.Substring(8, 1)); //Bypass Window
                Synchronization = Convert.ToInt32(indata.Substring(9, 1)); //Synchronization

                Q3DataAvaiable = true;
            }
        }