public void UpdateStatus(AquaPicBusStatus stat, int time) { if (time != 0) { long sum = 0; int sumCount = 0; timeQue[queIdx] = time; for (int i = 0; i < timeQue.Length; ++i) { if (timeQue[i] != 0) { sum += timeQue[i]; ++sumCount; } } _responeTime = (int)(sum / sumCount); queIdx = ++queIdx % timeQue.Length; } _status = stat; if (OnStatusUpdate != null) { Application.Invoke((sender, e) => OnStatusUpdate(this)); } }
public Slave(int address, string name) { if (!SlaveAddressOk((byte)address)) { throw new Exception("Address already in use"); } _address = (byte)address; _responeTime = 0; timeQue = new int[10]; queIdx = 0; _status = AquaPicBusStatus.NotOpen; _name = name; slaves.Add(this); _alarmIdx = Alarm.Subscribe(address.ToString() + " communication fault"); }