AppShare.swift 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731
  1. //
  2. // AppShare.swift
  3. // SolarStationSwift
  4. //
  5. // Created by weclouds on 2018/7/31.
  6. // Copyright © 2018年 weclouds. All rights reserved.
  7. //
  8. import UIKit
  9. import Toast_Swift
  10. import SwifterSwift
  11. import SnapKit
  12. import JXCategoryView
  13. import BabyBluetooth
  14. import SwiftPopup
  15. import PKHUD
  16. extension UIViewController{
  17. //清除历史数据
  18. @objc func sendclearHistoryDataCMD () {
  19. let arr = ["FF06DF050001"]
  20. //发送数据
  21. let marr = NSMutableArray()
  22. for i in 0..<arr.count {
  23. let dic : NSDictionary = [DataTag:arr[i]]
  24. marr.add(dic)
  25. }
  26. BabyBluetoothSwift.shareInstance()?.writeData1(marr)
  27. }
  28. //清除历史数据 -旧协议
  29. //清除历史数据
  30. @objc func sendclearHistoryDataCMD_old () {
  31. let arr = ["FF7900000001"]
  32. //发送数据
  33. let marr = NSMutableArray()
  34. for i in 0..<arr.count {
  35. let dic : NSDictionary = [DataTag:arr[i]]
  36. marr.add(dic)
  37. }
  38. BabyBluetoothSwift.shareInstance()?.writeData1(marr)
  39. }
  40. //读取设备详情
  41. //读取所有数据
  42. @objc func ReadDeviceDetailData() {
  43. let arr = ["FF03000A0001","FF03000B004E","FF0300FD000D","FF03F000000A","FF03F001000A","FF03F002000A","FF03F003000A","FF03F004000A","FF03F005000A","FF03F006000A","FF03F007000A","FF030115000B","FF03DF0D0001"]
  44. //发送数据
  45. let marr = NSMutableArray()
  46. for i in 0..<arr.count {
  47. let dic : NSDictionary = [DataTag:arr[i]]
  48. marr.add(dic)
  49. }
  50. BabyBluetoothSwift.shareInstance()?.writeData1(marr)
  51. }
  52. //读取累计数据
  53. @objc func readCumulativeData() {
  54. let arr = ["FF03F000000A","FF03F001000A","FF03F002000A","FF03F003000A","FF03F004000A","FF03F005000A","FF03F006000A","FF03F007000A","FF030115000B"]
  55. //发送数据
  56. let marr = NSMutableArray()
  57. for i in 0..<arr.count {
  58. let dic : NSDictionary = [DataTag:arr[i]]
  59. marr.add(dic)
  60. }
  61. BabyBluetoothSwift.shareInstance()?.writeData1(marr)
  62. }
  63. //读取实时数据
  64. @objc func readRealData() {
  65. let arr = ["FF03000A0001","FF03E0030001","FF03E0080001","FF0300FD000D"]
  66. //发送数据
  67. let marr = NSMutableArray()
  68. for i in 0..<arr.count {
  69. let dic : NSDictionary = [DataTag:arr[i]]
  70. marr.add(dic)
  71. }
  72. BabyBluetoothSwift.shareInstance()?.writeData1(marr)
  73. }
  74. //读取实时数据 旧协议
  75. @objc func readRealData_old() {
  76. let arr = ["FF03000A0001","FF03E0030001","FF03E0080001","FF030100000A","FF0301200003"]
  77. //发送数据
  78. let marr = NSMutableArray()
  79. for i in 0..<arr.count {
  80. let dic : NSDictionary = [DataTag:arr[i]]
  81. marr.add(dic)
  82. }
  83. BabyBluetoothSwift.shareInstance()?.writeData1(marr)
  84. }
  85. @objc func readDeviceName() {
  86. let arr = ["FF0300490020"]
  87. //发送数据
  88. let marr = NSMutableArray()
  89. for i in 0..<arr.count {
  90. let dic : NSDictionary = [DataTag:arr[i]]
  91. marr.add(dic)
  92. }
  93. BabyBluetoothSwift.shareInstance()?.writeData1(marr)
  94. }
  95. //读取所有数据
  96. @objc func ReadAllData_old() {
  97. let arr = ["FF03000A0001","FF03000B000F","FF030100000A","FF0301200003","FF03F000000A","FF03F001000A","FF03F002000A","FF03F003000A","FF03F004000A","FF03F005000A","FF03F006000A","FF03F007000A","FF030115000B","FF03E0010001","FF03E003001E","FF03DF000001","FF03DF0D0001","FF03E0210001"]
  98. //发送数据
  99. let marr = NSMutableArray()
  100. for i in 0..<arr.count {
  101. let dic : NSDictionary = [DataTag:arr[i]]
  102. marr.add(dic)
  103. }
  104. BabyBluetoothSwift.shareInstance()?.writeData1(marr)
  105. }
  106. @objc func ReadAllData() {
  107. let arr = ["FF03000A0001","FF03000B000F","FF0300490020","FF0300FD000D","FF03F000000A","FF03F001000A","FF03F002000A","FF03F003000A","FF03F004000A","FF03F005000A","FF03F006000A","FF03F007000A","FF030115000B","FF03E0010001","FF03E003001E","FF03DF000001","FF03DF0D0001","FF03E0210001"]
  108. //发送数据
  109. let marr = NSMutableArray()
  110. for i in 0..<arr.count {
  111. let dic : NSDictionary = [DataTag:arr[i]]
  112. marr.add(dic)
  113. }
  114. BabyBluetoothSwift.shareInstance()?.writeData1(marr)
  115. }
  116. //读取参数设置数据
  117. @objc func ReadSettingParam() {
  118. let arr = ["FF03000A0001","FF03E0010001","FF03E003001E","FF03DF000001","FF03DF0D0001","FF03E0210001"]
  119. //发送数据
  120. let marr = NSMutableArray()
  121. for i in 0..<arr.count {
  122. let dic : NSDictionary = [DataTag:arr[i]]
  123. marr.add(dic)
  124. }
  125. BabyBluetoothSwift.shareInstance()?.writeData1(marr)
  126. }
  127. //负载开关
  128. func setLoadSwich(_ isOn:Bool){
  129. var arr : [String] = [String]()
  130. if isOn == true {
  131. arr = ["FF06010A0080"] // 1000 0000
  132. }else{
  133. arr = ["FF06010A0000"]
  134. }
  135. // let arr = ["FF03000A0001"]
  136. //发送数据
  137. let marr = NSMutableArray()
  138. for i in 0..<arr.count {
  139. let dic : NSDictionary = [DataTag:arr[i]]
  140. marr.add(dic)
  141. }
  142. BabyBluetoothSwift.shareInstance()?.writeData1(marr)
  143. }
  144. //修改名称
  145. func updateDeviceName(_ devicename :String ) {
  146. //将字符串转为
  147. // "FF100049" + "0010" + "20" + devicename
  148. let strCount = String(format: "%04X", devicename.count)
  149. let byteCount = String(format: "%02X", devicename.count * 2)
  150. let cmd = "FF100049" + strCount + byteCount + devicename
  151. let arr = [cmd]
  152. log.debug(cmd)
  153. //发送数据
  154. let marr = NSMutableArray()
  155. for i in 0..<arr.count {
  156. let dic : NSDictionary = [DataTag:arr[i]]
  157. marr.add(dic)
  158. }
  159. BabyBluetoothSwift.shareInstance()?.writeData1(marr)
  160. }
  161. //恢复出厂设置
  162. func reset(){
  163. // let arr = ["FF7800000001"]
  164. let arr = ["FF06DF020001"]
  165. //发送数据
  166. let marr = NSMutableArray()
  167. for i in 0..<arr.count {
  168. let dic : NSDictionary = [DataTag:arr[i]]
  169. marr.add(dic)
  170. }
  171. BabyBluetoothSwift.shareInstance()?.writeData1(marr)
  172. }
  173. //恢复出厂设置
  174. func reset_old(){
  175. let arr = ["FF7800000001"]
  176. // let arr = ["FF06DF010001"]
  177. //发送数据
  178. let marr = NSMutableArray()
  179. for i in 0..<arr.count {
  180. let dic : NSDictionary = [DataTag:arr[i]]
  181. marr.add(dic)
  182. }
  183. BabyBluetoothSwift.shareInstance()?.writeData1(marr)
  184. }
  185. //参数设置
  186. // 设置负载参数
  187. func BatchSettingParam(_ cmdArr:[String]) {
  188. let arr = cmdArr
  189. //发送数据
  190. let marr = NSMutableArray()
  191. for i in 0..<arr.count {
  192. let dic : NSDictionary = [DataTag:arr[i]]
  193. marr.add(dic)
  194. }
  195. BabyBluetoothSwift.shareInstance()?.writeData1(marr)
  196. }
  197. // 设置电池参数
  198. func setBatteryParam(_ cmdArr:[String]) {
  199. let arr = cmdArr
  200. //发送数据
  201. let marr = NSMutableArray()
  202. for i in 0..<arr.count {
  203. let dic : NSDictionary = [DataTag:arr[i]]
  204. marr.add(dic)
  205. }
  206. BabyBluetoothSwift.shareInstance()?.writeData1(marr)
  207. }
  208. // 设置充电器参数
  209. func setChargerParam(_ cmdArr:[String]) {
  210. let arr = cmdArr
  211. //发送数据
  212. let marr = NSMutableArray()
  213. for i in 0..<arr.count {
  214. let dic : NSDictionary = [DataTag:arr[i]]
  215. marr.add(dic)
  216. }
  217. BabyBluetoothSwift.shareInstance()?.writeData1(marr)
  218. }
  219. // 设置负载参数
  220. func setLoadParam(_ cmdArr:[String]) {
  221. let arr = cmdArr
  222. //发送数据
  223. let marr = NSMutableArray()
  224. for i in 0..<arr.count {
  225. let dic : NSDictionary = [DataTag:arr[i]]
  226. marr.add(dic)
  227. }
  228. BabyBluetoothSwift.shareInstance()?.writeData1(marr)
  229. }
  230. // 设置tx端口功能 bit[9:11]
  231. func txfunction(_ type: Int) {
  232. //0000 000 0 00000000
  233. var funcStr = ""
  234. switch type {
  235. case 0: // 0000 000 0 00000000 == 0000
  236. funcStr = "0000"
  237. case 1: // 0000001000000000 == 0200
  238. funcStr = "0200"
  239. case 2: // 0000010000000000 == 0400
  240. funcStr = "0400"
  241. case 3: // 0000011000000000 == 0600
  242. funcStr = "0600"
  243. case 4: // 0000100000000000 == 0800
  244. funcStr = "0800"
  245. default:
  246. break
  247. }
  248. let cmd = "FF10E021" + funcStr
  249. let arr = [cmd]
  250. //发送数据
  251. let marr = NSMutableArray()
  252. for i in 0..<arr.count {
  253. let dic : NSDictionary = [DataTag:arr[i]]
  254. marr.add(dic)
  255. }
  256. BabyBluetoothSwift.shareInstance()?.writeData1(marr)
  257. }
  258. // 设置rx端口功能 bit[12:14]
  259. func rxfunction(_ type: Int) {
  260. //0 000 0000 00000000
  261. var funcStr = ""
  262. switch type {
  263. case 0: // 0 000 000 0 00000000 == 0000
  264. funcStr = "0000"
  265. case 1: // 0001000000000000 == 0200
  266. funcStr = "1000"
  267. case 2: // 0010000000000000 == 0400
  268. funcStr = "2000"
  269. case 3: // 0011000000000000 == 0600
  270. funcStr = "3000"
  271. case 4: // 0100000000000000 == 0800
  272. funcStr = "4000"
  273. default:
  274. break
  275. }
  276. let cmd = "FF10E021" + funcStr
  277. let arr = [cmd]
  278. //发送数据
  279. let marr = NSMutableArray()
  280. for i in 0..<arr.count {
  281. let dic : NSDictionary = [DataTag:arr[i]]
  282. marr.add(dic)
  283. }
  284. BabyBluetoothSwift.shareInstance()?.writeData1(marr)
  285. }
  286. }
  287. extension UIView {
  288. /**
  289. brief view的阴影
  290. opacity 不透明度
  291. */
  292. func setShadow(_ opacity : Float) {
  293. self.layer.backgroundColor = UIColor(red: 1, green: 1, blue: 1, alpha: 1).cgColor
  294. self.layer.masksToBounds = false
  295. self.layer.shadowOffset = CGSize(width: -1, height: 1)
  296. self.layer.shadowOpacity = opacity
  297. }
  298. /**
  299. brief 图片阴影
  300. shadowColor: 图片阴影
  301. opacity 不透明度
  302. */
  303. func setShadow(_ shadowColor:CGColor, opacity : Float) {
  304. self.layer.backgroundColor = shadowColor
  305. self.layer.masksToBounds = false
  306. self.layer.shadowOffset = CGSize(width: -1, height: 1)
  307. self.layer.shadowOpacity = opacity
  308. }
  309. func setShadow(_ shadowColor:UIColor,shadowOffset:CGSize,shadowOpacity:Float,shadowRadius:Float) {
  310. //self.layer.shadowColor = shadowColor.cgColor
  311. self.layer.backgroundColor = UIColor(red: 1, green: 1, blue: 1, alpha: 1).cgColor
  312. self.layer.masksToBounds = false
  313. self.layer.shadowOffset = shadowOffset
  314. self.layer.shadowOpacity = shadowOpacity
  315. self.layer.shadowRadius = CGFloat(shadowRadius)
  316. }
  317. }
  318. extension UILabel{
  319. //根据宽度计算高度 自适应高度
  320. func getHeight(byWith width:CGFloat,title:String,font:UIFont)->CGFloat{
  321. let label = UILabel(frame: CGRect(x: 0, y: 0, width: width, height: 0))
  322. label.text = title
  323. label.numberOfLines = 0
  324. label.sizeToFit()
  325. let height = label.frame.height
  326. return height
  327. }
  328. //根据宽度计算高度 自适应高度
  329. func getWidth(byHeight height:CGFloat,title:String,font:UIFont)->CGFloat{
  330. let label = UILabel(frame: CGRect(x: 0, y: 0, width: 0, height: height))
  331. label.text = title
  332. label.numberOfLines = 0
  333. label.sizeToFit()
  334. let width = label.frame.width
  335. return width
  336. }
  337. }
  338. extension UIImage{
  339. public class func renderImageWithColor(_ color : UIColor, size :CGSize) -> UIImage {
  340. UIGraphicsBeginImageContext(size)
  341. guard let context = UIGraphicsGetCurrentContext() else {
  342. UIGraphicsEndImageContext()
  343. return UIImage() }
  344. context.setFillColor(color.cgColor)
  345. context.fill(CGRect(x: 0, y: 0, width: size.width, height: size.height))
  346. let img = UIGraphicsGetImageFromCurrentImageContext()
  347. UIGraphicsEndImageContext()
  348. return img ?? UIImage()
  349. }
  350. }
  351. public struct UIRectSide : OptionSet {
  352. public let rawValue: Int
  353. public static let left = UIRectSide(rawValue: 1 << 0)
  354. public static let top = UIRectSide(rawValue: 1 << 1)
  355. public static let right = UIRectSide(rawValue: 1 << 2)
  356. public static let bottom = UIRectSide(rawValue: 1 << 3)
  357. public static let all: UIRectSide = [.top, .right, .left, .bottom]
  358. public init(rawValue: Int) {
  359. self.rawValue = rawValue;
  360. }
  361. }
  362. extension UIDevice{
  363. public func isX() -> Bool {
  364. if UIScreen.main.bounds.size.height == 812 {
  365. return true
  366. }
  367. return false
  368. }
  369. }
  370. // MARK: - String extensions
  371. extension String {
  372. // 摄氏温度 转华式温度
  373. func centigradeToFahrenheit() -> String {
  374. let centigrade = Double(self)
  375. let fahrenheit = 9 * centigrade! / 5 + 32
  376. let fahrenheitStr = String(format: "%.1f", fahrenheit)
  377. return fahrenheitStr
  378. }
  379. //华氏温度转摄氏温度
  380. func fahrenheitToCentigrade() -> String {
  381. let fahrenheit = Double(self)
  382. let centigrade = 5 * (fahrenheit! - 32) / 9
  383. let centigradeStr = String(format: "%.1f", centigrade)
  384. return centigradeStr
  385. }
  386. // 摄氏温度 转华式温度
  387. func centigradeToFahrenheit_int() -> String {
  388. let centigrade = Double(self)
  389. let fahrenheit = 9 * centigrade! / 5 + 32
  390. let fahrenheitStr = String(format: "%.0f", fahrenheit)
  391. return fahrenheitStr
  392. }
  393. //华氏温度转摄氏温度
  394. func fahrenheitToCentigrade_int() -> String {
  395. let fahrenheit = Double(self)
  396. let centigrade = 5 * (fahrenheit! - 32) / 9
  397. let centigradeStr = String(format: "%.0f", centigrade)
  398. return centigradeStr
  399. }
  400. /// Returns the localized string value
  401. public var localized: String {
  402. return localize(withBundle: Bundle.main)
  403. }
  404. public func localize(withBundle bundle: Bundle) -> String
  405. {
  406. return NSLocalizedString(self, tableName: nil, bundle: bundle, value: "", comment: "")
  407. }
  408. public func localizedstr() -> String {
  409. return NSLocalizedString(self, comment: "")
  410. //return DAConfig.localizedString(forKey: self, value: nil, table: nil)
  411. }
  412. // func notifi_change_localizedStr() -> String {
  413. // NotificationCenter.default.addObserver(self, selector: #selector(#selector(da_localizedStr)), name: NSNotification.Name(KCHANGELANGUAGE), object: nil)
  414. // }
  415. func da_localizedStr() -> String {
  416. return DAConfig.localizedString(forKey: self, value: nil, table: nil)
  417. }
  418. }
  419. extension String {
  420. func contains(find: String) -> Bool{
  421. return self.range(of: find) != nil
  422. }
  423. func containsIgnoringCase(find: String) -> Bool{
  424. return self.range(of: find, options: .caseInsensitive) != nil
  425. }
  426. ///随机字符串
  427. static let random_str_characters = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
  428. static func randomStr(len : Int) -> String{
  429. var ranStr = ""
  430. for _ in 0..<len {
  431. let index = Int(arc4random_uniform(UInt32(random_str_characters.count)))
  432. ranStr.append(random_str_characters[random_str_characters.index(random_str_characters.startIndex, offsetBy: index)])
  433. }
  434. return ranStr
  435. }
  436. // base64编码
  437. func toBase64() -> String? {
  438. if let data = self.data(using: .utf8) {
  439. return data.base64EncodedString()
  440. }
  441. return nil
  442. }
  443. // base64解码
  444. func fromBase64() -> String? {
  445. if let data = Data(base64Encoded: self) {
  446. return String(data: data, encoding: .utf8)
  447. }
  448. return nil
  449. }
  450. //6d4b8bd5540d79f0000000000000000000000000000000000000000000000000
  451. //6df15733785565e565b080fd6e9079d1628067099650516c53f8000000000000
  452. //根据开始位置和长度截取字符串
  453. func subString(start:Int, length:Int = -1) -> String {
  454. var len = length
  455. if len == -1 {
  456. len = self.count - start
  457. }
  458. let st = self.index(startIndex, offsetBy:start)
  459. let en = self.index(st, offsetBy:len)
  460. return String(self[st ..< en])
  461. }
  462. //获取子字符串
  463. func substingInRange(_ r: Range<Int>) -> String? {
  464. if r.lowerBound < 0 || r.upperBound > self.count {
  465. return nil
  466. }
  467. let startIndex = self.index(self.startIndex, offsetBy:r.lowerBound)
  468. let endIndex = self.index(self.startIndex, offsetBy:r.upperBound)
  469. return String(self[startIndex..<endIndex])
  470. }
  471. //字符串转十六进制
  472. func hexEncodeString() -> String{
  473. var mutStr = ""
  474. for i in 0..<self.count {
  475. var number : UInt32 = 0
  476. for code in self.subString(start: i, length: 1).unicodeScalars {
  477. number = code.value
  478. }
  479. let hexStr = String(format: "%02X", number)
  480. // print(hexStr)
  481. mutStr.append(hexStr)
  482. }
  483. return mutStr
  484. }
  485. func isIncludeChinese() -> Bool {
  486. for (_ , value) in self.charactersArray.enumerated() {
  487. if "\u{4E00}" <= value && value <= "\u{9FA5}"{
  488. return true
  489. }
  490. }
  491. return false
  492. }
  493. func transformToPinyin() -> String {
  494. let stringRef = NSMutableString(string: self) as CFMutableString
  495. // 转换为带音标的拼音
  496. CFStringTransform(stringRef,nil, kCFStringTransformToLatin, false);
  497. // 去掉音标
  498. CFStringTransform(stringRef, nil, kCFStringTransformStripCombiningMarks, false);
  499. let pinyin = stringRef as String;
  500. return pinyin.replacingOccurrences(of: " ", with: "")
  501. }
  502. // func transformToPinyin() -> String {
  503. // let stringRef = NSMutableString(string: self) as CFMutableString
  504. // // 转换为带音标的拼音
  505. // CFStringTransform(stringRef,nil, kCFStringTransformToLatin, false);
  506. // // 去掉音标
  507. // CFStringTransform(stringRef, nil, kCFStringTransformStripCombiningMarks, false);
  508. // let pinyin = stringRef as String;
  509. //
  510. // return pinyin
  511. // }
  512. }
  513. extension UIViewController {
  514. func g_toast(_ msg:String) {
  515. self.view.makeToast(msg, duration: 2.0, position: .center)
  516. }
  517. func g_httpFail() {
  518. g_toast("network_error".localizedstr())
  519. }
  520. func g_delay_excute(_ cmd:(()->())?) {
  521. DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
  522. cmd?()
  523. }
  524. // Async.main(after: 2.0, block: cmd?)
  525. // Async.main(after: 2.0) {
  526. // cmd?()
  527. // }
  528. }
  529. func g_real_delay_excute(_ cmd:(()->())?) {
  530. DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
  531. cmd?()
  532. }
  533. }
  534. }
  535. func stringConvertDate(string:String) -> Date {
  536. let dateFormatter = DateFormatter()
  537. dateFormatter.dateFormat = "HH:mm"
  538. let date = dateFormatter.date(from: string)
  539. return date!
  540. }
  541. func g_showHUD(_ message: String) {
  542. HUD.flash(.label(message), delay: 2.0) { _ in
  543. print("License Obtained.")
  544. }
  545. }
  546. func g_showloading() {
  547. HUD.show(.labeledProgress(title: "", subtitle: "Set_Language".da_localizedStr()))
  548. // Now some long running task starts...
  549. delay(2.0) {
  550. // ...and once it finishes we flash the HUD for a second.
  551. HUD.flash(.labeledSuccess(title: "", subtitle: "Successful_Setup_Languange".da_localizedStr()), delay: 1.0)
  552. }
  553. }
  554. //延迟执行
  555. func delay(_ delay: Double, closure:@escaping () -> Void) {
  556. DispatchQueue.main.asyncAfter(
  557. deadline: DispatchTime.now() + Double(Int64(delay * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC), execute: closure)
  558. }
  559. // MARK: 获取当前时间
  560. // 这里的 type 是指日期的格式 “yyyyMMdd” 或者 “yyyy-MM-dd” 这样子
  561. func nowTime(_ type:String?) -> String {
  562. let currentDate = Date()
  563. let formatter = DateFormatter()
  564. formatter.dateFormat = type ?? "yyyyMMdd"
  565. let time = formatter.string(from: currentDate)
  566. return time;
  567. }
  568. //获取前当前时间的前一天
  569. //NowDay 是传入的需要计算时间
  570. func getLastDay(_ nowDay:String) -> String {
  571. let dateFormatter = DateFormatter()
  572. dateFormatter.dateFormat = "yyyy-M-d"
  573. //先把传入的时间转为date
  574. let date = dateFormatter.date(from: nowDay)
  575. let lastTime :TimeInterval = -(24*60*60) // 往前减去一天秒数,昨天
  576. let lastDate = date?.addingTimeInterval(lastTime)
  577. let lastDay = dateFormatter.string(from: lastDate!)
  578. return lastDay;
  579. }
  580. class AppShare: NSObject {
  581. static var dataDict : [String: Any] = [String: Any]() // 所有设备数据
  582. static var paramDataDict : [String: Any] = [String: Any]() /// 参数数据
  583. static var realDataDict : [String: Any] = [String: Any]() /// 实时数据
  584. static var cumulativeDataDict : [String :Any] = [String: Any]() /// 累计数据
  585. static var isRefresh: Bool? = false
  586. static var isTimarStop : Bool? = false // 实时数据 定时器
  587. static var isTimar2Stop : Bool? = false // 统计数据定时器
  588. static var batteryType:BatteryType? = .USER
  589. static var toolbarSelectedIndex : Int? = 0
  590. static var reloadDeviceReciveData:Bool = false
  591. static var batIndexPath : BarIndexPath?
  592. static var perihperalName:String?
  593. // static var chartViewType :Int?
  594. // static var selectededBarIndex : Int?
  595. }
  596. enum BatteryType {
  597. case USER // 自定义
  598. case FLD // 开口铅酸FLD
  599. case SLD // 密封铅酸SLD
  600. case GEL // 胶体铅酸GEL
  601. case LI //磷酸铁锂LI
  602. }