Esempio n. 1
0
            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));
                }
            }
Esempio n. 2
0
            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");
            }