Example #1
0
        private bool InFieldSet(bool sendToDevice, bool addEvent, int objectId, int trakObjId)
        {
            bool isSended  = true;
            bool isChanged = true;

            if (sendToDevice)
            {
                ushort status = 0;
                for (int i = 0; i < 3; i++)
                {
                    isSended = _rModuleWrapper.ObjectSendWorkMode(out status, trakObjId);
                    if (isSended)
                    {
                        break;
                    }
                }
                bool isLamp = PakStatusWord.Instance(status).LampMode;
                if (isSended && isLamp)
                {
                    isSended = _rModuleWrapper.ObjectGetStatus(out status, trakObjId);
                    isLamp   = (PakStatusWord.Instance(status).LampMode);
                }
                isChanged = isSended && !isLamp;
            }

            if (isChanged)
            {
                _dbWrapper.WriteObjectInFieldState(addEvent, objectId, false);
            }
            return(isChanged);
        }
Example #2
0
        void ReaderIn_OnSerialStringReaded(object sender, SerialReaderEventArgs e)
        {
            // 1. Проверка в БД на наличие
            var objectState = GetObjectRecValue(e.ReadedString);

            if (objectState.ObjectId == 0)
            {
                return;
            }

            // 2. Контроль логики "вход-выход" или только "вход"
            if (!objectState.InField && _twoReaders)
            {
                return;
            }

            // 3. Посылка команды в эфир
            bool   isChanged = true;
            UInt16 status;

            if (objectState.InField)
            {
                isChanged = _rmWrapper.ObjectSendPassiveMode(out status, objectState.ActiveObjectId);
            }
            else
            {
                isChanged = _rmWrapper.ObjectSendWorkMode(out status, objectState.ActiveObjectId);
                isChanged = isChanged && !PakStatusWord.Instance(status).LampMode;
            }

            // 4. Запись в БД
            /*if (isChanged)*/
            var isWrited = _dbWrapper.WriteObjectInFieldState(true, objectState.ObjectId, objectState.InField);


            // 3. Позиционирование и обновление данных на экране в списке
            if (isWrited)
            {
                _dbWrapper.RefreshDataSetAllTables();
                if (objectState.InField)
                {
                    InvokeOnObjectToLamp(new ObjectChangeStateEventArgs(objectState.ObjectId));
                }
                else
                {
                    InvokeOnObjectToWork(new ObjectChangeStateEventArgs(objectState.ObjectId));
                }
                //TrackerViewRowChanged();
            }
        }
Example #3
0
        private void InFieldChangeState()
        {
            if (TrackerView.SelectedRows.Count > 1)
            {
                if (MessageBox.Show("Выделено несколько строк! Изменения коснутся только одиного"
                                    + Environment.NewLine + "Продолжаем?", "Обратите внимание", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
                {
                    return;
                }
            }
            var row = StaticMethods.GetCurrentDataRow(TrackerView);

            if (row == null)
            {
                return;
            }

            int objectId = Convert.ToInt32(row["ObjectId"]);

            int activeObjectId = objectId;

            if (!Convert.IsDBNull(row["_ActiveObjectId"]))
            {
                activeObjectId = Convert.ToInt32(row["_ActiveObjectId"]);
            }
            bool inField = Convert.ToBoolean(row["InField"]);

            bool connectPresent = !_isNoModem;

            bool addEvent = true;

            if (connectPresent)
            {
                UInt16 status;
                //Cursor = Cursors.WaitCursor;
                bool sended = _rModuleWrapper.ObjectGetStatus(out status, activeObjectId);

                //Cursor = Cursors.Default;
                var statusWord = new PakStatusWord(status);

                if (!inField && (!sended || statusWord.Error || statusWord.Charge < 9))
                {
                    var sb = new StringBuilder("Изменение режима НЕ ДОПУСТИМО по следующим причинам:");
                    sb.AppendLine();
                    if (!sended)
                    {
                        sb.AppendLine(" - нет связи с трекером");
                    }
                    else
                    {
                        if (statusWord.Error)
                        {
                            sb.AppendLine(" - ошибка оборудования");
                        }
                        if (statusWord.Charge < 9)
                        {
                            sb.AppendLine(" - низкий заряд батареи");
                        }
                    }
                    MessageBox.Show(sb.ToString(), "Изменение режима", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
                addEvent = false;
                if (!sended)
                {
                    if (!FormHelper.OperatorRiskAgree())
                    {
                        return;
                    }
                    connectPresent = false;
                    addEvent       = true;
                }
            }

            //Cursor = Cursors.WaitCursor;


            var  stateEventArg = new ObjectChangeStateEventArgs(objectId);
            bool isChanged;

            if (inField)
            {
                isChanged = InFieldUnSet(connectPresent, addEvent, objectId, activeObjectId);
                _logic.InvokeOnObjectToLamp(stateEventArg);
            }
            else
            {
                isChanged = InFieldSet(connectPresent, addEvent, objectId, activeObjectId);
                _logic.InvokeOnObjectToWork(stateEventArg);
            }

            //Cursor = Cursors.Default;

            if (isChanged)
            {
                _dbWrapper.RefreshDataSetAllTables();
                TrackerViewRowChanged();
            }
        }