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