Exemplo n.º 1
0
        public async Task OnDeviceStatus(DeviceStatus deviceStatus)
        {
            try
            {
                var dr = GetDeviceRuntime(deviceStatus.Key);
                if (dr != null)
                {
                    try
                    {
                        dr.Status = deviceStatus;
                        var dto = deviceStatus.ToDTO(dr);
                        await this.playHub.Clients.All.SendDeviceStatus(dto);

                        log.Debug($"{dr.DisplayName}, {deviceStatus.ToString()}");
                    }
                    catch (Exception xe)
                    {
                        log.Error(xe);
                    }
                }
                else
                {
                    log.Debug($"Update received from device {deviceStatus.Key}, state {deviceStatus.State} - not found in device run time");
                }
            }
            catch (Exception xe)
            {
                log.Error(xe);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Gets the device information.
        /// </summary>
        public virtual string GetInfo()
        {
            StringBuilder sb = new StringBuilder((int)(lastInfoLength * 1.1));

            sb.AppendLine(Title);
            sb.Append('-', Title.Length).AppendLine();

            string TimeToStringRu(DateTime dateTime)
            {
                return(dateTime > DateTime.MinValue ? dateTime.ToLocalTime().ToLocalizedString() : "неопределено");
            };

            string TimeToStringEn(DateTime dateTime)
            {
                return(dateTime > DateTime.MinValue ? dateTime.ToLocalTime().ToLocalizedString() : "Undefined");
            };

            void AppendStats(string caption, int total, int errors)
            {
                sb.Append(caption).Append(total).Append(" / ").Append(errors).AppendLine();
            }

            if (Locale.IsRussian)
            {
                sb.Append("Драйвер       : ").AppendLine(DriverName);
                sb.Append("Состояние     : ").AppendLine(DeviceStatus.ToString());
                sb.Append("Время сеанса  : ").AppendLine(TimeToStringRu(LastSessionTime));
                sb.Append("Время команды : ").AppendLine(TimeToStringRu(LastCommandTime));
                sb.AppendLine();
                AppendStats("Сеансы  (всего / ошибок) : ", DeviceStats.SessionCount, DeviceStats.SessionErrors);
                AppendStats("Команды (всего / ошибок) : ", DeviceStats.CommandCount, DeviceStats.CommandErrors);
                AppendStats("Запросы (всего / ошибок) : ", DeviceStats.RequestCount, DeviceStats.RequestErrors);
            }
            else
            {
                sb.Append("Driver       : ").AppendLine(DriverName);
                sb.Append("Status       : ").AppendLine(DeviceStatus.ToString());
                sb.Append("Session time : ").AppendLine(TimeToStringEn(LastSessionTime));
                sb.Append("Command time : ").AppendLine(TimeToStringEn(LastCommandTime));
                sb.AppendLine();
                AppendStats("Sessions (total / errors) : ", DeviceStats.SessionCount, DeviceStats.SessionErrors);
                AppendStats("Commands (total / errors) : ", DeviceStats.CommandCount, DeviceStats.CommandErrors);
                AppendStats("Requests (total / errors) : ", DeviceStats.RequestCount, DeviceStats.RequestErrors);
            }

            sb.AppendLine();
            DeviceData.AppendInfo(sb);
            lastInfoLength = sb.Length;
            return(sb.ToString());
        }
Exemplo n.º 3
0
        /// <summary>
        /// Connection status acquisition
        /// </summary>
        /// <returns>Connection status for display</returns>
        public string GetStatusString()
        {
            string status = _status.ToString();

            switch (_status)
            {
            case DeviceStatus.Ethernet:
            case DeviceStatus.EthernetFast:
                status += string.Format("---{0}.{1}.{2}.{3}", _ethernetConfig.abyIpAddress[0], _ethernetConfig.abyIpAddress[1],
                                        _ethernetConfig.abyIpAddress[2], _ethernetConfig.abyIpAddress[3]);
                break;

            default:
                break;
            }
            return(status);
        }
Exemplo n.º 4
0
 private void updateLog()
 {
     if (lastStatus != this.Status)
     {
         lastStatus = this.Status;
         File.AppendAllText("latest.log", "[" + DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss") + "-DEVICE-" + Name + "] Status changed to " + Status.ToString() + (Status == DeviceStatus.ARPError ? " (Error: " + LastARPResponse + ")" : Status == DeviceStatus.Offline ? " (Error: " + LastPingResponse.ToString() + ")" : "") + Environment.NewLine);
     }
 }
Exemplo n.º 5
0
        private IMessage GetSalida(VirlocDeviceCommand dc, GPSPoint.SourceProviders provider)
        {
            var msgid = dc.MessageId ?? 0;

            DeviceStatus devStatus = dc.ParsePosition();

            Console.WriteLine(devStatus.ToString());

            /*
             * // cachear devstatus en de gpspoint
             *          var oldpos = NewestPositionReceived;
             *          if (oldpos == null ||
             *              (oldpos.Date < pos4.Date))
             *              NewestPositionReceived = pos4;
             *
             *          // If the Message Origin is no the LOG, then doesnt process it, just store on CACHE.
             *          if (dc.MessageOrigin != GTEDeviceCommand.Attributes.MessageOrigin_LOG)
             *              break;
             */

            var gpoint = devStatus.Position;

            if (gpoint == null)
            {
                return(null);
            }

            gpoint.SourceProvider = provider;
            MessageIdentifier codigo;

            switch (devStatus.FiredEventNumber)             // codigo del Evento generador del reporte
            {
            case Evento.PanicoConductor:    codigo = MessageIdentifier.DigitalInput01Closed;    break;

            case Evento.PanicoJefe:         codigo = MessageIdentifier.DigitalInput00Closed;    break;

            case Evento.IgnitionOn:         codigo = MessageIdentifier.EngineOnInternal;        break;

            case Evento.IgnitionOff:        codigo = MessageIdentifier.EngineOffInternal;           break;

            case Evento.PowerOn:            codigo = MessageIdentifier.PowerReconnected;        break;

            case Evento.SleepModeOn:        codigo = MessageIdentifier.SleepModeOn;             break;

            case Evento.GPSAntennaInShort:  codigo = MessageIdentifier.GPSAntennaShort;         break;

            case Evento.GPSAntennaDisconnected: codigo = MessageIdentifier.GPSAntennaDisconnected;  break;

            case Evento.CustomerArrivedTo:  codigo = MessageIdentifier.CustomEvent0001;         break;

            case Evento.CustomerLeaved:     codigo = MessageIdentifier.CustomEvent0002;         break;

            case Evento.Parked15Min:        codigo = MessageIdentifier.CustomEvent0003;         break;

            case Evento.NonPlannedParked2Min:   codigo = MessageIdentifier.CustomEvent0004;       break;

            case Evento.StopNotCompleted:   codigo = MessageIdentifier.CustomEvent0005;         break;

            case Evento.CustomerCodeCorrect:    codigo = MessageIdentifier.CustomEvent0006; break;

            case Evento.DoorOpenedOutsideOfStop:    codigo = MessageIdentifier.CustomEvent0007; break;

            case Evento.OperativeCodeEntered:   codigo = MessageIdentifier.CustomEvent0008; break;

            case Evento.MovementDetectedWithoutStopEnd: codigo = MessageIdentifier.CustomEvent0009; break;

            case Evento.EventualCodeEntered:    codigo = MessageIdentifier.CustomEvent0010; break;

            case Evento.StopNotice:         codigo = MessageIdentifier.CustomEvent0011; break;

            case Evento.TreasureDoorOpenWithDoorOpenIgnitionOffNotFixed:    codigo = MessageIdentifier.CustomEvent0012; break;

            case Evento.TreasureDoorOpenInPanicMode:    codigo = MessageIdentifier.CustomEvent0013; break;

            case Evento.TreasureDoorOpenOutOfCustomer:  codigo = MessageIdentifier.CustomEvent0014; break;

            case Evento.TreasureDoorOpenOutOfSequence:  codigo = MessageIdentifier.CustomEvent0015; break;

            case Evento.TreasureDoorOpenWithCorrectCode: codigo = MessageIdentifier.CustomEvent0016; break;

            case Evento.TreasureDoorOpenOutsideStop:    codigo = MessageIdentifier.CustomEvent0017; break;

            case Evento.TreasureDoorReadyButNotOpened:  codigo = MessageIdentifier.CustomEvent0018; break;

            case Evento.ForceCodeEnteredForTreasureDoorOpening: codigo = MessageIdentifier.CustomEvent0019; break;

            case Evento.TreasureDoorOpen:   codigo = MessageIdentifier.CustomEvent0020;         break;

            case Evento.AlarmDeactivatedFromVehicle:    codigo = MessageIdentifier.CustomEvent0021; break;

            case Evento.AITOffByKey:        codigo = MessageIdentifier.CustomEvent0022;         break;

            case Evento.AITOffByCode:       codigo = MessageIdentifier.CustomEvent0023;         break;

            case Evento.GabineteApertura:   codigo = MessageIdentifier.DigitalInput03Open;      break;

            case Evento.GabineteCierre:     codigo = MessageIdentifier.DigitalInput03Closed;    break;

            default:
                return(gpoint.ToPosition(Id, msgid));
            }
            return(codigo.FactoryEvent(Id, msgid, gpoint, gpoint.GetDate(), null, null));
        }
Exemplo n.º 6
0
        public string GetStatusString()
        {
            string       status        = _status == DeviceStatus.NoConnection ? "No connection" : _status.ToString();
            const string SegmentBranch = ".";

            switch (_status)
            {
            case DeviceStatus.Ethernet:
                status += string.Format("---{0}", EthernetSetting.ipAddress[0]
                                        + SegmentBranch + EthernetSetting.ipAddress[1]
                                        + SegmentBranch + EthernetSetting.ipAddress[2]
                                        + SegmentBranch + EthernetSetting.ipAddress[3]);
                break;

            default:
                break;
            }
            return(status);
        }