Example #1
0
        public RUSEMCModuleDevice(WordSerializator serializator) : base(serializator)
        {
            _serial   = 100;
            _status16 = 0;

            _calibrationFile      = deserialize(Properties.Resources.V01_RUS40_Cal, FileType.CALIBRATION);
            _factorySettingsFile  = deserialize(Properties.Resources.V01_RUS40_FSet, FileType.FACTORY_SETTINGS);
            _dataPacketFormatFile = generateDataPacketFormatFile();

            byte[] generateDataPacketFormatFile()
            {
                var body = new Enumerable <byte>()
                {
                    "EMC_Mdl_0101DDMMYYF_".GetASCIIBytes(),
                    serializator.Serialize(_serial),
                    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // Reserved
                };
                var i = new SmartInt().Add(1);

                addEntity("STAT", i, i.Add(2).DValue, 0);
                addEntity("STAT", i, i.Add(2).DValue, 0);
                addEntity("TST1", i, i.Add(2).DValue, 0);
                addEntity("TST2", i, i.Add(2).DValue, 0);

                return(body.ToArray());

                void addEntity(string mnemonicName, int position, int length, byte numOfBits)
                {
                    body.Add(mnemonicName.GetASCIIBytes());
                    body.Add(_serializator.Serialize((ushort)position));
                    body.Add((byte)length);
                    body.Add(numOfBits);
                }
            }
        }
Example #2
0
        public static RequestInfo GetRequestDescription(RUSDeviceId deviceId, Command request)
        {
            var info = (deviceId, request);

            if (info.request.IsOneOf(Command.KEEP_MTF, Command.ROTATE_WITH_CONSTANT_SPEED, Command.DRILL_DIRECTLY, Command.TURN_ON_AZIMUTH))
            {
                var i = new SmartInt();
                return(new RequestInfo(deviceId, request, new EntityDescriptor[]
                {
                    new EntityDescriptor("Inc", i, i.Add(2).DValue, DataEntityFormat.INT16),
                    new EntityDescriptor("Azi", i, i.Add(2).DValue, DataEntityFormat.INT16),
                    new EntityDescriptor("MTF", i, i.Add(2).DValue, DataEntityFormat.INT16),
                }));
            }
            else if (info == (RUSDeviceId.LWD_LINK, Command.PBP_SETTINGS))
            {
                return(new RequestInfo(deviceId, request, new EntityDescriptor[]
                {
                    new EntityDescriptor("Количество секторов", 0, 1, DataEntityFormat.UINT8),
                    new EntityDescriptor("Время молчания", 1, 1, DataEntityFormat.UINT8)
                }));
            }
Example #3
0
        public RUSTechnologicalModuleDevice(WordSerializator serializator) : base(serializator)
        {
            _serial   = 100;
            _status32 = Global.Random.NextUInt();

            _calibrationFile            = deserialize(Properties.Resources.V01_RUS24_Cal, FileType.CALIBRATION);
            _factorySettingsFile        = deserialize(Properties.Resources.V01_RUS24_FSet, FileType.FACTORY_SETTINGS);
            _dataPacketFormatFile       = generateDataPacketFormatFile();
            _flashDataPacketFormatFile  = generateDataPacketFormatFile();
            _temperatureCalibrationFile = deserialize(Properties.Resources.V01_RUS24_TCal, FileType.TEMPERATURE_CALIBRATION);
            _workModeFile = deserialize(Properties.Resources.V01_RUS24_WMode, FileType.WORK_MODE);

            byte[] generateDataPacketFormatFile()
            {
                var body = new Enumerable <byte>()
                {
                    "TEXMODUL0101DDMMYYF_".GetASCIIBytes(),
                    serializator.Serialize(_serial),
                    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // Reserved
                };
                var i = new SmartInt().Add(1);

                addEntity("STAT", i, i.Add(2).DValue, 0);
                addEntity("STAT", i, i.Add(2).DValue, 0);
                addEntity("TST1", i, i.Add(2).DValue, 0);
                addEntity("TST2", i, i.Add(2).DValue, 0);

                return(body.ToArray());

                void addEntity(string mnemonicName, int position, int length, byte numOfBits)
                {
                    body.Add(mnemonicName.GetASCIIBytes());
                    body.Add(_serializator.Serialize((ushort)position));
                    body.Add((byte)length);
                    body.Add(numOfBits);
                }
            }
        }
Example #4
0
        static Files()
        {
            var         pos     = new SmartInt();
            var         dpedPos = new SmartInt();
            RUSDeviceId id      = 0;
            string      name    = null;

            var descriptors = new Dictionary <FileDescriptorsTarget, FileStructure>();

            BaseFileTemplate = new FBED[]
            {
                new FBED("Краткое название прибора", pos, pos.Add(8).DValue, DataEntityFormat.ASCII_STRING, FileEntityType.ANOTHER),
                new FBED("Модификация", pos, pos.Add(2), DataEntityFormat.ASCII_STRING, FileEntityType.MODIFICATION),
                new FBED("Версия ПО или пакета данных", pos, pos.Add(2).DValue, DataEntityFormat.ASCII_STRING, FileEntityType.FORMAT_VERSION),
                new FBED("Дата составления файла", pos, pos.Add(2).DValue, DataEntityFormat.ASCII_STRING, FileEntityType.BURN_DAY),
                new FBED("Месяц составления файла", pos, pos.Add(2).DValue, DataEntityFormat.ASCII_STRING, FileEntityType.BURN_MONTH),
                new FBED("Год составления файла", pos, pos.Add(2).DValue, DataEntityFormat.ASCII_STRING, FileEntityType.BURN_YEAR),
                new FBED("Указатель типа файла", pos, pos.Add(2).DValue, DataEntityFormat.ASCII_STRING, FileEntityType.FILE_TYPE_POINTER),
                new FBED("Серийный номер прибора", pos, pos.Add(2).DValue, DataEntityFormat.UINT16, FileEntityType.SERIAL_NUMBER),
            };

            #region Telemetry 0b00000001

            name      = "________";
            id        = RUSDeviceId.TELEMETRY;
            pos.Value = 0;

            registerStandard(FileType.FACTORY_SETTINGS);
            registerStandard(FileType.CALIBRATION);
            registerStandard(FileType.DATA_PACKET_CONFIGURATION);
            registerStandard(FileType.FLASH_DATA_PACKET_CONFIGURATION);

            #endregion

            #region RUSModule 0b00000010

            name      = "________";
            id        = RUSDeviceId.RUS_MODULE;
            pos.Value = 0;

            registerStandard(FileType.FACTORY_SETTINGS);
            registerStandard(FileType.CALIBRATION);
            registerStandard(FileType.DATA_PACKET_CONFIGURATION);
            registerStandard(FileType.FLASH_DATA_PACKET_CONFIGURATION);

            #endregion

            #region DriveControll 0b00000110

            name      = "________";
            id        = RUSDeviceId.DRIVE_CONTROL;
            pos.Value = 0;

            registerStandard(FileType.FACTORY_SETTINGS);
            registerStandard(FileType.CALIBRATION);
            registerStandard(FileType.DATA_PACKET_CONFIGURATION);
            registerStandard(FileType.FLASH_DATA_PACKET_CONFIGURATION);

            #endregion

            #region Telesystem 0b00001000

            name      = "________";
            id        = RUSDeviceId.TELESYSTEM;
            pos.Value = 0;

            registerStandard(FileType.FACTORY_SETTINGS);
            registerStandard(FileType.CALIBRATION);
            registerStandard(FileType.DATA_PACKET_CONFIGURATION);
            registerStandard(FileType.FLASH_DATA_PACKET_CONFIGURATION);

            #endregion

            #region RUSEMCModule 0b01010000

            name      = "EMC_Mdl_";
            id        = RUSDeviceId.EMC_MODULE;
            pos.Value = 0;

            registerStandard(FileType.FACTORY_SETTINGS);
            registerStandard(FileType.CALIBRATION);
            registerStandard(FileType.DATA_PACKET_CONFIGURATION);
            registerStandard(FileType.FLASH_DATA_PACKET_CONFIGURATION);

            #endregion

            #region TechnologicalModule 0b00001000

            name      = "TexModul";
            id        = RUSDeviceId.RUS_TECHNOLOGICAL_MODULE;
            pos.Value = 0;

            {
                pos.Value = 0;
                var v01Target = new FileDescriptorsTarget(FileType.FACTORY_SETTINGS, "01", id);
                var v01       = new Enumerable <FED>
                {
                    createHeader(name, FileType.FACTORY_SETTINGS.GetInfo().FileTypePointerName),
                    new FED("Резерв", pos, pos.Add(14).DValue, DataEntityFormat.BYTE_ARRAY, new byte[pos.DValue]),
                    new FED("Массив UInt8[36]", pos, pos.Add(36).DValue, DataEntityFormat.BYTE_ARRAY, new byte[pos.DValue]),
                }.ToArray();

                descriptors.Add(v01Target, new FileStructure(v01));
            }
            registerStandard(FileType.DATA_PACKET_CONFIGURATION);
            registerStandard(FileType.FLASH_DATA_PACKET_CONFIGURATION);

            {
                pos.Value = 0;
                var v01CalibrationTarget
                    = new FileDescriptorsTarget(FileType.CALIBRATION, "01", id);
                var v01Calibration = new Enumerable <FED>
                {
                    createHeader(name, FileType.CALIBRATION.GetInfo().FileTypePointerName),
                    new FED("Резерв", pos, pos.Add(14).DValue, DataEntityFormat.BYTE_ARRAY, new byte[pos.DValue]),
                    new FED("Калибровки", pos, pos.Add(36).DValue, DataEntityFormat.BYTE_ARRAY, new byte[pos.DValue]),
                }.ToArray();

                descriptors.Add(v01CalibrationTarget, new FileStructure(v01Calibration));
            }

            {
                pos.Value = 0;
                var v01TemperatureCalibrationTarget
                    = new FileDescriptorsTarget(FileType.TEMPERATURE_CALIBRATION, "01", id);
                var v01TemperatureCalibration = new Enumerable <FED>
                {
                    createHeader(name, FileType.TEMPERATURE_CALIBRATION.GetInfo().FileTypePointerName),
                    new FED("Резерв", pos, pos.Add(14).DValue, DataEntityFormat.BYTE_ARRAY, new byte[pos.DValue]),
                    new FED("Калибровки", pos, pos.Add(36).DValue, DataEntityFormat.BYTE_ARRAY, new byte[pos.DValue]),
                }.ToArray();

                descriptors.Add(v01TemperatureCalibrationTarget, new FileStructure(v01TemperatureCalibration));
            }

            pos.Value = 0;
            var v01CalibrationFileForTechnologicalModuleTarget
                = new FileDescriptorsTarget(FileType.WORK_MODE, "01", id);
            var v01CalibrationFileForTechnologicalModule = new Enumerable <FED>
            {
                createHeader(name, FileType.WORK_MODE.GetInfo().FileTypePointerName),
                new FED("Резерв", pos, pos.Add(14).DValue, DataEntityFormat.BYTE_ARRAY, new byte[14]),
                new FED("Режим работы", pos, pos.Add(36).DValue, DataEntityFormat.BYTE_ARRAY, new byte[pos.DValue])
            }.ToArray();

            descriptors.Add(v01CalibrationFileForTechnologicalModuleTarget, new FileStructure(v01CalibrationFileForTechnologicalModule));

            #endregion

            #region RUSLWDLink 0b00001001

            name      = "SNAPUNIT";
            id        = RUSDeviceId.LWD_LINK;
            pos.Value = 0;

            registerStandard(FileType.FACTORY_SETTINGS);
            registerStandard(FileType.CALIBRATION);
            registerStandard(FileType.DATA_PACKET_CONFIGURATION);
            registerStandard(FileType.FLASH_DATA_PACKET_CONFIGURATION);

            #endregion

            #region ShockSensor 0b00000101

            name = "SHOCK___";
            id   = RUSDeviceId.SHOCK_SENSOR;

            registerStandard(FileType.FACTORY_SETTINGS);

            pos.Value = 0;
            var v01DataPacketConfigurationFileForShockSensorTarget
                = new FileDescriptorsTarget(FileType.DATA_PACKET_CONFIGURATION, "01", id);
            var v01DataPacketConfigurationFileForShockSensor = new Enumerable <FED>
            {
                createHeader(name, "F_"),
                new FED("Резерв", pos, pos.Add(14).DValue, DataEntityFormat.BYTE_ARRAY, new byte[14]),
                new FED("Массив описаний пакета данных", pos, EntityLength.TILL_THE_END_OF_A_PACKET, DataEntityFormat.DATA_PACKET_ENTITIES_ARRAY,
                        new DataPacketEntityDescriptor[]
                {
                    new DataPacketEntityDescriptor("SH5O", 2, 1, false),
                    new DataPacketEntityDescriptor("SH1O", 2, 3, false),
                    new DataPacketEntityDescriptor("SH2O", 2, 5, false),
                    new DataPacketEntityDescriptor("SH3O", 2, 7, false),
                    new DataPacketEntityDescriptor("SH5R", 2, 9, false),
                    new DataPacketEntityDescriptor("SH1R", 2, 11, false),
                    new DataPacketEntityDescriptor("SH2R", 2, 13, false),
                    new DataPacketEntityDescriptor("SH3R", 2, 15, false),
                    new DataPacketEntityDescriptor("ARAD", 2, 17, false),
                    new DataPacketEntityDescriptor("AOSV", 2, 19, false),
                }),
            }.ToArray();
            registerStandard(FileType.FLASH_DATA_PACKET_CONFIGURATION);

            pos.Value = 0;
            var v01CalibrationFileForShockSensorTarget
                = new FileDescriptorsTarget(FileType.CALIBRATION, "01", id);
            var v01CalibrationFileForShockSensor = new Enumerable <FED>
            {
                createHeader(name, "K_"),
                new FED("Резерв", pos, pos.Add(14).DValue, DataEntityFormat.BYTE_ARRAY, new byte[14]),
                new FED("Калибровки", pos, EntityLength.TILL_THE_END_OF_A_PACKET, DataEntityFormat.CALIBRATION_PACKET_ENTITIES_ARRAY,
                        new CalibrationFileEntity[]
                {
                    CalibrationFileEntity.CreateConstantsTable("G0_", DataTypes.UINT16, new ushort[] { 517, 517, 517 }),
                    CalibrationFileEntity.CreateConstantsTable("POR_", DataTypes.UINT16, new ushort[] { 41, 82, 164, 246 }),
                    CalibrationFileEntity.CreateConstantsTable("TMR", DataTypes.UINT16, new ushort[] { 2 }),
                }),
            }.ToArray();


            descriptors.Add(v01CalibrationFileForShockSensorTarget, new FileStructure(v01CalibrationFileForShockSensor));
            descriptors.Add(v01DataPacketConfigurationFileForShockSensorTarget, new FileStructure(v01DataPacketConfigurationFileForShockSensor));

            #endregion

            #region RotationSensor 0b00000111

            name          = "Bl_Gyro_";
            id            = RUSDeviceId.ROTATIONS_SENSOR;
            pos.Value     = 0;
            dpedPos.Value = 1;

            registerStandard(FileType.FACTORY_SETTINGS);

            pos.Value = 0;
            var v01DataPacketConfigurationFileForRotationSensorTarget
                = new FileDescriptorsTarget(FileType.DATA_PACKET_CONFIGURATION, "01", id);
            var v01DataPacketConfigurationFileForRotationSensor = new Enumerable <FED>
            {
                createHeader(name, "F_"),
                new FED("Резерв", pos, pos.Add(14).DValue, DataEntityFormat.BYTE_ARRAY, new byte[14]),
                new FED("Массив описаний пакета данных", pos, EntityLength.TILL_THE_END_OF_A_PACKET, DataEntityFormat.DATA_PACKET_ENTITIES_ARRAY,
                        new DataPacketEntityDescriptor[]
                {
                    new DataPacketEntityDescriptor("STAT", dpedPos.Add(2).DValue, dpedPos.PreviousValue, false),
                    new DataPacketEntityDescriptor("SGY1", dpedPos.Add(2).DValue, dpedPos.PreviousValue, true),
                    new DataPacketEntityDescriptor("SRO1", dpedPos.Add(2).DValue, dpedPos.PreviousValue, true),
                    new DataPacketEntityDescriptor("ANG1", dpedPos.Add(2).DValue, dpedPos.PreviousValue, false),
                    new DataPacketEntityDescriptor("TEM1", dpedPos.Add(2).DValue, dpedPos.PreviousValue, true),
                    new DataPacketEntityDescriptor("SGY2", dpedPos.Add(2).DValue, dpedPos.PreviousValue, true),
                    new DataPacketEntityDescriptor("SRO2", dpedPos.Add(2).DValue, dpedPos.PreviousValue, true),
                    new DataPacketEntityDescriptor("ANG2", dpedPos.Add(2).DValue, dpedPos.PreviousValue, false),
                    new DataPacketEntityDescriptor("TEM2", dpedPos.Add(2).DValue, dpedPos.PreviousValue, true),
                    new DataPacketEntityDescriptor("ADSG", dpedPos.Add(2).DValue, dpedPos.PreviousValue, false),
                    new DataPacketEntityDescriptor("ADH1", dpedPos.Add(2).DValue, dpedPos.PreviousValue, false),
                    new DataPacketEntityDescriptor("ADH2", dpedPos.Add(2).DValue, dpedPos.PreviousValue, false),
                    new DataPacketEntityDescriptor("ADTM", dpedPos.Add(2).DValue, dpedPos.PreviousValue, true),
                }),
            }.ToArray();

            registerStandard(FileType.FLASH_DATA_PACKET_CONFIGURATION);

            registerStandardCalibrationFile(CalibrationFileEntity.CreateConstantsTable("dTe", DataTypes.INT16, new short[] { 0 }));

            pos.Value = 0;
            var v01TemperatureCalibrationFileForRotationSensorTarget
                = new FileDescriptorsTarget(FileType.TEMPERATURE_CALIBRATION, "01", id);
            var v01TemperatureCalibrationFileForRotationSensor = new Enumerable <FED>
            {
                createHeader(name, "T_"),
                new FED("Резерв", pos, pos.Add(14).DValue, DataEntityFormat.BYTE_ARRAY, new byte[14]),
                new FED("Калибровки", pos, EntityLength.TILL_THE_END_OF_A_PACKET, DataEntityFormat.CALIBRATION_PACKET_ENTITIES_ARRAY,
                        new CalibrationFileEntity[]
                {
                    CalibrationFileEntity.CreateArray("AH1", DataTypes.UINT16, Enumerable.Repeat((ushort)32498, 156).ToArray()),
                    CalibrationFileEntity.CreateArray("AH2", DataTypes.UINT16, Enumerable.Repeat((ushort)32715, 156).ToArray()),
                    CalibrationFileEntity.CreateArray("ASG", DataTypes.UINT16, Enumerable.Repeat((ushort)32809, 156).ToArray()),
                    CalibrationFileEntity.CreateArray("Kgy", DataTypes.FLOAT, Enumerable.Repeat((float)0.12947888, 156).ToArray())
                }),
            }.ToArray();

            descriptors.Add(v01DataPacketConfigurationFileForRotationSensorTarget, new FileStructure(v01DataPacketConfigurationFileForRotationSensor));
            descriptors.Add(v01TemperatureCalibrationFileForRotationSensorTarget, new FileStructure(v01TemperatureCalibrationFileForRotationSensor));

            #endregion

            #region Izmeritel 0b00000100

            name      = "Izmeritl";
            id        = RUSDeviceId.IZMERITEL;
            pos.Value = 0;

            registerStandard(FileType.FACTORY_SETTINGS);

            pos.Value = 0;
            var v01DataPacketConfigurationFileForIzmeritelTarget
                = new FileDescriptorsTarget(FileType.DATA_PACKET_CONFIGURATION, "01", id);
            var v01DataPacketConfigurationFileForIzmeritel = new Enumerable <FED>
            {
                createHeader(name, "F_"),
                new FED("Резерв", pos, pos.Add(14).DValue, DataEntityFormat.BYTE_ARRAY, new byte[14]),
                new FED("Массив описаний пакета данных", pos, EntityLength.TILL_THE_END_OF_A_PACKET, DataEntityFormat.DATA_PACKET_ENTITIES_ARRAY,
                        new DataPacketEntityDescriptor[]
                {
                    new DataPacketEntityDescriptor("TimP", 2, 0x07, false),
                    new DataPacketEntityDescriptor("DD1_", 2, 0x09, false),
                    new DataPacketEntityDescriptor("DD2_", 2, 0x0B, false),
                    new DataPacketEntityDescriptor("TDD1", 2, 0x0D, false),
                    new DataPacketEntityDescriptor("TDD2", 2, 0x0F, false),
                    new DataPacketEntityDescriptor("TACD", 2, 0x11, false),
                    new DataPacketEntityDescriptor("+INC", 2, 0x13, false),
                    new DataPacketEntityDescriptor("-INC", 2, 0x14, false),
                    new DataPacketEntityDescriptor("GK__", 2, 0x15, false),
                    new DataPacketEntityDescriptor("TIME", 2, 0x17, false),
                    new DataPacketEntityDescriptor("URTC", 2, 0x19, false),
                    new DataPacketEntityDescriptor("REZ_", 2, 0x1B, false),
                    new DataPacketEntityDescriptor("SerN", 2, 0x23, false),
                }),
            }.ToArray();

            registerStandard(FileType.FLASH_DATA_PACKET_CONFIGURATION);

            registerStandard(FileType.CALIBRATION);

            descriptors.Add(v01DataPacketConfigurationFileForIzmeritelTarget, new FileStructure(v01DataPacketConfigurationFileForIzmeritel));

            #endregion

            #region Inclinometr 0b00000011

            name          = "INCL____";
            id            = RUSDeviceId.INCLINOMETR;
            pos.Value     = 0;
            dpedPos.Value = 1;

            registerStandard(FileType.FACTORY_SETTINGS);

            pos.Value = 0;
            var v01DataPacketConfigurationFileForInclinometrTarget
                = new FileDescriptorsTarget(FileType.DATA_PACKET_CONFIGURATION, "01", id);
            var v01DataPacketConfigurationFileForInclinometr = new Enumerable <FED>
            {
                createHeader("INCL____", "F_"),
                new FED("Резерв", pos, pos.Add(14).DValue, DataEntityFormat.BYTE_ARRAY, new byte[14]),
                new FED("Массив описаний пакета данных", pos, EntityLength.TILL_THE_END_OF_A_PACKET, DataEntityFormat.DATA_PACKET_ENTITIES_ARRAY,
                        new DataPacketEntityDescriptor[]
                {
                    new DataPacketEntityDescriptor("STAT", dpedPos.Add(2).DValue, dpedPos.PreviousValue, 0x10),
                    new DataPacketEntityDescriptor("INC_", dpedPos.Add(2).DValue, dpedPos.PreviousValue, 0x10),
                    new DataPacketEntityDescriptor("GTF_", dpedPos.Add(2).DValue, dpedPos.PreviousValue, 0x10),
                    new DataPacketEntityDescriptor("MTF_", dpedPos.Add(2).DValue, dpedPos.PreviousValue, 0x10),
                    new DataPacketEntityDescriptor("AZI_", dpedPos.Add(2).DValue, dpedPos.PreviousValue, 0x10),
                    new DataPacketEntityDescriptor("DIP_", dpedPos.Add(2).DValue, dpedPos.PreviousValue, 0x8F),
                    new DataPacketEntityDescriptor("GTOT", dpedPos.Add(2).DValue, dpedPos.PreviousValue, 0x10),
                    new DataPacketEntityDescriptor("BTOT", dpedPos.Add(2).DValue, dpedPos.PreviousValue, 0x10),
                    new DataPacketEntityDescriptor("GCNT", dpedPos.Add(2).DValue, dpedPos.PreviousValue, 0x10),
                    new DataPacketEntityDescriptor("Taks", dpedPos.Add(2).DValue, dpedPos.PreviousValue, 0x10),
                    new DataPacketEntityDescriptor("Tmag", dpedPos.Add(2).DValue, dpedPos.PreviousValue, 0x10),
                    new DataPacketEntityDescriptor("XGrp", dpedPos.Add(2).DValue, dpedPos.PreviousValue, 0x8F),
                    new DataPacketEntityDescriptor("YGrp", dpedPos.Add(2).DValue, dpedPos.PreviousValue, 0x8F),
                    new DataPacketEntityDescriptor("ZGrp", dpedPos.Add(2).DValue, dpedPos.PreviousValue, 0x8F),
                    new DataPacketEntityDescriptor("XMrp", dpedPos.Add(2).DValue, dpedPos.PreviousValue, 0x8F),
                    new DataPacketEntityDescriptor("YMrp", dpedPos.Add(2).DValue, dpedPos.PreviousValue, 0x8F),
                    new DataPacketEntityDescriptor("ZMrp", dpedPos.Add(2).DValue, dpedPos.PreviousValue, 0x8F),
                    new DataPacketEntityDescriptor("XGad", dpedPos.Add(2).DValue, dpedPos.PreviousValue, 0x8F),
                    new DataPacketEntityDescriptor("YGad", dpedPos.Add(2).DValue, dpedPos.PreviousValue, 0x8F),
                    new DataPacketEntityDescriptor("ZGad", dpedPos.Add(2).DValue, dpedPos.PreviousValue, 0x8F),
                    new DataPacketEntityDescriptor("XMad", dpedPos.Add(2).DValue, dpedPos.PreviousValue, 0x8F),
                    new DataPacketEntityDescriptor("YMad", dpedPos.Add(2).DValue, dpedPos.PreviousValue, 0x8F),
                    new DataPacketEntityDescriptor("ZMad", dpedPos.Add(2).DValue, dpedPos.PreviousValue, 0x8F),
                    new DataPacketEntityDescriptor("TGad", dpedPos.Add(2).DValue, dpedPos.PreviousValue, 0x10),
                    new DataPacketEntityDescriptor("Tmad", dpedPos.Add(2).DValue, dpedPos.PreviousValue, 0x10),
                    new DataPacketEntityDescriptor("UHV_", dpedPos.Add(2).DValue, dpedPos.PreviousValue, 0x10),
                    new DataPacketEntityDescriptor("UHAL", dpedPos.Add(2).DValue, dpedPos.PreviousValue, 0x10),
                    new DataPacketEntityDescriptor("RSRV", dpedPos.Add(2).DValue, 59, 0x10),
                }),
            }.ToArray();

            registerStandard(FileType.FLASH_DATA_PACKET_CONFIGURATION);

            registerStandard(FileType.CALIBRATION);

            pos.Value = 0;
            var v01TemperatureCalibrationFileForInclinometrTarget
                = new FileDescriptorsTarget(FileType.TEMPERATURE_CALIBRATION, "01", id);
            var v01TemperatureCalibrationFileForInclinometr = new Enumerable <FED>
            {
                createHeader(name, "T_"),
                new FED("Резерв", pos, pos.Add(14).DValue, DataEntityFormat.BYTE_ARRAY, new byte[14]),
                new FED("Калибровки", pos, EntityLength.TILL_THE_END_OF_A_PACKET, DataEntityFormat.CALIBRATION_PACKET_ENTITIES_ARRAY, new CalibrationFileEntity[]
                {
                    CalibrationFileEntity.CreateLinearInterpolationTable("G1x", DataTypes.FLOAT, 140.Range().Select(_ => (0F, 1F)).ToArray()),
                    CalibrationFileEntity.CreateLinearInterpolationTable("G1y", DataTypes.FLOAT, 140.Range().Select(_ => (0F, 1F)).ToArray()),
                    CalibrationFileEntity.CreateLinearInterpolationTable("G1z", DataTypes.FLOAT, 140.Range().Select(_ => (0F, 1F)).ToArray()),
                    CalibrationFileEntity.CreateLinearInterpolationTable("M1x", DataTypes.FLOAT, 140.Range().Select(_ => (0F, 1F)).ToArray()),
                    CalibrationFileEntity.CreateLinearInterpolationTable("M1y", DataTypes.FLOAT, 140.Range().Select(_ => (0F, 1F)).ToArray()),
                    CalibrationFileEntity.CreateLinearInterpolationTable("M1z", DataTypes.FLOAT, 140.Range().Select(_ => (0F, 1F)).ToArray()),
                }),
Example #5
0
        public InclinometrVirtualDevice(WordSerializator serializator) : base(serializator)
        {
            _serial = 999;

            _calibrationFile            = deserialize(Properties.Resources.V01_RUS03_Cal, FileType.CALIBRATION);
            _factorySettingsFile        = deserialize(Properties.Resources.V01_RUS03_FSet, FileType.FACTORY_SETTINGS);
            _dataPacketFormatFile       = generateDataPacketFormatFile();
            _flashDataPacketFormatFile  = _dataPacketFormatFile;
            _temperatureCalibrationFile = deserialize(Properties.Resources.V01_RUS03_TCal, FileType.TEMPERATURE_CALIBRATION);

            byte[] generateDataPacketFormatFile()
            {
                var body = new Enumerable <byte>()
                {
                    "INCL____0101DDMMYYF_".GetASCIIBytes(),
                    serializator.Serialize(_serial),
                    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // Reserve
                };
                var i = new SmartInt().Add(1);

                addEntity("STAT", (ushort)i, (byte)i.Add(2).DValue, 0, false);
                addEntity("INC_", (ushort)i, (byte)i.Add(2).DValue, 0, false);
                addEntity("AZI_", (ushort)i, (byte)i.Add(2).DValue, 0, false);
                addEntity("GTF_", (ushort)i, (byte)i.Add(2).DValue, 0, false);
                addEntity("XGpr", (ushort)i, (byte)i.Add(2).DValue, 0, false);
                addEntity("YGpr", (ushort)i, (byte)i.Add(2).DValue, 0, false);
                addEntity("ZGpr", (ushort)i, (byte)i.Add(2).DValue, 0, false);
                addEntity("XMpr", (ushort)i, (byte)i.Add(2).DValue, 0, false);
                addEntity("YMpr", (ushort)i, (byte)i.Add(2).DValue, 0, false);
                addEntity("ZMpr", (ushort)i, (byte)i.Add(2).DValue, 0, false);
                addEntity("TGad", (ushort)i, (byte)i.Add(2).DValue, 0, true);
                addEntity("TMad", (ushort)i, (byte)i.Add(2).DValue, 0, true);

                return(body.ToArray());

                void addEntity(string mnemonicName, ushort position, byte length, byte numOfBits, bool isSigned)
                {
                    body.Add(mnemonicName.GetASCIIBytes());
                    body.Add(_serializator.Serialize(position));
                    body.Add(length);
                    body.Add((isSigned ? (1 << 7) : 0).ToByte().BitOR(numOfBits));
                }
            }
        }
Example #6
0
        public RotationSensorVirtualDevice(WordSerializator serializator) : base(serializator)
        {
            _calibrationFile            = deserialize(Properties.Resources.V01_RUS07_Cal, FileType.CALIBRATION);
            _factorySettingsFile        = deserialize(Properties.Resources.V01_RUS07_FSet, FileType.FACTORY_SETTINGS);
            _dataPacketFormatFile       = generateDataPacketFormatFile();
            _flashDataPacketFormatFile  = generateDataPacketFormatFile();
            _temperatureCalibrationFile = deserialize(Properties.Resources.V01_RUS07_TCal, FileType.TEMPERATURE_CALIBRATION);

            byte[] generateDataPacketFormatFile()
            {
                var body = new Enumerable <byte>()
                {
                    "Bl_Gyro_0101DDMMYYF_".GetASCIIBytes(),
                    serializator.Serialize(_serial),
                    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // Reserve
                };
                var i = new SmartInt().Add(1);

                addEntity("STAT", (ushort)i, (byte)i.Add(2).DValue, 0, false);
                addEntity("SGY1", (ushort)i, (byte)i.Add(2).DValue, 0, true);
                addEntity("SRO1", (ushort)i, (byte)i.Add(2).DValue, 0, true);
                addEntity("ANG1", (ushort)i, (byte)i.Add(2).DValue, 0, false);
                addEntity("TEM1", (ushort)i, (byte)i.Add(2).DValue, 0, true);
                addEntity("SGY2", (ushort)i, (byte)i.Add(2).DValue, 0, true);
                addEntity("SRO2", (ushort)i, (byte)i.Add(2).DValue, 0, true);
                addEntity("ANG2", (ushort)i, (byte)i.Add(2).DValue, 0, false);
                addEntity("TEM2", (ushort)i, (byte)i.Add(2).DValue, 0, true);
                addEntity("ADSG", (ushort)i, (byte)i.Add(2).DValue, 0, false);
                addEntity("ADH1", (ushort)i, (byte)i.Add(2).DValue, 0, false);
                addEntity("ADH2", (ushort)i, (byte)i.Add(2).DValue, 0, false);
                addEntity("ADTM", (ushort)i, (byte)i.Add(2).DValue, 0, true);

                return(body.ToArray());

                void addEntity(string mnemonicName, ushort position, byte length, byte numOfBits, bool isSigned)
                {
                    body.Add(mnemonicName.GetASCIIBytes());
                    body.Add(_serializator.Serialize(position));
                    body.Add(length);
                    body.Add((isSigned ? 1 : 0).ToByte().BitLShift(7).BitOR(numOfBits));
                }
            }
        }