指挥控制系统(多信号显示控制)

 效果如图:对信号源进行各种手势操作,通过wifi控制大屏显示的内容,如何显示自由定制

中控效果图标题效果图
​​

主要技术用到socketIO版本为10.0.0,服务器的socketIO不一致的情况下回出错,上代码了

1.由于数据需要大量的全局便于定制扩展,写个数据管理的单例

import UIKit
enum AckModel {
    case SceneActiveModel
    case WindowMoveModel
    case WindowDeleted
    case WindowCreated
    case NewInputNodeAry
    case ConnectFail
    case SceneCreated
    case SceneChanged
    case SceneDeleted
    case WallCreated
    case WallDeleted
    case WallSlotBinded
    case WallLayoutChanged
    case WallRowHeightChanged
    case WallColWidthChanged
    case WallNameChanged
    case WindowSignalChanged
    case AllWindowsDeleted
}
protocol VPScreenDelegate: NSObjectProtocol {
    func CallBack(dataArray: Any,type:AckModel)
}
class DataMananger: NSObject {
    //MARK:socket
    //当前墙记录 CurrentWall
    var currentWall :CYWall?
    var currentScene :CYScene?
    var  socketClinet : SocketIOClient?
    weak var delegate:VPScreenDelegate?
    static let shared = DataMananger()
    var timer: Timer?
    
    //MARK:数据的数组
    
    lazy  var sceneWindowArray:[CYSceneWindow] = {
        
        var foo : [CYSceneWindow] = [CYSceneWindow]()
        return foo
    }()
    lazy  var scenesArray:[CYScene] = {
        var foo : [CYScene] = [CYScene]()
        return foo
    }()
    lazy var signalsArray:[CYSignal] = {
        var foo : [CYSignal] = [CYSignal]()
        return foo
    }()
    lazy var wallsArray:[CYWall] = {
        var foo : [CYWall] = [CYWall]()
        return foo
    }()
    lazy var resultArray:[Any] = {
        var foo : [Any] = [Any]()
        return foo
    }()
    lazy var inputNodesArray:[CYInputNode] = {
        var foo : [CYInputNode] = [CYInputNode]()
        return foo
    }()
    lazy var currentScenesArr:[CYScene]={
        var foo : [CYScene] = [CYScene]()
        return foo
    }()
    lazy var currentWindowsArr:[CYSceneWindow]={
        var foo : [CYSceneWindow] = [CYSceneWindow]()
        return foo
    }()
    //List call listen
    func VPhandleEvent() {
        /*
         连接状态监听
         */
        self.socketClinet?.on("connect"){ data, ack in
            
        }
        self.socketClinet?.on(clientEvent: .disconnect) {data, ack in
            print("Test: Disconnect")
        }
        
        self.socketClinet!.on(clientEvent: .statusChange) {data, ack in
            print("Test: statusChange")
        }
        /*
         Window状态监听
         */
        self.socketClinet!.on("WindowCreated") {data, ack in
            let dic = data[0] as? [String: Any]
            let windowModel = CYSceneWindow.deserialize(from: dic!["window"] as? [String: Any])
            self.sceneWindowArray.append(windowModel!)
            self.delegate?.CallBack(dataArray: data, type: AckModel.WindowCreated)
        }
        self.socketClinet!.on("WindowDeleted") {data, ack in
            let dic = data[0] as? [String: Any]
            let windowModel = CYSceneWindow.deserialize(from: dic!["window"] as? [String: Any])
            for (index, model) in self.sceneWindowArray.enumerated() {
                if model.id == windowModel?.id {
                    self.sceneWindowArray.remove(at: index)
                    break
                }
            }
            self.delegate?.CallBack(dataArray: data, type: AckModel.WindowDeleted)
        }
        self.socketClinet!.on("WindowMoved") {data, ack in
            let dic = data[0] as? [S


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部