Пример #1
0
 public static void StartSample(byte address, int gasId, EnumChromaLevel level, Action <EnumChromaLevel, GasEntity> callback, Action <string> commandCallback)
 {
     sampleTimer          = new System.Timers.Timer();
     sampleTimer.Enabled  = true;
     sampleTimer.Interval = 1000 + CommandUnits.CommandDelay;
     sampleTimer.Elapsed += new System.Timers.ElapsedEventHandler((s, e) => sampleTimer_Elapsed(s, e, new List <object>()
     {
         address, gasId, level, callback, commandCallback
     }));
     sampleTimer.Start();
 }
Пример #2
0
        private static void Sampling(object param)
        {
            while (true)
            {
                Thread.Sleep(1000);
                try
                {
                    List <object>   list    = param as List <object>;
                    byte            address = (byte)list[0];
                    int             gasId   = (int)list[1];
                    EnumChromaLevel level   = (EnumChromaLevel)list[2];
                    Action <EnumChromaLevel, GasEntity> callback = list[3] as Action <EnumChromaLevel, GasEntity>;
                    Action <string> commandCallback = list[4] as Action <string>;
                    GasEntity       gas             = ReadCurrent(gasId, address, null, commandCallback);
                    switch (level)
                    {
                    case EnumChromaLevel.Zero:
                        gas.ZeroAD = gas.CurrentAD;
                        break;

                    case EnumChromaLevel.One:
                        gas.OneAD = gas.CurrentAD;
                        break;

                    case EnumChromaLevel.Two:
                        gas.TwoAD = gas.CurrentAD;
                        break;

                    case EnumChromaLevel.Three:
                        gas.ThreeAD = gas.CurrentAD;
                        break;

                    default:
                        break;
                    }
                    callback(level, gas);
                }
                catch (CommandException exp)
                {
                    throw exp;
                }
                catch (Exception ex)
                {
                    log.Error(ex);
                }
            }
        }
Пример #3
0
        public static void WriteChromaAndAD(GasEntity gas, EnumChromaLevel level, byte address, Action <string> callback)
        {
            byte        low     = 0x2a;
            List <byte> content = new List <byte>();

            switch (level)
            {
            case EnumChromaLevel.Zero:
                low = 0x2a;
                content.AddRange(BitConverter.GetBytes(gas.ZeroAD));
                content.AddRange(BitConverter.GetBytes(gas.ZeroChroma));
                break;

            case EnumChromaLevel.One:
                low = 0x2e;
                content.AddRange(BitConverter.GetBytes(gas.OneAD));
                content.AddRange(BitConverter.GetBytes(gas.OneChroma));
                break;

            case EnumChromaLevel.Two:
                low = 0x32;
                content.AddRange(BitConverter.GetBytes(gas.TwoAD));
                content.AddRange(BitConverter.GetBytes(gas.TwoChroma));
                break;

            case EnumChromaLevel.Three:
                low = 0x36;
                content.AddRange(BitConverter.GetBytes(gas.ThreeAD));
                content.AddRange(BitConverter.GetBytes(gas.ThreeChroma));
                break;

            default:
                break;
            }
            content.Reverse(0, 2);
            content.Reverse(2, 2);
            content.Reverse(4, 2);
            content.Reverse(6, 2);
            byte[] sendb = Command.GetWiteSendByte(address, (byte)gas.GasID, low, content.ToArray());
            callback(string.Format("W: {0}", CommandUnits.ByteToHexStr(sendb)));

            PLAASerialPort.Write(sendb);
        }
Пример #4
0
        private void Sampling(EnumChromaLevel level, GasEntity ge)
        {
            try
            {
                Gas.CurrentAD     = ge.CurrentAD;
                Gas.CurrentChroma = ge.CurrentChroma;
                EnumChromaLevel cl = level;
                switch (cl)
                {
                case EnumChromaLevel.Zero:
                    Gas.ZeroAD = ge.CurrentAD;
                    break;

                case EnumChromaLevel.One:
                    Gas.OneAD = ge.CurrentAD;
                    break;

                case EnumChromaLevel.Two:
                    Gas.TwoAD = ge.CurrentAD;
                    break;

                case EnumChromaLevel.Three:
                    Gas.ThreeAD = ge.CurrentAD;
                    break;

                default:
                    break;
                }

                this.Invoke(new Action(() => { SetGasToControl(); }));
            }
            //catch (CommandException ex)
            //{
            //    XtraMessageBox.Show(ex.Message);
            //}
            catch (Exception ecp)
            {
                log.Error(ecp);
            }
        }
Пример #5
0
 static void sampleTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e, object param)
 {
     try
     {
         List <object>   list    = param as List <object>;
         byte            address = (byte)list[0];
         int             gasId   = (int)list[1];
         EnumChromaLevel level   = (EnumChromaLevel)list[2];
         Action <EnumChromaLevel, GasEntity> callback = list[3] as Action <EnumChromaLevel, GasEntity>;
         Action <string> commandCallback = list[4] as Action <string>;
         GasEntity       gas             = ReadCurrent(gasId, address, null, commandCallback);
         callback(level, gas);
     }
     //catch (CommandException exp)
     //{
     //    throw exp;
     //}
     catch (Exception ex)
     {
         log.Error(ex);
     }
 }
Пример #6
0
        public static GasEntity ReadChromaAndAD(int gasId, EnumChromaLevel level, byte address, Action <string> callback)
        {
            byte low = 0x2a;

            switch (level)
            {
            case EnumChromaLevel.Zero:
                low = 0x2a;
                break;

            case EnumChromaLevel.One:
                low = 0x2e;
                break;

            case EnumChromaLevel.Two:
                low = 0x32;
                break;

            case EnumChromaLevel.Three:
                low = 0x36;
                break;

            default:
                break;
            }
            byte[] sendb = Command.GetReadSendByte(address, (byte)gasId, low, 4);
            callback(string.Format("W: {0}", CommandUnits.ByteToHexStr(sendb)));
            byte[] rbytes = PLAASerialPort.Read(sendb);
            callback(string.Format("R: {0}", CommandUnits.ByteToHexStr(rbytes)));

            Array.Reverse(rbytes, 3, 2);
            Array.Reverse(rbytes, 5, 2);
            Array.Reverse(rbytes, 7, 2);
            Array.Reverse(rbytes, 9, 2);

            GasEntity gas = new GasEntity();

            switch (level)
            {
            case EnumChromaLevel.Zero:
                gas.ZeroAD     = BitConverter.ToInt32(rbytes, 3);
                gas.ZeroChroma = BitConverter.ToSingle(rbytes, 7);
                break;

            case EnumChromaLevel.One:
                gas.OneAD     = BitConverter.ToInt32(rbytes, 3);
                gas.OneChroma = BitConverter.ToSingle(rbytes, 7);
                break;

            case EnumChromaLevel.Two:
                gas.TwoAD     = BitConverter.ToInt32(rbytes, 3);
                gas.TwoChroma = BitConverter.ToSingle(rbytes, 7);
                break;

            case EnumChromaLevel.Three:
                gas.ThreeAD     = BitConverter.ToInt32(rbytes, 3);
                gas.ThreeChroma = BitConverter.ToSingle(rbytes, 7);
                break;

            default:
                break;
            }
            return(gas);
        }