123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650 |
- //
- // SBTReadSettingParamVCtr.swift
- // SolarBT
- //
- // Created by weclouds on 2019/5/24.
- // Copyright © 2019 weclouds. All rights reserved.
- //
- import UIKit
- import RxCocoa
- import RxSwift
- struct FileInfo {
- var fileName : String?
- var isDelete : Bool?
- var isInBox : Bool?
- }
- class SBTReadSettingParamVCtr: UIViewController {
-
- var isDemo: Bool?
- var isOld : Bool?
- var peripheralName :String?
- var MaxVoltage : String?
- var IchageRage: String?
- var contentURL :[URL]? = [URL]()
-
- var dataSource2 :[FileInfo]? = [FileInfo]()
- var showDataArr :[FileInfo]? = [FileInfo]()
- //不同电池类型的指令数组
- var userArr :[String] = [String]() //自定义
- var liArr :[String] = [String]()//锂电池数组
- var commentArr:[String] = [String]() // 其他公共指令数组
- var isDelete : Bool? = false
-
- var importCMDArr = [String]()// 导入的数组
-
- var paramContent: String?{
- didSet{
- if let paramContent = self.paramContent {
- //先解密一次 解密base64 字符串
- //截取字符串 去掉最前面三个字符
- //在解密一次 base64 解密
- let encode = paramContent
- let encode1 = encode.fromBase64()
- let encode2 = encode1?.subString(start: 3)
- // print(encode2)
- let code = encode2?.fromBase64()
- // self.contentLabel.text = code
- }else{
- }
- }
- }
- //@IBOutlet weak var contentLabel: UILabel!
-
-
- @IBOutlet weak var contentView: UIView!
- @IBOutlet weak var searchBox: UIView!
- @IBOutlet weak var searchField: UITextField!
- @IBOutlet weak var importBtn: UIButton!
-
-
- var collectionView : UICollectionView?
- override func viewDidLoad() {
- super.viewDidLoad()
- self.title = "Paramter_Import".da_localizedStr()
- // self.contentLabel.text = "从其他应用分享到本app 并完成读取"
- getFileData()
- createUI()
-
- let deleteBtn = UIBarButtonItem(image: UIImage(named: "shanchu"), style: .plain, target: self, action: #selector(deleteAction))
- // self.navigationItem.rightBarButtonItem = deleteBtn
- }
- @objc func deleteAction(_ sender : UIBarButtonItem) {
- self.isDelete = !self.isDelete!
- self.collectionView?.reloadData()
- }
-
- @IBAction func importAction(_ sender: Any) {
-
- if self.importCMDArr.count != 0 {
- let arr = self.importCMDArr
- BabyBluetoothSwift.shareInstance()?.writeData2222(arr, completionHandler: { (result) in
- self.g_toast("Paramter_import_successfully".da_localizedStr())
- })
- let alert = SBTExportDataVCtr()
- if isDemo == true{
- let dict = SBTData().DemoData
- alert.alartTitle = (dict["ProdctName"] as! String)
- }else{
- if self.isOld == true{
- alert.alartTitle = "Paramterimported".da_localizedStr()
- }else{
- alert.alartTitle = (AppShare.dataDict["ProdctName"] as! String)
- }
- }
- alert.loadingImage = UIImage(named: "import")
- alert.message = "Paramter_importing".da_localizedStr()
- alert.show()
- alert.dismiss(2)
- }
- }
-
- @objc func showMessage() {
- g_toast("Paramter_import_successfully".da_localizedStr())
- }
- }
- extension SBTReadSettingParamVCtr{
- func getFileData() {
- self.dataSource2?.removeAll()
- let manager = FileManager.default
-
- let home = NSHomeDirectory() // 获取沙盒根路径
- let url = home + "/Documents/Inbox/"
- let iSExit = manager.fileExists(atPath: url)
-
- if iSExit == true {
- do {
-
- let cintents1 = try manager.contentsOfDirectory(atPath: url)
- print("cintents:\(cintents1)\n")
- for content in cintents1{
- let file = FileInfo(fileName: content, isDelete: false, isInBox: true)
- self.dataSource2?.append(file)
- }
-
- //获取路径名称
- let contentsOfURL = try? manager.contentsOfDirectory(at: URL(string: url)!,
- includingPropertiesForKeys: nil, options: .skipsHiddenFiles)
- print("contentsOfURL: \(contentsOfURL)")
-
- for aURL in contentsOfURL! {
- contentURL?.append(aURL)
- }
-
-
- } catch let error {
- log.debug("Error occurs ---\(error)")
- }
- }
- do {
-
-
-
- let documentPath = URL(fileURLWithPath: NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0])
- let SaveDataPath = documentPath.appendingPathComponent("SaveData")
-
- let cintents2 = try manager.contentsOfDirectory(atPath: SaveDataPath.path)
- print("cintents:\(cintents2)\n")
- for content2 in cintents2{
- let file = FileInfo(fileName: content2, isDelete: false, isInBox: false)
- self.dataSource2?.append(file)
- // self.deleteArr?.append(false)
- // self.isInboxArr?.append(false)
- // self.dataSource?.append(content2)
- }
-
- let contentsOfURL2 = try? manager.contentsOfDirectory(at: SaveDataPath,
- includingPropertiesForKeys: nil, options: .skipsHiddenFiles)
- for bURL in contentsOfURL2! {
- contentURL?.append(bURL)
- }
- for _ in 0..<contentsOfURL2!.count{
-
- }
-
- } catch let error {
- log.debug(" 保存数据 --Error occurs ---\(error)")
- }
-
-
- showDataArr = dataSource2
- self.collectionView?.reloadData()
- }
- func createUI() {
-
- searchField.placeholder = "Enter_keywords_to_search".da_localizedStr()
- importBtn.setTitle("Import".da_localizedStr(), for: UIControl.State.normal)
- let layout = UICollectionViewFlowLayout.init()
- let width = (self.contentView.width - 16) / 5
- let height = 120.0
- layout.itemSize = CGSize(width: Double(width), height: height)
- layout.minimumLineSpacing = 0
- layout.minimumInteritemSpacing = 0
- collectionView = UICollectionView(frame: CGRect.zero, collectionViewLayout: layout)
- collectionView!.backgroundColor = UIColor.white
- collectionView!.delegate = self
- collectionView!.dataSource = self
- collectionView!.register(UINib(nibName: "SBTFileCell", bundle: nil), forCellWithReuseIdentifier: "fileCell")
-
- self.contentView.addSubview(collectionView!)
- collectionView!.snp.makeConstraints { (make) in
- make.top.bottom.equalToSuperview()
- make.left.equalToSuperview().offset(8)
- make.right.equalToSuperview().offset(-8)
- }
- //搜索框外边框
- self.searchBox.layer.masksToBounds = true
- self.searchBox.layer.cornerRadius = 5
- self.searchBox.layer.borderColor = UIColor(hexString: "#D2D2D2")?.cgColor
- self.searchBox.layer.borderWidth = 1.0
- // fillCode
- 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 = self.importBtn.bounds
- bgLayer1.startPoint = CGPoint(x: 1, y: 1)
- bgLayer1.endPoint = CGPoint(x: 0, y: 0)
- importBtn.layer.addSublayer(bgLayer1)
- importBtn.layer.masksToBounds = true
- importBtn.layer.cornerRadius = 22.5
- //
- self.searchField.delegate = self
-
-
- }
- }
- extension SBTReadSettingParamVCtr: UITextFieldDelegate{
- func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
- // let _newFiles = self.dataSource2
- // var filesNS : [FileInfo]
- // if let text = textField.text,
- // let textRange = Range(range, in: text) {
- // let updatedText = text.replacingCharacters(in: textRange,
- // with: string)
- // log.debug("更新的输入 ---\(updatedText)")
- // filesNS = (_newFiles?.filter({ (file) -> Bool in
- // return file.fileName?.contains(updatedText) == true
- // }))!
- // }else{
- // filesNS = _newFiles!
- // }
- //
- // self.dataSource2 = filesNS
- //
- //
- // self.collectionView?.reloadData()
- return true
- }
-
-
- func textFieldDidEndEditing(_ textField: UITextField) {
-
- let _newFiles = self.dataSource2
- var filesNS : [FileInfo]
- if textField.text == "" || textField.text == nil {
-
- filesNS = showDataArr!
- }else{
-
- log.debug("更新的输入 ---\(textField.text!)")
- filesNS = (_newFiles?.filter({ (file) -> Bool in
- return file.fileName?.contains(textField.text!) == true
- }))!
-
- }
- self.dataSource2?.removeAll()
- self.dataSource2 = filesNS
-
- log.debug("新数组 -- \(self.dataSource2)")
- self.collectionView?.reloadData()
- }
- }
- extension SBTReadSettingParamVCtr: UICollectionViewDelegate,UICollectionViewDataSource{
- func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
-
- return self.dataSource2?.count ?? 0
-
- }
-
- func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
- let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "fileCell", for: indexPath) as! SBTFileCell
- let file = self.dataSource2![indexPath.row]
- cell.fileInfo = file
- return cell
-
- }
-
- func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
- let file = self.dataSource2![indexPath.row]
- if self.isDelete == true {
- //删除沙盒内容
-
- let isInbox = file.isInBox
- let manager = FileManager.default
- if isInbox == true {
- let home = NSHomeDirectory() // 获取沙盒根路径
- let url = home + "/Documents/Inbox/" + file.fileName!
- let filePath = URL(fileURLWithPath: url)
- do{
- try manager.removeItem(at: filePath)
- g_showHUD("deleteSussess".da_localizedStr())
- }catch{
- g_showHUD("deleteFail".da_localizedStr())
- }
- }else{
- let documentPath = URL(fileURLWithPath: NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0])
- let SaveDataPath = documentPath.appendingPathComponent("SaveData")
- let filePath = SaveDataPath.appendingPathComponent(file.fileName!)
- do{
- try manager.removeItem(at: filePath)
- g_showHUD("删除成功")
- }catch{
- g_showHUD("删除失败")
- }
- }
-
- // isInboxArr?.remove(at: indexPath.row)
- // dataSource?.remove(at: indexPath.row)
- // deleteArr?.remove(at: indexPath.row)
- dataSource2?.remove(at: indexPath.row)
- self.collectionView?.reloadData()
- }else{
- // log.debug("点击了 \(contentURL![indexPath.row])")
- let fileURL = contentURL![indexPath.row]
- //reading
- do {
- let text2 = try String(contentsOf: fileURL, encoding: .utf8)
- // log.debug(text2)
-
- decodeFileData(text2)
- }
- catch {
- /* error handling here */
- }
- }
-
- }
-
- //处理数据
- func decodeFileData(_ text:String ) {
- //先解密一次 解密base64 字符串
- //截取字符串 去掉最前面三个字符
- //在解密一次 base64 解密
- let encode = text
- let encode1 = encode.fromBase64()
- let encode2 = encode1?.subString(start: 3)
- // print(encode2)
- let code = encode2?.fromBase64()
- log.debug("\(code!)")
-
- //分享来的
- let shareParamDict : [String:String] = stringValueDic(code!)! as! [String : String]
- userArr.removeAll()
- liArr.removeAll()
- commentArr.removeAll()
-
- let key = DeviceDictKey()
- //先设置 电池类型
- let BatTypeSet = shareParamDict[key.BatTypeSet] // 蓄电池类型
-
-
- let batTypeSetHexStr = String(format: "%04X", Int(BatTypeSet!)!)
- let batTypeSet_cmd = "FF06E004" + batTypeSetHexStr
- userArr.append(batTypeSet_cmd)
- commentArr.append(batTypeSet_cmd)
- liArr.append(batTypeSet_cmd)
- // let oldVolt = AppShare.paramDataDict[key.BatRateVolt] as! String
- //参数设置
- let autoRecogn = shareParamDict[key.autoRecognition] // 是否自动识别
- let BatRateVolt = shareParamDict[key.BatRateVolt] //系统电压设置
- var voltage = ""
- //如果是自动识别
- if autoRecogn == "1"{
-
- let oldVolt = String(format: "%2X", Int(AppShare.dataDict[key.BatRateVolt] as! String)!)
- voltage = "FF" + oldVolt
- }else{
- let oldVolt1 = String(format: "%2X", Int(BatRateVolt!)!)
- voltage = oldVolt1 + "00"
- }
- let BatRateVolt_cmd = "FF06E003" + voltage
- userArr.append(BatRateVolt_cmd)
- commentArr.append(BatRateVolt_cmd)
- liArr.append(BatRateVolt_cmd)
- let IchageRage = shareParamDict[key.IchageRage] //最大充电电流
- let IchageRageFloat = Double(IchageRage!)
- let result_int = Int(IchageRageFloat! * 100)
- let IchageRage_cmd = String(format: "FF06E001%04X",result_int)
- userArr.append(IchageRage_cmd)
- commentArr.append(IchageRage_cmd)
- liArr.append(IchageRage_cmd)
-
- if self.isDemo == false {
- if self.isOld == false{
-
- let CmdPowerOnOff = shareParamDict[key.CmdPowerOnOff] // 开关控制
- if CmdPowerOnOff != "" || CmdPowerOnOff != "--"{
- let CmdPowerOnOff_cmd = String(format: "FF06DF00%04X", Int(CmdPowerOnOff!)!)
- userArr.append(CmdPowerOnOff_cmd)
- commentArr.append(CmdPowerOnOff_cmd)
- liArr.append(CmdPowerOnOff_cmd)
- }
-
- }
-
- }
-
-
- if self.isOld == false {
- let ChgMaxTemper = shareParamDict[key.ChgMaxTemper] // 充电上限温度
- if ChgMaxTemper != "--"{
- let ChgMaxTemper_cmd = String(format: "FF06E015%04X", Int(ChgMaxTemper!)!)
- userArr.append(ChgMaxTemper_cmd)
- commentArr.append(ChgMaxTemper_cmd)
- liArr.append(ChgMaxTemper_cmd)
- }
-
-
- let ChgMinTemper = shareParamDict[key.ChgMinTemper] // 充电下限温度
- if ChgMinTemper != "--"{
- // 先判断正负
- var ChgMinTemper_cmd = ""
- let ChgMinTemperInt = Int(ChgMinTemper!)
- if ChgMinTemperInt! < 0 { //负数
- let resutA = ChgMinTemper!.subString(start: 1)
- let resubB = Int(resutA)
- let resubC = resubB! | 128
- ChgMinTemper_cmd = String(format: "FF06E016%04X", resubC) // 转化为十六进制
- }else{// 正数
- ChgMinTemper_cmd = String(format: "FF06E016%04X", ChgMinTemperInt!)
- }
- userArr.append(ChgMinTemper_cmd)
- commentArr.append(ChgMinTemper_cmd)
- liArr.append(ChgMinTemper_cmd)
- }
-
- }
-
-
- //==============================分割线================
- let BatOverVolt = shareParamDict[key.BatOverVolt] //超压电压
- let BatOverVolt_cmd = setVoltCMD(BatOverVolt!, firstcmd: "E005")
- userArr.append(BatOverVolt_cmd)
-
- let BatChgLimitVolt = shareParamDict[key.BatChgLimitVolt] //充电限制电压
- let BatChgLimitVolt_cmd = setVoltCMD(BatChgLimitVolt!, firstcmd: "E006")
- userArr.append(BatChgLimitVolt_cmd)
-
- let BatImprovChgVolt = shareParamDict[key.BatImprovChgVolt] // 提升充电电压/过充电压
- let BatImprovChgVolt_cmd = setVoltCMD(BatImprovChgVolt!, firstcmd: "E008")
- userArr.append(BatImprovChgVolt_cmd)
-
- let BatFloatChgVolt = shareParamDict[key.BatFloatChgVolt] //浮充充电电压 /过充返回电压
- let BatFloatChgVolt_cmd = setVoltCMD(BatFloatChgVolt!, firstcmd: "E009")
- userArr.append(BatFloatChgVolt_cmd)
-
- let BatImprovChgBackVolt = shareParamDict[key.BatImprovChgBackVolt] // 提升充电返回电压
- let BatImprovChgBackVolt_cmd = setVoltCMD(BatImprovChgBackVolt!, firstcmd: "E00A")
- userArr.append(BatImprovChgBackVolt_cmd)
-
- let BatImprovChgTime = shareParamDict[key.BatImprovChgTime] //提升充电时间
- let BatImprovChgTime_cmd = String(format: "FF06E012%04X", Int(BatImprovChgTime!)!)
- userArr.append(BatImprovChgTime_cmd)
- //------------------------------
- let CoeffTemperCompen = shareParamDict[key.CoeffTemperCompen] // 温度补偿系数
- let CoeffTemperCompen_cmd = String(format: "FF06E014%04X", Int(CoeffTemperCompen!)!)
- userArr.append(CoeffTemperCompen_cmd)
- commentArr.append(CoeffTemperCompen_cmd)
- //------------------------
- let BatConstChgVolt = shareParamDict[key.BatConstChgVolt] // 均衡充电电压
- let BatConstChgVolt_cmd = setVoltCMD(BatConstChgVolt!, firstcmd: "E007")
- userArr.append(BatConstChgVolt_cmd)
-
- let BatConstChgTime = shareParamDict[key.BatConstChgTime] // 均衡充电时间
- let BatConstChgTime_cmd = String(format: "FF06E011%04X", Int(BatConstChgTime!)!)
- userArr.append(BatConstChgTime_cmd)
-
- let BatConstChgGapTime = shareParamDict[key.BatConstChgGapTime] // 均衡充电间隔 /自动均衡
- let BatConstChgGapTime_cmd = String(format: "FF06E013%04X", Int(BatConstChgGapTime!)!)
- userArr.append(BatConstChgGapTime_cmd)
- if self.isOld == false {
- let BattEqualChgImmediate = shareParamDict[key.BattEqualChgImmediate] // 手动均衡
- let BattEqualChgImmediate_cmd = String(format: "FF06DF0D%04X", Int(BattEqualChgImmediate!)!)
- userArr.append(BattEqualChgImmediate_cmd)
- }
-
-
- let BatOverDischgBackVolt = shareParamDict[key.BatOverDischgBackVolt] //过放返回电压
- let BatOverDischgBackVolt_cmd = setVoltCMD(BatOverDischgBackVolt!, firstcmd: "E00B")
- userArr.append(BatOverDischgBackVolt_cmd)
-
- let BatUnderVolt = shareParamDict[key.BatUnderVolt] // 欠压警告电压
- let BatUnderVolt_cmd = setVoltCMD(BatUnderVolt!, firstcmd: "E00C")
- userArr.append(BatUnderVolt_cmd)
-
- let BatOverDischgVolt = shareParamDict[key.BatOverDischgVolt] // 过放电压
- let BatOverDischgVolt_cmd = setVoltCMD(BatOverDischgVolt!, firstcmd: "E00D")
- userArr.append(BatOverDischgVolt_cmd)
-
- let BatDischgLimitVolt = shareParamDict[key.BatDischgLimitVolt] //放电限制电压
- let BatDischgLimitVolt_cmd = setVoltCMD(BatDischgLimitVolt!, firstcmd: "E00E")
- userArr.append(BatDischgLimitVolt_cmd)
-
- let BatOverDischgDelayTime = shareParamDict[key.BatOverDischgDelayTime] //过放延时时间
- let BatOverDischgDelayTime_cmd = setVoltCMD(BatOverDischgDelayTime!, firstcmd: "E010")
- userArr.append(BatOverDischgDelayTime_cmd)
-
- //==============================================
- if self.isOld == false {
-
- let DisChagMaxTemper = shareParamDict[key.DisChagMaxTemper] // 放电上限温度
- if DisChagMaxTemper != "--"{
- let DisChagMaxTemper_cmd = String(format: "FF06E017%04X", Int(DisChagMaxTemper!)!)
- userArr.append(DisChagMaxTemper_cmd)
- commentArr.append(DisChagMaxTemper_cmd)
- liArr.append(DisChagMaxTemper_cmd)
- }
-
-
- let DisChaMinTemper = shareParamDict[key.DisChaMinTemper] // 放电下限温度
- if DisChaMinTemper != "--"{
- // 先判断正负
- var DisChaMinTemper_cmd = ""
- let DisChaMinTemperInt = Int(DisChaMinTemper!)
- if DisChaMinTemperInt! < 0 { //负数
- let resutA1 = DisChaMinTemper!.subString(start: 1)
- let resubB1 = Int(resutA1)
- let resubC1 = resubB1! | 128
- DisChaMinTemper_cmd = String(format: "FF06E018%04X", resubC1) // 转化为十六进制
- }else{// 正数
- DisChaMinTemper_cmd = String(format: "FF06E018%04X", DisChaMinTemperInt!)
- }
- userArr.append(DisChaMinTemper_cmd)
- commentArr.append(DisChaMinTemper_cmd)
- liArr.append(DisChaMinTemper_cmd)
- }
-
- }
-
-
- let DcLoadMode = shareParamDict[key.DcLoadMode] // 直流工作模式
- let DcLoadMode_cmd = String(format: "FF06E01D%04X", Int(DcLoadMode!)!)
- userArr.append(DcLoadMode_cmd)
- commentArr.append(DcLoadMode_cmd)
- liArr.append(DcLoadMode_cmd)
-
- let LightCtrlDelayTime = shareParamDict[key.LightCtrlDelayTime] //光控延时时间
- let LightCtrlDelayTime_cmd = String(format: "FF06E01E%04X", Int(LightCtrlDelayTime!)!)
- userArr.append(LightCtrlDelayTime_cmd)
- commentArr.append(LightCtrlDelayTime_cmd)
- liArr.append(LightCtrlDelayTime_cmd)
-
- let LightCtrlVolt = shareParamDict[key.LightCtrlVolt] // 光控电压
- let LightCtrlVolt_cmd = setVoltCMD(LightCtrlVolt!, firstcmd: "E01F")
- userArr.append(LightCtrlVolt_cmd)
- commentArr.append(LightCtrlVolt_cmd)
- liArr.append(LightCtrlVolt_cmd)
-
- let tx = shareParamDict[key.tx]
-
- var tx_funcStr = ""
- if tx == "000"{
- tx_funcStr = "0000"
- }else if tx == "001"{
- tx_funcStr = "0200"
-
- }else if tx == "010"{
- tx_funcStr = "0400"
-
- }else if tx == "011"{
- tx_funcStr = "0600"
-
- }else if tx == "100"{
- tx_funcStr = "0800"
- }
- let tx_cmd = "FF10E021" + tx_funcStr
- userArr.append(tx_cmd)
- commentArr.append(tx_cmd)
- liArr.append(tx_cmd)
-
- let rx = shareParamDict[key.rx]
- var rx_funcStr = ""
- if rx == "000"{
- rx_funcStr = "0000"
- }else if rx == "001"{
- rx_funcStr = "1000"
-
- }else if rx == "010"{
- rx_funcStr = "2000"
-
- }else if rx == "011"{
- rx_funcStr = "3000"
-
- }else if rx == "100"{
- rx_funcStr = "4000"
- }
- let rx_cmd = "FF10E021" + rx_funcStr
- userArr.append(rx_cmd)
- commentArr.append(rx_cmd)
- liArr.append(rx_cmd)
-
- importCMDArr.removeAll()
- if BatTypeSet == "0"{
- self.importCMDArr = userArr
- }else if BatTypeSet == "6"{
- self.importCMDArr = liArr
- }else{
- self.importCMDArr = commentArr
- }
- }
-
- // 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
- }
- }
- func setVoltCMD(_ Volt :String,firstcmd:String) -> String {
- let VoltFloat = (Volt as NSString).doubleValue
- let VoltData = VoltFloat * 10
- let Volt_cmd = String(format: "FF06%@%04X", firstcmd,VoltData) // 转化为十六进制
- return Volt_cmd
- }
- // 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
- }
- /*
-
- */
|