Пример #1
0
        public FLICamera(string camera, IProfileService profileService)
        {
            this.profileService = profileService;
            string[]      cameraInfo;
            StringBuilder cameraSerial = new StringBuilder(64);
            uint          rv;

            cameraInfo = camera.Split(';');
            Info.Id    = cameraInfo[0];
            Info.Model = cameraInfo[1];

            Info.FWrev = 0x0;
            Info.HWrev = 0x0;

            if ((rv = LibFLI.FLIOpen(out CameraH, Info.Id, LibFLI.FLIDomains.DEV_CAMERA | LibFLI.FLIDomains.IF_USB)) != LibFLI.FLI_SUCCESS)
            {
                Logger.Error($"FLI: FLIOpen() failed. Returned {rv}");
            }

            if ((rv = LibFLI.FLIGetSerialString(CameraH, cameraSerial, 64)) != LibFLI.FLI_SUCCESS)
            {
                Logger.Error($"FLI: FLIGetSerialString() failed. Returned {rv}");
            }

            if ((rv = LibFLI.FLIGetFWRevision(CameraH, out Info.FWrev)) != LibFLI.FLI_SUCCESS)
            {
                Logger.Error($"FLI: FLIGetFWRevision() failed. Returned {rv}");
            }

            if ((rv = LibFLI.FLIGetHWRevision(CameraH, out Info.HWrev)) != LibFLI.FLI_SUCCESS)
            {
                Logger.Error($"FLI: FLIGetHWRevision() failed. Returned {rv}");
            }

            Info.Serial = cameraSerial.ToString();

            Logger.Debug($"FLI Camera: Found camera: {Description}");

            if ((rv = LibFLI.FLIClose(CameraH)) != LibFLI.FLI_SUCCESS)
            {
                Logger.Error($"FLI: FLIClose() failed. Returned {rv}");
            }
        }
Пример #2
0
        public async Task <bool> Connect(CancellationToken token)
        {
            return(await Task.Run(() => {
                uint fwheelPostions = 0;
                uint rv;

                if ((rv = LibFLI.FLIOpen(out FWheelH, Info.Id, LibFLI.FLIDomains.DEV_FILTERWHEEL | LibFLI.FLIDomains.IF_USB)) != LibFLI.FLI_SUCCESS)
                {
                    Logger.Error($"FLI FWheel: FLIOpen() failed. Returned {rv}");
                    Connected = false;

                    return Connected;
                }

                Logger.Debug($"FLI Wheel: Filter wheel {Info.Id} opened successfully");

                if ((rv = LibFLI.FLIGetFWRevision(FWheelH, out Info.FWrev)) != LibFLI.FLI_SUCCESS)
                {
                    Logger.Error($"FLI FWheel: FLIGetFWRevision() failed. Returned {rv}");
                }

                if ((rv = LibFLI.FLIGetHWRevision(FWheelH, out Info.HWrev)) != LibFLI.FLI_SUCCESS)
                {
                    Logger.Error($"FLI FWheel: FLIGetHWRevision() failed. Returned {rv}");
                }

                /*
                 * How many filter positions?
                 */
                if ((rv = LibFLI.FLIGetFilterCount(FWheelH, ref fwheelPostions)) != LibFLI.FLI_SUCCESS)
                {
                    Logger.Error($"FLI FWheel: FLIGetFilterCount() failed. Returned {rv}");
                    Connected = false;

                    return Connected;
                }
                Info.Positions = fwheelPostions;

                Connected = true;
                return Connected;
            }));
        }