Настройка режима камеры на Mavic 2 Enterprise Dual: не работает переключатель Visual, Thermal и MSX - PullRequest
1 голос
/ 21 мая 2019

Я пытаюсь установить режим камеры, когда подключен Mavic 2 Enterprise Dual, но получаю ошибку.Этот продукт должен поддерживать setDisplayMode, поскольку он поддерживает Visual, Infrared и MSX:

camera!.setDisplayMode(DJICameraDisplayMode.MSX, withCompletion: nil)

Ошибка: текущий продукт не поддерживает эту функцию. (Код: -1013)

Версия SDK:4.10

Swift Версия: 5.0

1 Ответ

2 голосов
/ 21 мая 2019

Обнаружено решение:

Mavic 2 Enterprise Dual имеет камеры двух типов: визуальные и тепловые. Чтобы изменить тип дисплея камеры, вы должны использовать тепловизор.

Код для получения тепловой камеры:

var cameraMode: String = ""

viewDidLoad() {
    checkForMavic2Enterprise()
}

func checkForMavic2Enterprise() {
    guard let product = DJISDKManager.product() else {
        print("No product")
        switchCameraButton.isHidden = true
        return
    }

    if product.model == "Mavic 2 Enterprise Dual" {
        let camera = fetchCamera()
        camera!.setDisplayMode(DJICameraDisplayMode.visualOnly, withCompletion: nil)
        cameraMode = "visual"
    } else {
        switchCameraButton.isHidden = true
    }
}

// get the drone camera
func fetchCamera() -> DJICamera? {
    if let product = DJISDKManager.product() {
        if let productKind = product as? DJIAircraft {
            if productKind.cameras!.count > 1 {
                return productKind.cameras![1] // thermal
            } else {
                return productKind.camera
            }
        } else if let productKind = product as? DJIHandheld {
            print("HANDHELD CAMERA: \(productKind.camera.debugDescription)")
            return productKind.camera
        }
    }
    return nil
}

@IBAction func switchCamera(_ sender: Any) {

    let camera = fetchCamera()

    switch cameraMode {
    case "visual":
        print("SWITCHING TO MSX")
        camera!.setDisplayMode(DJICameraDisplayMode.MSX, withCompletion: nil)
        cameraMode = "MSX"
        break
    case "MSX":
        print("SWITCHING TO THERMAL")
        camera!.setDisplayMode(DJICameraDisplayMode.thermalOnly, withCompletion: nil)
        cameraMode = "thermal"
        break
    default:
        print("SWITCHING TO VISUAL")
        camera!.setDisplayMode(DJICameraDisplayMode.visualOnly, withCompletion: nil)
        cameraMode = "visual"
        break
    }
}
...