123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890 |
- //
- // SBTPramSettingVCtr.swift
- // SolarBT
- //
- // Created by weclouds on 2019/3/13.
- // Copyright © 2019 weclouds. All rights reserved.
- //
- import UIKit
- import SwiftyJSON
- import PKHUD
- extension FileManager{
- // 判断是否是文件夹的方法
- static func directoryIsExists (path: String) -> Bool {
- var directoryExists = ObjCBool.init(false)
- let fileExists = FileManager.default.fileExists(atPath: path, isDirectory: &directoryExists)
- return fileExists && directoryExists.boolValue
- }
- }
- struct ParamData {
- //参数设置
- var BatRateVolt :String? //系统电压设置
- var BatTypeSet :String? // 蓄电池类型
-
- var BatOverVolt :String? //超压电压
- var BatChgLimitVolt :String? //充电限制电压
- var BatConstChgVolt :String? // 均衡充电电压
- var BatImprovChgVolt :String? // 提升充电电压/过充电压
- var BatFloatChgVolt :String? //浮充充电电压 /过充返回电压
- var BatImprovChgBackVolt :String? // 提升充电返回电压
- var BatOverDischgBackVolt :String? //过放返回电压
- var BatUnderVolt :String? // 欠压警告电压
- var BatOverDischgVolt :String? // 过放电压
- var BatDischgLimitVolt :String? //放电限制电压
-
- var BatOverDischgDelayTime:String? //过放延时时间
- var BatConstChgTime :String? // 均衡充电时间
- var BatImprovChgTime :String? //提升充电时间
- var BatConstChgGapTime :String? // 均衡充电间隔
-
- var CoeffTemperCompen:String? // 温度补偿系数
- var ChgMaxTemper :String? // 充电上限温度
- var ChgMinTemper :String? // 充电下限温度
- var DisChagMaxTemper :String? // 放电上限温度
- var DisChaMinTemper:String? // 放电下限温度
- var DcLoadMode :String? // 直流工作模式
- var LightCtrlDelayTime :String? //光控延时时间
- var LightCtrlVolt:String? // 光控电压
-
- var tx :String?
- var rx :String? ;
-
- var BattEqualChgImmediate :String? // 手动均衡
- var CmdPowerOnOff:String? // 开关控制
- }
- class SBTPramSettingVCtr: UIViewController {
-
- var batRateVolt : String?
- var isAuto : Bool? = false
- var readBtn : UIButton?
- var callback:(()->Void)?
- var batterCell : SBTParamSet_BatteryCell?
-
- var peripheralName :String?
-
- var MaxVoltage: String?
-
- var IchageRage : String?
-
- var set_deviceName :String?
-
- var isOld :Bool?
- var charge_USER_Arr :[String]? = [String]()
- var charge_FLD_Arr :[String]? = [String]()
- var charge_SLD_Arr :[String]? = [String]()
- var charge_GEL_Arr :[String]? = [String]()
- var charge_LI_Arr :[String]? = [String]()
-
- var deviceName:String? // 设备名称
-
- var paramDataDict : [String: Any] = [String: Any]()
- let key: DeviceDictKey = DeviceDictKey()
-
- var bleKey :String?
- //放大倍数
- var Multiple : Float? = 1 // 默认为1倍
- var maxVolt :String? // 系统最大电压
- var isDemo: Bool?
- var fileURL : URL?
- lazy var device = DeviceData()
- var batteryArr:[String]? = [String]()
- var chargerArr:[String]? = [String]()
- var loadArr :[String]? = [String]()
- var txArr :[String]? = [String]()
- var rxArr :[String]? = [String]()
- var autoRecognition :Bool?
-
- var paramData:ParamData?
- @IBOutlet weak var tableView: UITableView!
- let batteryCellID = "battery"
- let chargerCellID = "charger"
- let loadCellID = "loadcell"
- let TxCellID = "txCell"
- let RxCellID = "RxCell"
- var isExpandArray = [String]()
- var foldLabelDict :NSMutableDictionary?
-
- override func viewDidAppear(_ animated: Bool) {
- super.viewDidAppear(animated)
- self.readBtn?.isEnabled = false
- //读取一遍数据
- if self.isDemo == false {
- delay(1) {
- self.readName()
- }
- delay(1.5) {
- self.readAction()
- self.readBtn?.isEnabled = true
- }
- }
-
- }
- override func viewWillDisappear(_ animated: Bool) {
- super.viewWillDisappear(animated)
- if self.callback != nil {
- self.callback!()
- }
- }
-
- override func viewWillAppear(_ animated: Bool) {
- super.viewWillAppear(animated)
- notificationRegister()
-
- }
-
- @objc func readName() {
- BabyBluetoothSwift.shareInstance()?.writeData2222(["FF0300490020"], completionHandler: { (result) in
- self.readdata_0049(result!["FF0300490020"] as! String)
- })
- }
-
- override func viewDidDisappear(_ animated: Bool) {
- super.viewDidDisappear(animated)
- notificationUnRegister()
- if self.callback != nil {
- self.callback!()
- }
- }
-
- override func viewDidLoad() {
- super.viewDidLoad()
- // self.title = "参数设置"
- checkTheBlueToothWasActivity()
- // Do any additional setup after loading the view.
- initParam()
-
- createUI()
- if self.isDemo == true {
- let data = SBTData()
- initData(data.DemoData)
-
- }else{
-
- let plist = CLDeviceDataPlist()
- let dataDict = plist.findData(deviceDetailPlist, key: self.bleKey!)
-
- // log.debug("-------------aekqwefknakofn== \(dataDict)")
- initData(dataDict as! [String : Any])
- }
-
- }
-
-
- //注册通知、 获取数据
- func notificationRegister() {
-
- NotificationCenter.default.addObserver(self, selector: #selector(notifitionToChangeBatteryType(_:)), name: NSNotification.Name(KNotifitionToChangeBatteryType), object: nil)
- }
-
- @objc func notifitionToChangeBatteryType(_ notifi:NSNotification) {
- chargerArr?.removeAll()
- //["自定义","密封铅酸SLD","开口铅酸FLD","胶体铅酸GEL","磷酸铁锂LI"]
- //{"batteryType": "0"}
- log.debug("f电池类型更改1 --- \(notifi.userInfo ?? Dictionary())")
- let dict = notifi.userInfo
- let batteryType = dict!["batteryType"] as! String
- log.debug("---电池类型 -- \(batteryType)")
- switch batteryType {
- case "0":
- chargerArr = charge_USER_Arr
- case "1":
- chargerArr = charge_FLD_Arr
- case "2":
- chargerArr = charge_SLD_Arr
- case "3":
- chargerArr = charge_GEL_Arr
- case "4":
- chargerArr = charge_LI_Arr
- default:
- break
- }
-
-
-
-
- self.tableView.reloadData()
-
- }
-
- //注销通知
- func notificationUnRegister() {
- NotificationCenter.default.removeObserver(self)
- }
-
- }
- extension SBTPramSettingVCtr {
-
- func initData(_ dataDict: [String:Any]) {
- let def = UserDefaults.standard
- let iSTemp = def.object(forKey: TEMPISCENTIGRADE) as? String
-
- chargerArr?.removeAll()
- loadArr?.removeAll()
- txArr?.removeAll()
- rxArr?.removeAll()
- batteryArr?.removeAll()
-
- charge_USER_Arr?.removeAll()
- charge_FLD_Arr?.removeAll()
- charge_SLD_Arr?.removeAll()
- charge_GEL_Arr?.removeAll()
- charge_LI_Arr?.removeAll()
-
- paramData = nil
-
- let key = DeviceDictKey()
-
- //参数设置
-
-
-
- let autoRecogn = dataDict[key.autoRecognition] as! String // 是否自动识别
- if autoRecogn == "1"{
- autoRecognition = true
- }else{
- autoRecognition = false
- }
- let BatRateVolt = dataDict[key.BatRateVolt] as! String //系统电压设置
-
- //当前系统电压值
- let batBateVoltInt = Float(BatRateVolt)
- let multiple = batBateVoltInt! / 12.0
- self.Multiple = multiple
-
- let BatTypeSet = dataDict[key.BatTypeSet] as! String // 蓄电池类型
- let maxVolt = dataDict[key.MaxVolt] as!String // 系统支持的最大电压
- self.maxVolt = maxVolt
- switch BatTypeSet {
- case "自定义":
- AppShare.batteryType = .USER
- case "开口铅酸FLD":
- AppShare.batteryType = .FLD
- case "密封铅酸SLD":
- AppShare.batteryType = .SLD
- case "胶体铅酸GEL":
- AppShare.batteryType = .GEL
- case "锂LI":
- AppShare.batteryType = .LI
-
- default:
- break
- }
-
- if self.isOld == true {
-
- }
- var IchageRage = dataDict[key.MaxChargeCurrent] as! String //最大充电电流
- if isOld == true {
- IchageRage = dataDict[key.IchageRage] as! String
-
- }
- chargerArr?.append(IchageRage)
- charge_USER_Arr?.append(IchageRage)
- let CmdPowerOnOff = dataDict[key.CmdPowerOnOff] as! String // 开关控制
- if self.isOld == true {
- let CmdPowerOnOff1 = "On".da_localizedStr()
- self.chargerArr?.append(CmdPowerOnOff1)
- }else{
- self.chargerArr?.append(CmdPowerOnOff)
- }
-
- var ChgMaxTemper = dataDict[key.ChgMaxTemper] as! String// 充电上限温度
- if iSTemp == "0" {
- ChgMaxTemper = ChgMaxTemper.centigradeToFahrenheit_int()
- }
- if self.isOld == true {
- ChgMaxTemper = "--"
- }
- chargerArr?.append(ChgMaxTemper)
- var ChgMinTemper = dataDict[key.ChgMinTemper] as! String // 充电下限温度
- if iSTemp == "0" {
- ChgMinTemper = ChgMinTemper.centigradeToFahrenheit_int()
- }
- if self.isOld == true {
- ChgMinTemper = "--"
- }
- chargerArr?.append(ChgMinTemper)
-
- /*---------------电压扩大n倍----------*/
- let BatOverVolt = dataDict[key.BatOverVolt] as! String //超压电压
- chargerArr?.append(voltEnlage(BatOverVolt))
- /*---------------电压扩大n倍----------*/
- let BatChgLimitVolt = dataDict[key.BatChgLimitVolt] as! String //充电限制电压
- chargerArr?.append(voltEnlage(BatChgLimitVolt))
- /*---------------电压扩大n倍----------*/
- let BatImprovChgVolt = dataDict[key.BatImprovChgVolt] as! String // 提升充电电压/过充电压
- chargerArr?.append(voltEnlage(BatImprovChgVolt))
- /*---------------电压扩大n倍----------*/
- let BatFloatChgVolt = dataDict[key.BatFloatChgVolt] as! String//浮充充电电压 /过充返回电压
- chargerArr?.append(voltEnlage(BatFloatChgVolt))
- /*---------------电压扩大n倍----------*/
- let BatImprovChgBackVolt = dataDict[key.BatImprovChgBackVolt] as! String // 提升充电返回电压
- chargerArr?.append(voltEnlage(BatImprovChgBackVolt))
- let BatImprovChgTime = dataDict[key.BatImprovChgTime] as! String //提升充电时间
- chargerArr?.append(BatImprovChgTime)
- let CoeffTemperCompen = dataDict[key.CoeffTemperCompen] as! String // 温度补偿系数
- if CoeffTemperCompen == "0"{
- let CoeffTemperCompenSt1 = "0"
- self.chargerArr?.append(CoeffTemperCompenSt1)
- }else{
- let CoeffTemperCompenStr = "-\(CoeffTemperCompen)"
- self.chargerArr?.append(CoeffTemperCompenStr)
- }
- /*---------------电压扩大n倍----------*/
- let BatConstChgVolt = dataDict[key.BatConstChgVolt] as! String // 均衡充电电压
- chargerArr?.append(voltEnlage(BatConstChgVolt))
- let BatConstChgTime = dataDict[key.BatConstChgTime] as! String // 均衡充电时间
- chargerArr?.append(BatConstChgTime)
- let BatConstChgGapTime = dataDict[key.BatConstChgGapTime] as! String // 均衡充电间隔
- chargerArr?.append(BatConstChgGapTime)
- let BattEqualChgImmediate = dataDict[key.BattEqualChgImmediate] as! String// 手动均衡
- chargerArr?.append(BattEqualChgImmediate)
- /*---------------电压扩大n倍----------*/
- let BatOverDischgBackVolt = dataDict[key.BatOverDischgBackVolt] as! String //过放返回电压
- chargerArr?.append(voltEnlage(BatOverDischgBackVolt))
- /*---------------电压扩大n倍----------*/
- let BatUnderVolt = dataDict[key.BatUnderVolt] as! String // 欠压警告电压
- chargerArr?.append(voltEnlage(BatUnderVolt))
- /*---------------电压扩大n倍----------*/
- let BatOverDischgVolt = dataDict[key.BatOverDischgVolt] as! String// 过放电压
- chargerArr?.append(voltEnlage(BatOverDischgVolt))
- /*---------------电压扩大n倍----------*/
- let BatDischgLimitVolt = dataDict[key.BatDischgLimitVolt] as! String //放电限制电压
-
- chargerArr?.append(voltEnlage(BatDischgLimitVolt))
- let BatOverDischgDelayTime = dataDict[key.BatOverDischgDelayTime] as! String //过放延时时间
- chargerArr?.append(BatOverDischgDelayTime)
- var DisChagMaxTemper = dataDict[key.DisChagMaxTemper] as! String // 放电上限温度
- if iSTemp == "0" {
- DisChagMaxTemper = DisChagMaxTemper.centigradeToFahrenheit_int()
- }
- if self.isOld == true {
- DisChagMaxTemper = "--"
- }
- chargerArr?.append(DisChagMaxTemper)
- var DisChaMinTemper = dataDict[key.DisChaMinTemper] as! String // 放电下限温度
- if iSTemp == "0" {
- DisChaMinTemper = DisChaMinTemper.centigradeToFahrenheit_int()
- }
- if self.isOld == true {
- DisChaMinTemper = "--"
- }
- chargerArr?.append(DisChaMinTemper)
-
-
- /*******默认数据****/
- /// 自定义
- charge_USER_Arr = [IchageRage,CmdPowerOnOff,"65","-30",
- voltEnlage("16.0"),voltEnlage("15.5"),voltEnlage("14.4"),voltEnlage("13.8"),voltEnlage("13.2"),
- "120","-3",
- voltEnlage("14.6"),
- "120","30",BattEqualChgImmediate,
- voltEnlage("12.6"),voltEnlage("12.0"),voltEnlage("11.1"),voltEnlage("10.6"),
- "5","",""]
- charge_SLD_Arr = [IchageRage,CmdPowerOnOff,"65","-30",
- voltEnlage("16.0"),voltEnlage("15.5"),voltEnlage("14.4"),voltEnlage("13.8"),voltEnlage("13.2"),
- "120","-3",
- voltEnlage("14.6"),
- "120","30",BattEqualChgImmediate,
- voltEnlage("12.6"),voltEnlage("12.0"),voltEnlage("11.1"),voltEnlage("10.6"),
- "5","",""]
- charge_FLD_Arr = [IchageRage,CmdPowerOnOff,"65","-30",
- voltEnlage("16.0"),voltEnlage("15.5"),voltEnlage("14.6"),voltEnlage("13.8"),voltEnlage("13.2"),
- "120","-3",
- voltEnlage("14.6"),
- "120","30",BattEqualChgImmediate,
- voltEnlage("12.6"),voltEnlage("12.0"),voltEnlage("11.1"),voltEnlage("10.6"),
- "5",DisChagMaxTemper,DisChaMinTemper]
- charge_GEL_Arr = [IchageRage,CmdPowerOnOff,"65","-30",
- voltEnlage("16.0"),voltEnlage("15.5"),voltEnlage("14.2"),voltEnlage("13.8"),voltEnlage("13.2"),
- "120","-3",
- voltEnlage("14.6"),
- "120","30",BattEqualChgImmediate,
- voltEnlage("12.6"),voltEnlage("12.0"),voltEnlage("11.1"),voltEnlage("10.6"),
- "5",DisChagMaxTemper,DisChaMinTemper]
- charge_LI_Arr = [IchageRage,CmdPowerOnOff,"65","-30",
- voltEnlage("16.0"),voltEnlage("15.5"),voltEnlage("14.4"),voltEnlage("14.4"),voltEnlage("13.2"),
- "-120-","0",
- voltEnlage("14.6"),
- "120","30",BattEqualChgImmediate,
- voltEnlage("12.6"),voltEnlage("12.0"),voltEnlage("11.1"),voltEnlage("10.6"),
- "5",DisChagMaxTemper,DisChaMinTemper]
- let DcLoadMode = dataDict[key.DcLoadMode] as! String // 直流工作模式
- loadArr?.append(DcLoadMode)
- let LightCtrlDelayTime = dataDict[key.LightCtrlDelayTime] as! String //光控延时时间
- loadArr?.append(LightCtrlDelayTime)
- let LightCtrlVolt = dataDict[key.LightCtrlVolt] as! String // 光控电压
- loadArr?.append(LightCtrlVolt)
- // let tx = dataDict[key.tx] as! String
- var tx = "Normal_communication".da_localizedStr()
- if self.isOld == true{
- tx = ""
- }
- txArr?.append(tx)
- // let rx = dataDict[key.rx] as! String
- var rx = "Normal_communication".da_localizedStr()
- if self.isOld == true {
- rx = ""
- }
- rxArr?.append(rx)
- paramData = ParamData(BatRateVolt: BatRateVolt,
- BatTypeSet: BatTypeSet,
- BatOverVolt: BatOverVolt,
- BatChgLimitVolt: BatChgLimitVolt,
- BatConstChgVolt: BatConstChgVolt,
- BatImprovChgVolt: BatImprovChgVolt,
- BatFloatChgVolt: BatFloatChgVolt,
- BatImprovChgBackVolt: BatImprovChgBackVolt,
- BatOverDischgBackVolt: BatOverDischgBackVolt,
- BatUnderVolt: BatUnderVolt,
- BatOverDischgVolt: BatOverDischgVolt,
- BatDischgLimitVolt: BatDischgLimitVolt,
- BatOverDischgDelayTime: BatOverDischgDelayTime,
- BatConstChgTime: BatConstChgTime,
- BatImprovChgTime: BatImprovChgTime,
- BatConstChgGapTime: BatConstChgGapTime,
- CoeffTemperCompen: CoeffTemperCompen,
- ChgMaxTemper: ChgMaxTemper,
- ChgMinTemper: ChgMinTemper,
- DisChagMaxTemper: DisChagMaxTemper,
- DisChaMinTemper: DisChaMinTemper,
- DcLoadMode: DcLoadMode,
- LightCtrlDelayTime: LightCtrlDelayTime,
- LightCtrlVolt: LightCtrlVolt,
- tx: tx,
- rx: rx,
- BattEqualChgImmediate: BattEqualChgImmediate,
- CmdPowerOnOff: CmdPowerOnOff)
-
-
- batteryArr?.append(BatRateVolt)
- batteryArr?.append(BatTypeSet)
-
- log.debug("负载 - \(loadArr!)")
- log.debug("充电器- \(chargerArr!)")
- self.tableView.reloadData()
-
- }
-
-
-
-
- //电压放大倍数
- func voltEnlage(_ volt:String) -> String {
- let VoltFloat = Float(volt)
- let VoltEnlarge = VoltFloat! * self.Multiple!
- let VoltEnlargeStr = String(format: "%.1f", VoltEnlarge)
- return VoltEnlargeStr
- }
-
- func initParam() {
- for _ in 0..<5 {
- isExpandArray.append("0")//0 没展开 1 展开
-
- }
- }
-
- func createUI() {
- setNavigationBar()
- self.tableView.delegate = self
- self.tableView.dataSource = self
- self.tableView.separatorStyle = .none
- self.tableView.backgroundColor = UIColor.white
- self.tableView.register(UINib(nibName: "SBTParamSet_BatteryCell", bundle: nil), forCellReuseIdentifier: batteryCellID)
- self.tableView.register(UINib(nibName: "SBTParamSet_ChargerCell", bundle: nil), forCellReuseIdentifier: chargerCellID)
- self.tableView.register(UINib(nibName: "SBTParamSet_LoadCell", bundle: nil), forCellReuseIdentifier: loadCellID)
- self.tableView.register(UINib(nibName: "SBTParamSet_TXCell", bundle: nil), forCellReuseIdentifier: TxCellID)
- self.tableView.register(UINib(nibName: "SBTParamSet_RXCell", bundle: nil), forCellReuseIdentifier: RxCellID)
- self.tableView.register(headerFooterViewClassWith: SBTHeaderView.self)
-
- }
-
-
- func setNavigationBar() {
- let titleView = UIView(frame: CGRect(x: 0, y: 0, width: KSCREENWIDTH - 150, height: 44))
- //titleView.backgroundColor = UIColor.red
- self.navigationItem.titleView = titleView
- let label = UILabel()
- label.text = "Parameter_settings".da_localizedStr()
- label.textColor = UIColor(hexString: "#222222")
- label.font = UIFont(name: PingFangSC_Semibold, size: 19)
- // label.backgroundColor = UIColor.green
- let labelW = label.getWidth(byHeight: 44, title: "Parameter_settings".da_localizedStr(), font: UIFont(name: PingFangSC_Semibold, size: 19)!)
- label.frame = CGRect(x: 0, y: 0, width: labelW + 20 , height: 44)
- titleView.addSubview(label)
- // 12
- let readBtn = UIButton(type: .custom)
- //设置rect
- readBtn.frame = CGRect(x: labelW + 15 + 20 , y: 10, width: 51, height: 25)
- //设置渐变色
- let bgLayer1 = CAGradientLayer()
- bgLayer1.colors = [UIColor(red: 1, green: 0.52, blue: 0.07, alpha: 1).cgColor, UIColor(red: 1, green: 0.67, blue: 0, alpha: 1).cgColor]
- bgLayer1.locations = [0, 1]
- bgLayer1.frame = readBtn.bounds
- bgLayer1.startPoint = CGPoint(x: 1, y: 1)
- bgLayer1.endPoint = CGPoint(x: 0, y: 0)
- readBtn.layer.addSublayer(bgLayer1)
- readBtn.layer.cornerRadius = 12.5
- readBtn.layer.masksToBounds = true
- readBtn.setTitle("Read".da_localizedStr(), for: .normal)
- readBtn.setTitleColor(UIColor.white, for: .normal)
- readBtn.titleLabel?.font = UIFont(name: PingFangSC_Medium, size: 11)
- readBtn.addTarget(self, action: #selector(readAction), for: .touchUpInside)
- titleView.addSubview(readBtn)
- self.readBtn = readBtn
- let uploadBtn = UIBarButtonItem.createBarbuttonItem(image: "上传", highImage: "上传", target: self, action: #selector(uploadAction))
-
-
- let downloadBtn = UIBarButtonItem.createBarbuttonItem(image: "导入", highImage: "导入", target: self, action: #selector(downloadAction))
- //设置空白展位bar
- let spaceItem = UIBarButtonItem(barButtonSystemItem: .fixedSpace, target: nil, action: nil)
- spaceItem.width = 20
- self.navigationItem.rightBarButtonItems = [downloadBtn,spaceItem,uploadBtn]
- }
-
- @objc func uploadAction() {
- readAction()
-
- let setFileName = SBTSetFileNameVCtr()
- setFileName.show()
-
- setFileName.saveCallBack = {(fileName) in
- log.debug("保存文件 --\(fileName)")
- // if fileName?.isEmpty == true || fileName?.count == 0 {
- // HUD.flash(.error, delay: 1)
- // return
- // }
- log.debug("-----\\输入的文件名称 --- \(fileName)")
- var filenameStr = ""
-
- let alert = SBTExportDataVCtr()
- if self.isDemo == true {
- //
- alert.alartTitle = "Simulation_experience".da_localizedStr()
- }else{
- //let name =
- alert.alartTitle = self.set_deviceName!
- }
-
- alert.loadingImage = UIImage(named: "export")
- alert.message = "Paramter_export".da_localizedStr()
- alert.show()
- alert.dismiss(2)
- //
- if fileName == "" || fileName == nil {
-
- filenameStr = "paramter"
- }else{
- filenameStr = fileName!
- }
- log.debug("最后显示的文件名称 === \(filenameStr)")
- self.perform(#selector(self.getUploadData), with: filenameStr, afterDelay: 1.5)
-
- }
-
- setFileName.completeHandle = {(filename) in
- // if filename?.isEmpty == true || filename?.count == 0 {
- // HUD.flash(.error, delay: 1)
- // return
- // }
- log.debug("-----\\输入的文件名称 --- \(filename)")
- var filenameStr = ""
-
- let alert = SBTExportDataVCtr()
- if self.isDemo == true {
- //
- alert.alartTitle = "Simulation_experience".da_localizedStr()
- }else{
- //let name =
- alert.alartTitle = self.set_deviceName!
- }
-
- alert.loadingImage = UIImage(named: "export")
- alert.message = "Paramter_export".da_localizedStr()
- alert.show()
- alert.dismiss(2)
- //
- if filename == "" || filename == nil {
-
- filenameStr = "paramter"
- }else{
- filenameStr = filename!
- }
- log.debug("最后显示的文件名称 === \(filenameStr)")
- self.perform(#selector(self.getUploadData), with: filenameStr, afterDelay: 1.5)
- self.perform(#selector(self.shareAction), with: nil, afterDelay: 2)
- }
- }
-
- //匹配数据
- func StringToNumber(_ dict : [String:Any]) -> [String:Any] {
- let key = DeviceDictKey()
- var ParamDict = dict
- let tx = dict[key.tx] as! String
- let rx = dict[key.rx] as! String
- let BattEqualChgImmediate = dict[key.BattEqualChgImmediate] as! String
- let BatTypeSet = dict[key.BatTypeSet] as! String
- let DcLoadMode = dict[key.DcLoadMode] as! String
- let CmdPowerOnOff = dict[key.CmdPowerOnOff] as! String
- var tx_cmd = ""
- if tx == "正常通讯" || tx == "Normal communication" {
- tx_cmd = "000"
- }
- var rx_cmd = ""
- if rx == "正常通讯" || rx == "Normal communication" {
- rx_cmd = "000"
- }
- var canhandle = ""
- if BattEqualChgImmediate == "禁止" || BattEqualChgImmediate == "Prohibited" {
- canhandle = "0"
- }else if BattEqualChgImmediate == "使能" || BattEqualChgImmediate == "Enable"{
- canhandle = "1"
- }
-
- var batterytype = ""
- switch BatTypeSet {
- case "自定义" :
- batterytype = "0"
-
- case "开口铅酸FLD":
- batterytype = "1"
- case "密封铅酸SLD":
- batterytype = "2"
- case "胶体铅酸GEL":
- batterytype = "3"
- case "锂LI":
- batterytype = "4"
-
- case "User-defined" :
- batterytype = "0"
-
- case "Vented lead acid battery FLD":
- batterytype = "1"
- case "Lead acid battery SLD":
- batterytype = "2"
- case "Gel lead acid GEL":
- batterytype = "3"
- case "Lithium LI":
- batterytype = "4"
-
- default:
- break
- }
- var loadwordmode = ""
- switch DcLoadMode {
- case "光控":
- loadwordmode = "0"
- case "光控,延时1小时":
- loadwordmode = "1"
- case "光控,延时2小时":
- loadwordmode = "2"
- case "光控,延时3小时":
- loadwordmode = "3"
- case "光控,延时4小时":
- loadwordmode = "4"
- case "光控,延时5小时":
- loadwordmode = "5"
- case "光控,延时6小时":
- loadwordmode = "6"
- case "光控,延时7小时":
- loadwordmode = "7"
- case "光控,延时8小时":
- loadwordmode = "8"
- case "光控,延时9小时":
- loadwordmode = "9"
- case "光控,延时10小时":
- loadwordmode = "10"
- case "光控,延时11小时":
- loadwordmode = "11"
- case "光控,延时12小时":
- loadwordmode = "12"
- case "光控,延时13小时":
- loadwordmode = "13"
- case "光控,延时14小时":
- loadwordmode = "14"
- case "手动模式":
- loadwordmode = "15"
- case "调试模式":
- loadwordmode = "16"
- case "常开模式":
- loadwordmode = "17"
- case "定时模式":
- loadwordmode = "18"
-
- case "Light control":
- loadwordmode = "0"
- case "Light control, delay 1 hour":
- loadwordmode = "1"
- case "Light control, delay 2 hours":
- loadwordmode = "2"
- case "Light control, delay 3 hours":
- loadwordmode = "3"
- case "Light control, delay 4 hours":
- loadwordmode = "4"
- case "Light control, delay 5 hours":
- loadwordmode = "5"
- case "Light control, delay 6 hours":
- loadwordmode = "6"
- case "Light control, delay 7 hours":
- loadwordmode = "7"
- case "Light control, delay 8 hours":
- loadwordmode = "8"
- case "Light control, delay 9 hours":
- loadwordmode = "9"
- case "Light control, delay 10 hours":
- loadwordmode = "10"
- case "Light control, delay 11 hours":
- loadwordmode = "11"
- case "Light control, delay 12 hours":
- loadwordmode = "12"
- case "Light control, delay 13 hours":
- loadwordmode = "13"
- case "Light control, delay 14 hours":
- loadwordmode = "14"
- case "Manual mode":
- loadwordmode = "15"
- case "Debug mode":
- loadwordmode = "16"
- case "Normal-on mode":
- loadwordmode = "17"
- case "Timed mode":
- loadwordmode = "18"
-
- default:
- break
- }
-
-
- var power_cmd = ""
- if CmdPowerOnOff == "关" || CmdPowerOnOff == "Off" {
- power_cmd = "0"
- }else if CmdPowerOnOff == "开" || CmdPowerOnOff == "On"{
- power_cmd = "1"
- }
-
- ParamDict[key.tx] = tx_cmd
- ParamDict[key.rx] = rx_cmd
- ParamDict[key.BattEqualChgImmediate] = canhandle
- ParamDict[key.BatTypeSet] = batterytype
- ParamDict[key.DcLoadMode] = loadwordmode
- ParamDict[key.CmdPowerOnOff] = power_cmd
-
- return ParamDict
- }
-
- /// 处理分享数据数据
- @objc func getUploadData(_ filename :String) {
- log.debug("上传数据 -- \(paramDataDict)")
-
-
- var dict = [String:Any]()
- if self.isDemo == true {
- let dict0 = SBTData().DemoData
- //设置
- let key = DeviceDictKey()
-
- dict = ["BatImprovChgVolt": dict0[key.BatImprovChgVolt] as Any,
- "BatRateVolt": dict0[key.BatRateVolt] as Any,
- "CmdPowerOnOff": dict0[key.CmdPowerOnOff] as Any,
- "CoeffTemperCompen": dict0[key.CoeffTemperCompen]as Any,
- "BatOverVolt": dict0[key.BatOverVolt]as Any,
- "MaxChargeCurrent": dict0[key.MaxChargeCurrent]as Any,
- "BatOverDischgDelayTime": dict0[key.BatOverDischgDelayTime]as Any,
- "BattEqualChgImmediate": dict0[key.BattEqualChgImmediate]as Any,
- "BatImprovChgBackVolt": dict0[key.BatImprovChgBackVolt]as Any,
- "IchageRage": dict0[key.IchageRage]as Any,
- "MaxVolt": dict0[key.MaxVolt] as Any,
- "BatDischgLimitVolt": dict0[key.BatDischgLimitVolt] as Any,
- "BatOverDischgVolt": dict0[key.BatOverDischgVolt] as Any,
- "BatFloatChgVolt": dict0[key.BatFloatChgVolt]as Any,
- "BatImprovChgTime": dict0[key.BatImprovChgTime]as Any,
- "BatConstChgVolt": dict0[key.BatConstChgVolt]as Any,
- "BatChgLimitVolt": dict0[key.BatImprovChgVolt]as Any,
- "Tx": dict0[key.tx]as Any,
- "ChgMinTemper": dict0[key.ChgMinTemper]as Any,
- "DcLoadMode": dict0[key.DcLoadMode]as Any,
- "ChgMaxTemper": dict0[key.ChgMaxTemper]as Any,
- "autoRecognition": dict0[key.autoRecognition]as Any,
- "BatOverDischgBackVolt": dict0[key.BatOverDischgBackVolt]as Any,
- "LightCtrlDelayTime": dict0[key.LightCtrlDelayTime]as Any,
- "DisChagMinTemper": dict0[key.DisChaMinTemper]as Any,
- "DisChagMaxTemper": dict0[key.DisChagMaxTemper]as Any, "BatConstChgGapTime":dict0[key.BatConstChgGapTime]as Any,
- "Rx": dict0[key.rx]as Any,
- "LightCtrlVolt": dict0[key.LightCtrlVolt]as Any,
- "BatTypeSet": dict0[key.BatTypeSet]as Any,
- "BatUnderVolt": dict0[key.BatUnderVolt]as Any,
- "BatConstChgTime": dict0[key.BatConstChgTime]as Any]
-
-
- }else {
- dict = paramDataDict
- if self.isOld == true{
- dict["ChgMinTemper"] = "--"
- dict["ChgMaxTemper"] = "--"
- dict["DisChagMinTemper"] = "--"
- dict["DisChagMaxTemper"] = "--"
- }
-
- }
-
- let newDict = StringToNumber(dict)
- let dictStr = dicValueString(newDict)
-
- log.debug("字符串 \(dictStr!)")
-
-
-
- //处理数据
- // 1、 转成base64字符串
- let base64Str = dictStr?.toBase64()
- // 2、 开头增加三个随机字符
- let insetStr = String.randomStr(len: 3) + base64Str!
- // 3、 转成base64 字符串
- let reBase64Str = insetStr.toBase64()
-
- log.debug("分享字符串 \(reBase64Str!)")
- //获取设备名称
- // let devicename = paramDataDict["ProdctName"] as! String devicename + "Param.txt"
-
- let file = filename + ".txt"// this is the file. we will write to and read from it
-
- if let dir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first {
- let fileURL = dir.appendingPathComponent(file)
- print("========》保存地址 --- \(fileURL)")
- self.fileURL = fileURL
- //writing
- do {
- try reBase64Str!.write(to: fileURL, atomically: false, encoding: .utf8)
- }
- catch {
- /* error handling here */
- }
- //reading
- do {
- let text2 = try String(contentsOf: fileURL, encoding: .utf8)
- print(text2)
- }
- catch {
- /* error handling here */
- }
-
-
-
- let home1 = NSHomeDirectory() // 获取沙盒根路径
- let documentsDirectory1 = home1 + "/Documents/"
- let documentsDirectory2 = home1 + "/Documents/SaveData/"
-
- let manager = FileManager.default
-
-
- let exist = manager.fileExists(atPath: home1 + "/Documents/SaveData/")
-
- if exist == false{
-
- do{
-
- let documentPath = URL(fileURLWithPath: NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0])
- let inboxPath = documentPath.appendingPathComponent("SaveData")
- //创建制定位置的上的文件夹
- try manager.createDirectory(atPath: inboxPath.path, withIntermediateDirectories: true, attributes: nil)
- log.debug("创建文件夹成功")
- // g_showHUD("创建文件夹成功")
- }
- catch let error{
- log.debug("创建文件夹失败 --- \(error.localizedDescription) ---\(error)")
- // g_showHUD("创建文件夹失败")
- }
- }
- let filePath1 = documentsDirectory1.appending(file)
- let filePath2 = documentsDirectory2.appending(file)
- SBTFileOperation.copyFile(sourceUrl: filePath1, targetUrl: filePath2)
- log.debug("地址----\(filePath1)")
- }
- }
-
- //MARK : 打开分享页面
- @objc func shareAction() {
- let objectsToShare = [self.fileURL!]
- let controller = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil)
- present(controller, animated: true, completion: nil)
- }
-
- // MARK: 字典转字符串
- func dicValueString(_ dic:[String : Any]) -> String?{
- let data = try? JSONSerialization.data(withJSONObject: dic, options: [])
- let str = String(data: data!, encoding: String.Encoding.utf8)
- return str
- }
-
- // MARK: 字符串转字典
- func stringValueDic(_ str: String) -> [String : Any]?{
- let data = str.data(using: String.Encoding.utf8)
- if let dict = try? JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.mutableContainers) as? [String : Any] {
- return dict
- }
- return nil
- }
-
- ///MARK : 下载文件
- @objc func downloadAction() {
- let vc = SBTReadSettingParamVCtr()
- vc.isOld = self.isOld
- vc.isDemo = self.isDemo
- vc.MaxVoltage = self.MaxVoltage
- vc.IchageRage = self.IchageRage
- self.navigationController?.pushViewController(vc)
-
- }
-
- @objc func readAction() {
- if self.isDemo == true {
- g_toast("Current_demo_data".da_localizedStr())
- return
- }
-
- Thread.sleep(forTimeInterval: 0.1)
-
- log.debug("读取")
- let arr = ["FF03000A0001","FF03E0010001","FF03E003001E","FF03DF000001","FF03DF0D0001","FF03E0210001"]
-
- BabyBluetoothSwift.shareInstance()?.writeData2222(arr, completionHandler: { (result) in
-
- self.realdata_000A(result!["FF03000A0001"] as! String)
- self.realdata_E001(result!["FF03E0010001"] as! String)
- self.realdata_E003(result!["FF03E003001E"] as! String)
- self.realdata_DF00(result!["FF03DF000001"] as! String)
- self.realdata_DF0D(result!["FF03DF0D0001"] as! String)
- self.realdata_E021(result!["FF03E0210001"] as! String)
- let loading = SBTReadLoadingVCtr()
- loading.deviceName = "Read_parameter".da_localizedStr()
- loading.message = "Reading_parameter".da_localizedStr()
- loading.show()
- loading.dismiss(2)
- self.tableView.reloadData()
- })
- // self.ReadSettingParam()
- DispatchQueue.main.async {
- let loading = SBTReadLoadingVCtr()
- loading.deviceName = "Read_parameter".da_localizedStr()
- loading.message = "Reading_parameter".da_localizedStr()
- loading.show()
- loading.dismiss(2)
- self.tableView.reloadData()
- }
- }
- /////////////////
- @objc func loadUIRefresh() {
-
- DispatchQueue.main.async {
- let dataDict = self.paramDataDict
- let def = UserDefaults.standard
- let iSTemp = def.object(forKey: TEMPISCENTIGRADE) as? String
-
- log.debug("asdfqoenwfoanwfok fa==wfkoaf- \(self.paramDataDict)")
- self.chargerArr?.removeAll()
- self.loadArr?.removeAll()
- self.txArr?.removeAll()
- self.rxArr?.removeAll()
- self.batteryArr?.removeAll()
- self.paramData = nil
-
- let key = DeviceDictKey()
-
- //参数设置
-
- let autoRecogn = dataDict[key.autoRecognition] as! String // 是否自动识别
- let BatRateVolt = dataDict[key.BatRateVolt] as! String //系统电压设置
- if autoRecogn == "1"{
- self.autoRecognition = true
- let BatRateVolt = "Auto".da_localizedStr() //系统电压设置
- }else{
- self.autoRecognition = false
- let BatRateVolt = dataDict[key.BatRateVolt] as! String //系统电压设置
- }
-
-
- //当前系统电压值
- if BatRateVolt == "自动识别" || BatRateVolt == "Auto"{
- self.Multiple = 0
- }else{
- let batBateVoltInt = Float(BatRateVolt)
- let multiple = batBateVoltInt! / 12.0
- self.Multiple = multiple
- }
-
-
- let BatTypeSet = dataDict[key.BatTypeSet] as! String // 蓄电池类型
- let maxVolt = dataDict[key.MaxVolt] as!String // 系统支持的最大电压
- self.maxVolt = maxVolt
- switch BatTypeSet {
- case "自定义":
- AppShare.batteryType = .USER
- case "开口铅酸FLD":
- AppShare.batteryType = .FLD
- case "密封铅酸SLD":
- AppShare.batteryType = .SLD
- case "胶体铅酸GEL":
- AppShare.batteryType = .GEL
- case "锂LI":
- AppShare.batteryType = .LI
-
- case "User-defined":
- AppShare.batteryType = .USER
- case "Vented lead acid battery FLD":
- AppShare.batteryType = .FLD
- case "Lead acid battery SLD":
- AppShare.batteryType = .SLD
- case "Gel lead acid GEL":
- AppShare.batteryType = .GEL
- case "Lithium LI":
- AppShare.batteryType = .LI
-
- default:
- break
- }
-
-
- var IchageRage = dataDict[key.MaxChargeCurrent] as! String //最大充电电流
- if self.isOld == true {
- IchageRage = dataDict[key.IchageRage] as! String
- }
- self.chargerArr?.append(IchageRage)
- let CmdPowerOnOff = dataDict[key.CmdPowerOnOff] as! String // 开关控制
- if self.isOld == true {
- let CmdPowerOnOff1 = "On".da_localizedStr()
- self.chargerArr?.append(CmdPowerOnOff1)
- }else{
-
- self.chargerArr?.append(CmdPowerOnOff)
- }
- var ChgMaxTemper = dataDict[key.ChgMaxTemper] as! String// 充电上限温度
-
-
- if iSTemp == "0" {
- ChgMaxTemper = ChgMaxTemper.centigradeToFahrenheit_int()
- }
- if self.isOld == true {
- ChgMaxTemper = "--"
- }
- self.chargerArr?.append(ChgMaxTemper)
- var ChgMinTemper = dataDict[key.ChgMinTemper] as! String // 充电下限温度
- if iSTemp == "0" {
- ChgMinTemper = ChgMinTemper.centigradeToFahrenheit_int()
- }
- if self.isOld == true {
- ChgMinTemper = "--"
- }
- self.chargerArr?.append(ChgMinTemper)
-
- /*---------------电压扩大n倍----------*/
- let BatOverVolt = dataDict[key.BatOverVolt] as! String //超压电压
- self.chargerArr?.append(self.voltEnlage(BatOverVolt))
- /*---------------电压扩大n倍----------*/
- let BatChgLimitVolt = dataDict[key.BatChgLimitVolt] as! String //充电限制电压
- self.chargerArr?.append(self.voltEnlage(BatChgLimitVolt))
- /*---------------电压扩大n倍----------*/
- let BatImprovChgVolt = dataDict[key.BatImprovChgVolt] as! String // 提升充电电压/过充电压
- self.chargerArr?.append(self.voltEnlage(BatImprovChgVolt))
- /*---------------电压扩大n倍----------*/
- let BatFloatChgVolt = dataDict[key.BatFloatChgVolt] as! String//浮充充电电压 /过充返回电压
- self.chargerArr?.append(self.voltEnlage(BatFloatChgVolt))
- /*---------------电压扩大n倍----------*/
- let BatImprovChgBackVolt = dataDict[key.BatImprovChgBackVolt] as! String // 提升充电返回电压
- self.chargerArr?.append(self.voltEnlage(BatImprovChgBackVolt))
- let BatImprovChgTime = dataDict[key.BatImprovChgTime] as! String //提升充电时间
- self.chargerArr?.append(BatImprovChgTime)
- let CoeffTemperCompen = dataDict[key.CoeffTemperCompen] as! String // 温度补偿系数
- if CoeffTemperCompen == "0"{
- let CoeffTemperCompenSt1 = "0"
- self.chargerArr?.append(CoeffTemperCompenSt1)
- }else{
- let CoeffTemperCompenStr = "-\(CoeffTemperCompen)"
- self.chargerArr?.append(CoeffTemperCompenStr)
- }
-
- /*---------------电压扩大n倍----------*/
- let BatConstChgVolt = dataDict[key.BatConstChgVolt] as! String // 均衡充电电压
- self.chargerArr?.append(self.voltEnlage(BatConstChgVolt))
- let BatConstChgTime = dataDict[key.BatConstChgTime] as! String // 均衡充电时间
- self.chargerArr?.append(BatConstChgTime)
- let BatConstChgGapTime = dataDict[key.BatConstChgGapTime] as! String // 均衡充电间隔
- self.chargerArr?.append(BatConstChgGapTime)
- let BattEqualChgImmediate = dataDict[key.BattEqualChgImmediate] as! String// 手动均衡
- self.chargerArr?.append(BattEqualChgImmediate)
- /*---------------电压扩大n倍----------*/
- let BatOverDischgBackVolt = dataDict[key.BatOverDischgBackVolt] as! String //过放返回电压
- self.chargerArr?.append(self.voltEnlage(BatOverDischgBackVolt))
- /*---------------电压扩大n倍----------*/
- let BatUnderVolt = dataDict[key.BatUnderVolt] as! String // 欠压警告电压
- self.chargerArr?.append(self.voltEnlage(BatUnderVolt))
- /*---------------电压扩大n倍----------*/
- let BatOverDischgVolt = dataDict[key.BatOverDischgVolt] as! String// 过放电压
- self.chargerArr?.append(self.voltEnlage(BatOverDischgVolt))
- /*---------------电压扩大n倍----------*/
- let BatDischgLimitVolt = dataDict[key.BatDischgLimitVolt] as! String //放电限制电压
-
- self.chargerArr?.append(self.voltEnlage(BatDischgLimitVolt))
- let BatOverDischgDelayTime = dataDict[key.BatOverDischgDelayTime] as! String //过放延时时间
- self.chargerArr?.append(BatOverDischgDelayTime)
- var DisChagMaxTemper = dataDict[key.DisChagMaxTemper] as! String // 放电上限温度
- if iSTemp == "0" {
- DisChagMaxTemper = DisChagMaxTemper.centigradeToFahrenheit_int()
- }
- if self.isOld == true {
- DisChagMaxTemper = "--"
- }
- self.chargerArr?.append(DisChagMaxTemper)
- var DisChaMinTemper = dataDict[key.DisChaMinTemper] as! String // 放电下限温度
- if iSTemp == "0" {
- DisChaMinTemper = DisChaMinTemper.centigradeToFahrenheit_int()
- }
- if self.isOld == true {
- DisChaMinTemper = "--"
- }
- self.chargerArr?.append(DisChaMinTemper)
-
- let DcLoadMode = dataDict[key.DcLoadMode] as! String // 直流工作模式
- self.loadArr?.append(DcLoadMode)
- let LightCtrlDelayTime = dataDict[key.LightCtrlDelayTime] as! String //光控延时时间
- self.loadArr?.append(LightCtrlDelayTime)
- let LightCtrlVolt = dataDict[key.LightCtrlVolt] as! String // 光控电压
- self.loadArr?.append(LightCtrlVolt)
- // let tx = dataDict[key.tx] as! String
- var tx = "Normal_communication".da_localizedStr()
- if self.isOld!{
- tx = ""
- }
- self.txArr?.append(tx)
- // let rx = dataDict[key.rx] as! String
- var rx = "Normal_communication".da_localizedStr()
- if self.isOld!{
- rx = ""
- }
- self.rxArr?.append(rx)
-
- self.paramData = ParamData(BatRateVolt: BatRateVolt,
- BatTypeSet: BatTypeSet,
- BatOverVolt: BatOverVolt,
- BatChgLimitVolt: BatChgLimitVolt,
- BatConstChgVolt: BatConstChgVolt,
- BatImprovChgVolt: BatImprovChgVolt,
- BatFloatChgVolt: BatFloatChgVolt,
- BatImprovChgBackVolt: BatImprovChgBackVolt,
- BatOverDischgBackVolt: BatOverDischgBackVolt,
- BatUnderVolt: BatUnderVolt,
- BatOverDischgVolt: BatOverDischgVolt,
- BatDischgLimitVolt: BatDischgLimitVolt,
- BatOverDischgDelayTime: BatOverDischgDelayTime,
- BatConstChgTime: BatConstChgTime,
- BatImprovChgTime: BatImprovChgTime,
- BatConstChgGapTime: BatConstChgGapTime,
- CoeffTemperCompen: CoeffTemperCompen,
- ChgMaxTemper: ChgMaxTemper,
- ChgMinTemper: ChgMinTemper,
- DisChagMaxTemper: DisChagMaxTemper,
- DisChaMinTemper: DisChaMinTemper,
- DcLoadMode: DcLoadMode,
- LightCtrlDelayTime: LightCtrlDelayTime,
- LightCtrlVolt: LightCtrlVolt,
- tx: tx,
- rx: rx,
- BattEqualChgImmediate: BattEqualChgImmediate,
- CmdPowerOnOff: CmdPowerOnOff)
-
-
- self.batteryArr?.append(BatRateVolt)
- self.batteryArr?.append(BatTypeSet)
-
- log.debug("负载 - \(self.loadArr!)")
- log.debug("充电器- \(self.chargerArr!)")
- self.tableView.reloadData()
- }
- }
- }
- extension SBTPramSettingVCtr: UITableViewDelegate,UITableViewDataSource{
-
- func numberOfSections(in tableView: UITableView) -> Int {
- return 5
- }
-
- func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
- let isExpand = isExpandArray[section]
- if isExpand == "1" {
- return 1
- }else{
- return 0
- }
- }
-
- func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
- let header = tableView.dequeueReusableHeaderFooterView(withClass: SBTHeaderView.self)
-
- header.backgroundView?.backgroundColor = UIColor.white
- if section == 0 || section == 1 {
- header.isPointShow = true
- }else{
- header.isPointShow = false
- }
- let titles = ["Battery_settings".da_localizedStr(),"Charger_settings".da_localizedStr(),"Load_settings".da_localizedStr(),"TX_port_function".da_localizedStr(),"RX_port_function".da_localizedStr()]
- header.title = titles[section]
- if self.isExpandArray[section] == "0" {// 收起--> 展开
- header.foldStr = "Expand".da_localizedStr()
- }else{
- header.foldStr = "Retract".da_localizedStr()
- }
- header.foldCalk = {() in
- if self.isExpandArray[section] == "0" {// 收起--> 展开
- self.isExpandArray.remove(at: section)
- self.isExpandArray.insert("1", at: section)
-
- }else{
- self.isExpandArray.remove(at: section)
- self.isExpandArray.insert("0", at: section)
- }
- let indexP = IndexPath(item: 0, section: section)
- let range = NSMakeRange(indexP.section, 1)
- let indexSet : NSIndexSet = NSIndexSet(indexesIn: range)
- self.tableView.reloadSections(indexSet as IndexSet , with: .fade)
- }
-
-
- return header
- }
-
- func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
- return 50
- }
-
- func tableView(_ tableView: UITableView, estimatedHeightForHeaderInSection section: Int) -> CGFloat {
- return 50
- }
- func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
- return 0.01
- }
-
- func tableView(_ tableView: UITableView, estimatedHeightForFooterInSection section: Int) -> CGFloat {
- return 0.01
- }
- func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
- if indexPath.section == 1 {
- return 110 * 10 + 30
- }else if indexPath.section == 2 {
- return 110 * 2
- }
- return 110
-
- }
- //缓存高度 这个 跟定时器一起使用
- func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
- if indexPath.section == 1 {
- return 110 * 10 + 30
- }else if indexPath.section == 2 {
- return 110 * 2
- }
- return 110
- }
-
- func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
- if indexPath.section == 0 {
- var cell = tableView.dequeueReusableCell(withIdentifier: batteryCellID) as? SBTParamSet_BatteryCell
- cell?.voltageStr = self.batteryArr?.first
- cell?.batteryTypeStr = self.batteryArr?.last
- cell?.autoRecognition = self.autoRecognition
- if cell == nil {
- cell = SBTParamSet_BatteryCell(style: .default, reuseIdentifier: batteryCellID)
- }
- cell?.itemdidSelectCallback = { (index) in
- let batteryVC = SBTSetBatteryVCtr()
- batteryVC.isDemo = self.isDemo
- batteryVC.selectedIndex = index
- batteryVC.voltageStr = self.batteryArr?.first
- batteryVC.batteryTypeStr = self.batteryArr?.last
- batteryVC.maxVolt = self.maxVolt
- batteryVC.isAuto = self.isAuto
- batteryVC.batRateVolt = self.batRateVolt
- batteryVC.completehandle = { (str) in
- if self.isDemo == true{
- self.batteryArr![1] = str!
- log.debug("---- 回传电池类型 --- \(str)")
- self.tableView.reloadData()
- }else{
- self.reloadCallback()
- }
- }
- for subview in batteryVC.view.subviews {
- log.debug(subview)
- let transitionView = NSClassFromString("UITransitionView")!.class()
- if subview.isMember(of: transitionView){
- subview.backgroundColor = UIColor.clear
- log.debug("111")
- }else{
- log.debug("没有")
- }
-
- }
-
- batteryVC.show()
- }
- cell?.selectionStyle = .none
-
- return cell!
- }else if indexPath.section == 1{
- var cell = tableView.dequeueReusableCell(withIdentifier: chargerCellID) as? SBTParamSet_ChargerCell
- // cell?.getData(chargerArr)
- cell?.isOld = self.isOld;
- cell?.CellBatteryType = AppShare.batteryType
- cell?.dataSources = chargerArr
-
- if cell == nil {
- cell = SBTParamSet_ChargerCell(style: .default, reuseIdentifier: chargerCellID)
- }
- cell?.itemdidSelectedCallBack = { (selectedIndexPath) in
- let changerVC = SBTSetChargeVCtr()
- changerVC.MaxVoltage = self.MaxVoltage
- changerVC.isOld = self.isOld
- changerVC.isDemo = self.isDemo
- if self.isDemo == true{
- changerVC.IchageRage = "20.00"
- }else{
- changerVC.IchageRage = self.IchageRage
- }
-
- changerVC.selectedIndexPath = selectedIndexPath
- changerVC.CellBatteryType = AppShare.batteryType
- changerVC.Multiple = self.Multiple
- log.debug("当前页选择的seleceted \(selectedIndexPath)")
- changerVC.dataSources = self.chargerArr
-
- changerVC.completehandle = {
- self.reloadCallback()
- }
-
-
- for subview in changerVC.view.subviews {
- log.debug(subview)
- let transitionView = NSClassFromString("UITransitionView")!.class()
- if subview.isMember(of: transitionView){
- subview.backgroundColor = UIColor.clear
- log.debug("111")
- }else{
- log.debug("没有")
- }
- }
- changerVC.show()
- }
- cell?.selectionStyle = .none
- return cell!
- }else if indexPath.section == 2 {
- var cell = tableView.dequeueReusableCell(withIdentifier: loadCellID) as? SBTParamSet_LoadCell
- cell?.dataSource = loadArr
-
- if cell == nil {
- cell = SBTParamSet_LoadCell(style: .default, reuseIdentifier: loadCellID)
- }
- cell?.itemdidSelectedCallBack = { (index) in
- let loadVC = SBTSetLoadVCtr()
- loadVC.isDemo = self.isDemo
- loadVC.selectedIndex = index
- loadVC.dataSource = self.loadArr
- loadVC.completehandle = {
- self.reloadCallback()
- // self.readAction()
- }
- for subview in loadVC.view.subviews {
- log.debug(subview)
- let transitionView = NSClassFromString("UITransitionView")!.class()
- if subview.isMember(of: transitionView){
- subview.backgroundColor = UIColor.clear
- log.debug("111")
- }else{
- log.debug("没有")
- }
-
- }
- loadVC.show()
- }
- cell?.selectionStyle = .none
-
- return cell!
- }else if indexPath.section == 3 {
- var cell = tableView.dequeueReusableCell(withIdentifier: TxCellID) as? SBTParamSet_TXCell
- cell?.isOld = self.isOld
-
- cell?.tx = txArr!.first
- if cell == nil {
- cell = SBTParamSet_TXCell(style: .default, reuseIdentifier: TxCellID)
- }
- cell?.itemdidSelectCallback = {
- let txVC = SBTSetTxVCtr()
- txVC.isDemo = self.isDemo
- txVC.tx = self.txArr!.first
- txVC.completehandle = {
- // self.readAction()
- self.reloadCallback()
- }
- for subview in txVC.view.subviews {
- log.debug(subview)
- let transitionView = NSClassFromString("UITransitionView")!.class()
- if subview.isMember(of: transitionView){
- subview.backgroundColor = UIColor.clear
- log.debug("111")
- }else{
- log.debug("没有")
- }
-
- }
- txVC.show()
- }
- cell?.selectionStyle = .none
-
- return cell!
- }else {
- var cell = tableView.dequeueReusableCell(withIdentifier: RxCellID) as? SBTParamSet_RXCell
- cell?.isOld = self.isOld
- cell?.rx = rxArr?.first
- if cell == nil {
- cell = SBTParamSet_RXCell(style: .default, reuseIdentifier: RxCellID)
- }
- cell?.itemdidSelectCallback = {
- let rxVC = SBTSetRxVCtr()
- rxVC.rx = self.rxArr?.first
- rxVC.isDemo = self.isDemo
- rxVC.completehandle = {
- self.reloadCallback()
- }
- for subview in rxVC.view.subviews {
- log.debug(subview)
- let transitionView = NSClassFromString("UITransitionView")!.class()
- if subview.isMember(of: transitionView){
- subview.backgroundColor = UIColor.clear
- log.debug("111")
- }else{
- log.debug("没有")
- }
-
- }
- rxVC.show()
- }
- cell?.selectionStyle = .none
-
- return cell!
- }
-
- }
-
-
- func reloadCallback() {
-
- DispatchQueue.main.async {
- // let loading = SBTReadLoadingVCtr()
- // loading.deviceName = "Set_parameter".da_localizedStr()
- // loading.message = "Setting_parameter".da_localizedStr()
- // loading.show()
- // loading.dismiss(3)
- self.tableView.reloadData()
- }
-
-
- // self.readAction()
- self.perform(#selector(readAction), with: nil, afterDelay: 3)
- self.perform(#selector(reloadTable), with: nil, afterDelay: 4)
- self.perform(#selector(reloadSuccess), with: nil, afterDelay: 4.5)
- }
-
- @objc func reloadSuccess() {
- g_showHUD("Successful".da_localizedStr())
- }
-
- @objc func reloadTable() {
- log.debug("修改之后回调数据 -- \(paramDataDict)")
- self.tableView.reloadData()
- }
-
-
- }
- extension SBTPramSettingVCtr{
-
- //读取名称
- func readdata_0049(_ reciveData : String){
- let str0 = reciveData
- log.debug("处理真实数据 - \(str0)")
-
- var num5 = UUUtils.string(fromHexString: str0.subString(start: 7 , length: str0.count - 12))
- log.debug("要解析的十六进制 \( str0.subString(start: 7 , length: str0.count - 12))")
- num5 = num5?.trimmingCharacters(in: .whitespaces) //过滤开头结尾空白
- set_deviceName = num5
- log.debug("设备名称 \(num5)")
- if num5 == nil || num5 == ""{
-
- let ChineseString = UUUtils.deUnicodeString(fromHexString: str0.subString(start: 7 , length: str0.count - 12))
- log.debug("设备中文名称 \(ChineseString!)")
- set_deviceName = ChineseString!
- }
-
- }
- //实时数据
- func realdata_000A(_ reciveData : String) {
- let str0 = reciveData
- log.debug("处理真实数据 - \(str0)")
-
- //系统支持的最高电压
- let num00 = UUUtils.numberHexString(str0.subString(start: 7 , length: 2))
- log.debug("系统支持的最高电压: \(num00!)")
- paramDataDict[key.MaxVolt] = "\(num00!)"
- self.MaxVoltage = "\(num00!)"
-
- let num0 = UUUtils.numberHexString(str0.subString(start: 7 + 2, length: 2))
- log.debug("额定充电电流: \(num0!)")
- paramDataDict[key.IchageRage] = String(format: "%.2f", num0!.doubleValue)
- self.IchageRage = String(format: "%.2f", num0!.doubleValue)
-
- }
-
-
- //温度处理
- func temp(with num:NSNumber)-> String{
- let numInt = num.intValue
- // let q1 = UUUtils.numberHexString(q)?.intValue
-
- let q2 = numInt & 128
- print("判断正负\(q2)")
- if q2 != 128 {
- log.debug("温度\(num.floatValue )")
- return "\(num.intValue )"
-
- }else{
-
- log.debug("温度: -\(numInt & 127 )")
- return "-\(numInt & 127 )"
- }
- }
-
- func realdata_E001(_ reciveData : String) {
- let str0 = reciveData
- log.debug("处理真实数据 - \(str0)")
- //e001
- // 判断是否自动识别
- let num0 = UUUtils.numberHexString(str0.subString(start: 7 , length: 4))
- log.debug(" 最大充电电流- \(String(format: "%.2f", num0!.floatValue * 0.01))")
- paramDataDict[key.MaxChargeCurrent] = "\(String(format: "%.2f", num0!.floatValue * 0.01))"
- }
-
- func realdata_E003(_ reciveData : String) {
- let str0 = reciveData
- log.debug("处理真实数据 - \(str0)")
-
- //e003
- if self.isOld == true {
-
- }
- // FF
- let FF = str0.subString(start: 7, length: 2)
-
- if FF == "FF" || FF == "ff"{
- paramDataDict[key.autoRecognition] = "1"
- // 判断是否自动识别
- let num0 = UUUtils.numberHexString(str0.subString(start: 7 + 2 , length: 2))
- log.debug("系统电压设置 - \(num0!)")
- if num0 == 0 {
- paramDataDict[key.BatRateVolt] = "Auto".da_localizedStr()
- paramDataDict[key.autoRecognition] = "1"
- self.batRateVolt = "Auto".da_localizedStr()
- }else{
- paramDataDict[key.BatRateVolt] = "\(num0!)"
- self.batRateVolt = "\(num0!)"
- }
-
- self.isAuto = true
-
-
-
- }else{
- paramDataDict[key.autoRecognition] = "0"
- self.isAuto = true
- // 判断是否自动识别
- let num0 = UUUtils.numberHexString(str0.subString(start: 7 , length: 2))
- log.debug("系统电压设置 - \(num0!)")
- if num0 == 0 {
- paramDataDict[key.BatRateVolt] = "Auto".da_localizedStr()
- paramDataDict[key.autoRecognition] = "1"
- self.batRateVolt = "Auto".da_localizedStr()
- }else{
- paramDataDict[key.BatRateVolt] = "\(num0!)"
- self.batRateVolt = "\(num0!)"
- }
- }
-
- //18 0c
-
- //e004
- let num1 = UUUtils.numberHexString(str0.subString(start: 7 + 4 , length: 4))
-
- var batterytype = ""
- switch num1?.intValue {
- case 0:
- batterytype = "User-defined".da_localizedStr()
- case 1:
- batterytype = "Vented_lead_acid_battery_FLD".da_localizedStr()
- case 2:
- batterytype = "Lead_acid_battery_SLD".da_localizedStr()
- case 3:
- batterytype = "Gel_lead_acid_GEL".da_localizedStr()
- case 4:
- batterytype = "Lithium_iron_phosphate_battery_LI".da_localizedStr()
- case 5:
- batterytype = "三元锂电池".da_localizedStr()
- case 6:
- batterytype = "Lithium_iron_phosphate_battery_LI".da_localizedStr()
- case 7:
- batterytype = "超级电容".da_localizedStr()
- case 10:
- batterytype = "自定义(铅酸专用)".da_localizedStr()
- default: break
-
- }
- log.debug("电池类型: \(batterytype)")
- paramDataDict[key.BatTypeSet] = "\(batterytype)"
- //e005
- let num2 = UUUtils.numberHexString(str0.subString(start: 7 + 4 * 2 , length: 4))
- log.debug("超压电压: \(num2!.floatValue * 0.1)")
- paramDataDict[key.BatOverVolt] = "\(num2!.floatValue * 0.1)"
- //e006
- let num3 = UUUtils.numberHexString(str0.subString(start: 7 + 4 * 3, length: 4))
- //BatChgLimitVolt
- log.debug("充电限制电压:\(num3!.floatValue * 0.1)")
- paramDataDict[key.BatChgLimitVolt] = "\(num3!.floatValue * 0.1)"
- //e007
- let num4 = UUUtils.numberHexString(str0.subString(start: 7 + 4 * 4, length: 4))
- log.debug("均衡充电电压\(num4!.floatValue * 0.1)")
- paramDataDict[key.BatConstChgVolt] = String(format: "%.1f", num4!.floatValue * 0.1)
- //e008
- let num5 = UUUtils.numberHexString(str0.subString(start: 7 + 4 * 5, length: 4))
- log.debug("提升充电电压/过充返回电压\(num5!.floatValue * 0.1)")
- paramDataDict[key.BatImprovChgVolt] = "\(String(format: "%.1f", num5!.floatValue * 0.1))"
- //e009
- let num6 = UUUtils.numberHexString(str0.subString(start: 7 + 4 * 6, length: 4))
- log.debug("浮充充电电压/过充返回电压\(num6!.floatValue * 0.1)")
- paramDataDict[key.BatFloatChgVolt] = "\(num6!.floatValue * 0.1)"
- //e00a
- let num7 = UUUtils.numberHexString(str0.subString(start: 7 + 4 * 7, length: 4))
- log.debug("提升充电返回电压\(num7!.floatValue * 0.1)")
-
- paramDataDict[key.BatImprovChgBackVolt] = String(format: "%.1f", num7!.floatValue * 0.1)
- //e00b
- let num8 = UUUtils.numberHexString(str0.subString(start: 7 + 4 * 8, length: 4))
- log.debug("过放返回电压\(num8!.floatValue * 0.1)")
- paramDataDict[key.BatOverDischgBackVolt] = "\(num8!.floatValue * 0.1)"
- //e00c
- let num9 = UUUtils.numberHexString(str0.subString(start: 7 + 4 * 9, length: 4))
- log.debug("欠压警告电压\(num9!.floatValue * 0.1)")
- paramDataDict[key.BatUnderVolt] = "\(num9!.floatValue * 0.1)"
- //e00d
- let num10 = UUUtils.numberHexString(str0.subString(start: 7 + 4 * 10, length: 4))
- log.debug("过放电压\(num10!.floatValue * 0.1)")
- paramDataDict[key.BatOverDischgVolt] = "\(num10!.floatValue * 0.1)"
- //e00e
- let num11 = UUUtils.numberHexString(str0.subString(start: 7 + 4 * 11, length: 4))
- log.debug("放电限制电压\(num11!.floatValue * 0.1)")
- paramDataDict[key.BatDischgLimitVolt] = "\(num11!.floatValue * 0.1)"
-
- //e010
- let num13 = UUUtils.numberHexString(str0.subString(start: 7 + 4 * 13, length: 4))
- log.debug("过放延时时间\(num13!)")
- paramDataDict[key.BatOverDischgDelayTime] = "\(num13!)"
- //e011
- let num14 = UUUtils.numberHexString(str0.subString(start: 7 + 4 * 14, length: 4))
- log.debug("均衡充电时间\(num14!)")
- paramDataDict[key.BatConstChgTime] = "\(num14!)"
- //e012
- let num15 = UUUtils.numberHexString(str0.subString(start: 7 + 4 * 15, length: 4))
- log.debug("提升充电时间 \(num15!)")
- paramDataDict[key.BatImprovChgTime] = "\(num15!)"
- //e013
- let num16 = UUUtils.numberHexString(str0.subString(start: 7 + 4 * 16, length: 4))
- log.debug("均衡充电间隔\(num16!)")
- paramDataDict[key.BatConstChgGapTime] = "\(num16!)"
- //e014
- let num17 = UUUtils.numberHexString(str0.subString(start: 7 + 4 * 17, length: 4))
- log.debug("温度补偿系数\(num17!)")
- paramDataDict[key.CoeffTemperCompen] = "\(num17!)"
- //e015
- let num18 = UUUtils.numberHexString(str0.subString(start: 7 + 4 * 18, length: 4))
- log.debug("充电上限温度\(temp(with: num18!))")
- paramDataDict[key.ChgMaxTemper] = "\(temp(with: num18!))"
- //e016
- let num19 = UUUtils.numberHexString(str0.subString(start: 7 + 4 * 19, length: 4))
- log.debug("充电下限温度\(temp(with: num19!))")
- paramDataDict[key.ChgMinTemper] = "\(temp(with: num19!))"
- //e017
- let num20 = UUUtils.numberHexString(str0.subString(start: 7 + 4 * 20, length: 4))
- log.debug("放电上限温度\(temp(with: num20!))")
- paramDataDict[key.DisChagMaxTemper] = "\(temp(with: num20!))"
- //e018
- let num21 = UUUtils.numberHexString(str0.subString(start: 7 + 4 * 21, length: 4))
-
- log.debug("放电下限温度\(temp(with: num21!))")
- paramDataDict[key.DisChaMinTemper] = "\(temp(with: num21!))"
- //e01d
- let num26 = UUUtils.numberHexString(str0.subString(start: 7 + 4 * 26, length: 4))
-
- var loadwordmode = ""
- switch num26?.intValue {
- case 0:
- loadwordmode = "Light_control".da_localizedStr()
- case 1:
- loadwordmode = "Light_control,_delay_1_hour".da_localizedStr()
- case 2:
- loadwordmode = "Light_control,_delay_2_hours".da_localizedStr()
- case 3:
- loadwordmode = "Light_control,_delay_3_hours".da_localizedStr()
- case 4:
- loadwordmode = "Light_control,_delay_4_hours".da_localizedStr()
- case 5:
- loadwordmode = "Light_control,_delay_5_hours".da_localizedStr()
- case 6:
- loadwordmode = "Light_control,_delay_6_hours".da_localizedStr()
- case 7:
- loadwordmode = "Light_control,_delay_7_hours".da_localizedStr()
- case 8:
- loadwordmode = "Light_control,_delay_8_hours".da_localizedStr()
- case 9:
- loadwordmode = "Light_control,_delay_9_hours".da_localizedStr()
- case 10:
- loadwordmode = "Light_control,_delay_10_hours".da_localizedStr()
- case 11:
- loadwordmode = "Light_control,_delay_11_hours".da_localizedStr()
- case 12:
- loadwordmode = "Light_control,_delay_12_hours".da_localizedStr()
- case 13:
- loadwordmode = "Light_control,_delay_13_hours".da_localizedStr()
- case 14:
- loadwordmode = "Light_control,_delay_14_hours".da_localizedStr()
- case 15:
- loadwordmode = "Manual_mode".da_localizedStr()
- case 16:
- loadwordmode = "Debug_mode".da_localizedStr()
- case 17:
- loadwordmode = "Normal-on_mode".da_localizedStr()
- case 18:
- loadwordmode = "Timed_mode".da_localizedStr()
-
- default:
- break
- }
- log.debug("直流负载工作模式\(loadwordmode)")
- paramDataDict[key.DcLoadMode] = "\(loadwordmode)"
- //e01e
- let num27 = UUUtils.numberHexString(str0.subString(start: 7 + 4 * 27, length: 4))
- log.debug("光控延时时间\(num27!)")
- paramDataDict[key.LightCtrlDelayTime] = "\(num27!)"
- //d01f
- let num28 = UUUtils.numberHexString(str0.subString(start: 7 + 4 * 28, length: 4))
- log.debug("光控电压\(num28!)")
- paramDataDict[key.LightCtrlVolt] = "\(num28!)"
- }
-
- func realdata_DF00(_ reciveData : String) {
- let str0 = reciveData
- log.debug("处理真实数据 - \(str0)")
- // <ff0302 0000 9190> ff0302 0c0c 9495
- let num0 = UUUtils.numberHexString(str0.subString(start: 7, length: 4))
- log.debug("开关控制 —— \(num0)")
- var cmd = ""
- if num0?.intValue == 0 {
- cmd = "Off".da_localizedStr()
- }else if num0?.intValue == 1{
- cmd = "On".da_localizedStr()
- }
- paramDataDict[key.CmdPowerOnOff] = cmd
- }
-
- func realdata_DF0D(_ reciveData : String) {
- let str0 = reciveData
- log.debug("处理真实数据 - \(str0)")
- // <ff030200 009190>
- let num0 = UUUtils.numberHexString(str0.subString(start: 7, length: 4))
- log.debug("手动均衡 —— \(num0)")
- var canhandle = ""
- if num0?.intValue == 0 {
- canhandle = "Prohibited".da_localizedStr()
- }else if num0?.intValue == 1{
- canhandle = "Enable".da_localizedStr()
- }
- paramDataDict[key.BattEqualChgImmediate] = canhandle
-
- }
-
- func realdata_E021(_ reciveData : String) {
- let str0 = reciveData
- log.debug("处理真实数据 - \(str0)")
- let num0 = UUUtils.getBinaryByHex(str0.subString(start: 7, length: 4))
- //("0000000100000000")
- //00 000 001 00000000
- log.debug("E021 —— \(num0!)")
- //RX
- let rx = num0?.subString(start: 2, length: 3)
-
- var rx_function = ""
- if rx == "000"{
- rx_function = "Normal_communication".da_localizedStr()
- }
- // else if rx == "001"{
- // rx_function = "远程开关"
- //
- // }else if rx == "010"{
- // rx_function = "负载输出设置"
- //
- // }else if rx == "011"{
- // rx_function = "负载输出开/关 反相"
- //
- // }else if rx == "100"{
- // rx_function = "负载输出开/关 正常"
- // }
- log.debug("Rx端口 \(rx_function)")
- paramDataDict[key.rx] = "\(rx_function)"
- let tx = num0?.subString(start: 5, length: 3)
- log.debug("")
-
- var tx_function = ""
- if tx == "000" {
- tx_function = "Normal_communication".da_localizedStr()
- }
- // else if tx == "001"{
- // tx_function = "虚拟负载输出"
- // }else if tx == "010"{
- // tx_function = "每0.01kwh脉冲"
- // }else if tx == "011"{
- // tx_function = "灯光调暗(pwm正常)"
- // }else if tx == "100"{
- // tx_function = "灯光调暗(pwm反相)"
- // }
-
- log.debug("tx端口 \(tx_function)")
- paramDataDict[key.tx] = "\(tx_function)"
-
- loadUIRefresh()
-
- }
-
-
- }
|