Esempio n. 1
0
        public override ARESULT Initialize(Dictionary <string, object> arguments)
        {
            device = arguments["device"] as IDevice;

            // 读取配置信息
            if (!device.Read(ReadMode.IrCameraParameters, null, out object outData, out _))
            {
                return(ARESULT.E_INVALIDARG);
            }

            // 创建资源
            Repository.Entities.Configuration.IrCameraParameters irCameraParameters = outData as Repository.Entities.Configuration.IrCameraParameters;
            temperature = PinnedBuffer <float> .Alloc(irCameraParameters.temperatureWidth *irCameraParameters.temperatureHeight);

            irImage = PinnedBuffer <byte> .Alloc(irCameraParameters.width *irCameraParameters.height * 3 / 2);

            tempertureDuration = 1000 / irCameraParameters.temperatureFrameRate;

            // 读取配置信息
            if (!device.Read(ReadMode.CameraParameters, null, out outData, out _))
            {
                return(ARESULT.E_INVALIDARG);
            }

            // 创建资源
            Repository.Entities.Configuration.CameraParameters cameraParameters = outData as Repository.Entities.Configuration.CameraParameters;
            image = PinnedBuffer <byte> .Alloc(cameraParameters.width *cameraParameters.height * 3 / 2);

            videoDuration = 1000 / cameraParameters.videoFrameRate;

            return(base.Initialize(arguments));
        }
Esempio n. 2
0
        public override ARESULT Initialize(Dictionary <string, object> arguments)
        {
            service = arguments["service"] as CellService;
            device  = arguments["device"] as IDevice;

            // 读取配置信息
            if (!device.Read(ReadMode.IrCameraParameters, null, out object outData, out _))
            {
                return(ARESULT.E_INVALIDARG);
            }

            irCameraParameters = outData as Repository.Entities.Configuration.IrCameraParameters;
            tempertureDuration = 1000 / irCameraParameters.temperatureFrameRate;

            // 声明事件处理函数
            onReceiveTemperature = (arguments) => {
                if (arguments[0] == device)
                {
                    temperature = Arrays.Clone(arguments[1] as float[], temperature);
                }
            };

            onReceiveImage = (arguments) => {
                if (arguments[0] == device)
                {
                    image = Arrays.Clone(arguments[1] as byte[], image);
                }
            };

            return(base.Initialize(arguments));
        }