123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731 |
- //
- // AppShare.swift
- // SolarStationSwift
- //
- // Created by weclouds on 2018/7/31.
- // Copyright © 2018年 weclouds. All rights reserved.
- //
- import UIKit
- import Toast_Swift
- import SwifterSwift
- import SnapKit
- import JXCategoryView
- import BabyBluetooth
- import SwiftPopup
- import PKHUD
- extension UIViewController{
-
- //清除历史数据
- @objc func sendclearHistoryDataCMD () {
- let arr = ["FF06DF050001"]
- //发送数据
- let marr = NSMutableArray()
- for i in 0..<arr.count {
- let dic : NSDictionary = [DataTag:arr[i]]
- marr.add(dic)
- }
-
- BabyBluetoothSwift.shareInstance()?.writeData1(marr)
- }
-
- //清除历史数据 -旧协议
-
- //清除历史数据
- @objc func sendclearHistoryDataCMD_old () {
- let arr = ["FF7900000001"]
- //发送数据
- let marr = NSMutableArray()
- for i in 0..<arr.count {
- let dic : NSDictionary = [DataTag:arr[i]]
- marr.add(dic)
- }
-
- BabyBluetoothSwift.shareInstance()?.writeData1(marr)
- }
- //读取设备详情
- //读取所有数据
- @objc func ReadDeviceDetailData() {
-
- let arr = ["FF03000A0001","FF03000B004E","FF0300FD000D","FF03F000000A","FF03F001000A","FF03F002000A","FF03F003000A","FF03F004000A","FF03F005000A","FF03F006000A","FF03F007000A","FF030115000B","FF03DF0D0001"]
- //发送数据
- let marr = NSMutableArray()
- for i in 0..<arr.count {
- let dic : NSDictionary = [DataTag:arr[i]]
- marr.add(dic)
- }
- BabyBluetoothSwift.shareInstance()?.writeData1(marr)
- }
- //读取累计数据
- @objc func readCumulativeData() {
- let arr = ["FF03F000000A","FF03F001000A","FF03F002000A","FF03F003000A","FF03F004000A","FF03F005000A","FF03F006000A","FF03F007000A","FF030115000B"]
-
- //发送数据
- let marr = NSMutableArray()
- for i in 0..<arr.count {
- let dic : NSDictionary = [DataTag:arr[i]]
- marr.add(dic)
- }
-
- BabyBluetoothSwift.shareInstance()?.writeData1(marr)
- }
-
- //读取实时数据
- @objc func readRealData() {
- let arr = ["FF03000A0001","FF03E0030001","FF03E0080001","FF0300FD000D"]
-
- //发送数据
- let marr = NSMutableArray()
- for i in 0..<arr.count {
- let dic : NSDictionary = [DataTag:arr[i]]
- marr.add(dic)
- }
-
- BabyBluetoothSwift.shareInstance()?.writeData1(marr)
- }
-
- //读取实时数据 旧协议
- @objc func readRealData_old() {
- let arr = ["FF03000A0001","FF03E0030001","FF03E0080001","FF030100000A","FF0301200003"]
-
- //发送数据
- let marr = NSMutableArray()
- for i in 0..<arr.count {
- let dic : NSDictionary = [DataTag:arr[i]]
- marr.add(dic)
- }
-
- BabyBluetoothSwift.shareInstance()?.writeData1(marr)
- }
-
-
-
- @objc func readDeviceName() {
- let arr = ["FF0300490020"]
-
- //发送数据
- let marr = NSMutableArray()
- for i in 0..<arr.count {
- let dic : NSDictionary = [DataTag:arr[i]]
- marr.add(dic)
- }
-
- BabyBluetoothSwift.shareInstance()?.writeData1(marr)
- }
- //读取所有数据
-
- @objc func ReadAllData_old() {
-
- let arr = ["FF03000A0001","FF03000B000F","FF030100000A","FF0301200003","FF03F000000A","FF03F001000A","FF03F002000A","FF03F003000A","FF03F004000A","FF03F005000A","FF03F006000A","FF03F007000A","FF030115000B","FF03E0010001","FF03E003001E","FF03DF000001","FF03DF0D0001","FF03E0210001"]
-
- //发送数据
- let marr = NSMutableArray()
- for i in 0..<arr.count {
- let dic : NSDictionary = [DataTag:arr[i]]
- marr.add(dic)
- }
-
- BabyBluetoothSwift.shareInstance()?.writeData1(marr)
- }
- @objc func ReadAllData() {
-
- let arr = ["FF03000A0001","FF03000B000F","FF0300490020","FF0300FD000D","FF03F000000A","FF03F001000A","FF03F002000A","FF03F003000A","FF03F004000A","FF03F005000A","FF03F006000A","FF03F007000A","FF030115000B","FF03E0010001","FF03E003001E","FF03DF000001","FF03DF0D0001","FF03E0210001"]
-
- //发送数据
- let marr = NSMutableArray()
- for i in 0..<arr.count {
- let dic : NSDictionary = [DataTag:arr[i]]
- marr.add(dic)
- }
-
- BabyBluetoothSwift.shareInstance()?.writeData1(marr)
- }
-
- //读取参数设置数据
- @objc func ReadSettingParam() {
-
- let arr = ["FF03000A0001","FF03E0010001","FF03E003001E","FF03DF000001","FF03DF0D0001","FF03E0210001"]
-
- //发送数据
- let marr = NSMutableArray()
- for i in 0..<arr.count {
- let dic : NSDictionary = [DataTag:arr[i]]
- marr.add(dic)
- }
-
- BabyBluetoothSwift.shareInstance()?.writeData1(marr)
- }
-
- //负载开关
- func setLoadSwich(_ isOn:Bool){
- var arr : [String] = [String]()
- if isOn == true {
- arr = ["FF06010A0080"] // 1000 0000
- }else{
- arr = ["FF06010A0000"]
- }
-
- // let arr = ["FF03000A0001"]
-
- //发送数据
- let marr = NSMutableArray()
- for i in 0..<arr.count {
- let dic : NSDictionary = [DataTag:arr[i]]
- marr.add(dic)
- }
-
- BabyBluetoothSwift.shareInstance()?.writeData1(marr)
- }
-
-
-
- //修改名称
- func updateDeviceName(_ devicename :String ) {
- //将字符串转为
- // "FF100049" + "0010" + "20" + devicename
-
- let strCount = String(format: "%04X", devicename.count)
- let byteCount = String(format: "%02X", devicename.count * 2)
-
- let cmd = "FF100049" + strCount + byteCount + devicename
- let arr = [cmd]
- log.debug(cmd)
-
- //发送数据
- let marr = NSMutableArray()
- for i in 0..<arr.count {
- let dic : NSDictionary = [DataTag:arr[i]]
- marr.add(dic)
- }
-
- BabyBluetoothSwift.shareInstance()?.writeData1(marr)
- }
-
- //恢复出厂设置
- func reset(){
- // let arr = ["FF7800000001"]
- let arr = ["FF06DF020001"]
- //发送数据
- let marr = NSMutableArray()
- for i in 0..<arr.count {
- let dic : NSDictionary = [DataTag:arr[i]]
- marr.add(dic)
- }
-
- BabyBluetoothSwift.shareInstance()?.writeData1(marr)
- }
-
- //恢复出厂设置
- func reset_old(){
- let arr = ["FF7800000001"]
- // let arr = ["FF06DF010001"]
- //发送数据
- let marr = NSMutableArray()
- for i in 0..<arr.count {
- let dic : NSDictionary = [DataTag:arr[i]]
- marr.add(dic)
- }
-
- BabyBluetoothSwift.shareInstance()?.writeData1(marr)
- }
-
- //参数设置
- // 设置负载参数
- func BatchSettingParam(_ cmdArr:[String]) {
- let arr = cmdArr
- //发送数据
- let marr = NSMutableArray()
- for i in 0..<arr.count {
- let dic : NSDictionary = [DataTag:arr[i]]
- marr.add(dic)
- }
-
- BabyBluetoothSwift.shareInstance()?.writeData1(marr)
- }
-
- // 设置电池参数
- func setBatteryParam(_ cmdArr:[String]) {
- let arr = cmdArr
- //发送数据
- let marr = NSMutableArray()
- for i in 0..<arr.count {
- let dic : NSDictionary = [DataTag:arr[i]]
- marr.add(dic)
- }
-
- BabyBluetoothSwift.shareInstance()?.writeData1(marr)
- }
- // 设置充电器参数
- func setChargerParam(_ cmdArr:[String]) {
- let arr = cmdArr
- //发送数据
- let marr = NSMutableArray()
- for i in 0..<arr.count {
- let dic : NSDictionary = [DataTag:arr[i]]
- marr.add(dic)
- }
-
- BabyBluetoothSwift.shareInstance()?.writeData1(marr)
- }
-
- // 设置负载参数
- func setLoadParam(_ cmdArr:[String]) {
- let arr = cmdArr
- //发送数据
- let marr = NSMutableArray()
- for i in 0..<arr.count {
- let dic : NSDictionary = [DataTag:arr[i]]
- marr.add(dic)
- }
-
- BabyBluetoothSwift.shareInstance()?.writeData1(marr)
- }
- // 设置tx端口功能 bit[9:11]
- func txfunction(_ type: Int) {
- //0000 000 0 00000000
- var funcStr = ""
- switch type {
- case 0: // 0000 000 0 00000000 == 0000
- funcStr = "0000"
- case 1: // 0000001000000000 == 0200
- funcStr = "0200"
- case 2: // 0000010000000000 == 0400
- funcStr = "0400"
- case 3: // 0000011000000000 == 0600
- funcStr = "0600"
- case 4: // 0000100000000000 == 0800
- funcStr = "0800"
- default:
- break
- }
- let cmd = "FF10E021" + funcStr
- let arr = [cmd]
- //发送数据
- let marr = NSMutableArray()
- for i in 0..<arr.count {
- let dic : NSDictionary = [DataTag:arr[i]]
- marr.add(dic)
- }
-
- BabyBluetoothSwift.shareInstance()?.writeData1(marr)
- }
- // 设置rx端口功能 bit[12:14]
- func rxfunction(_ type: Int) {
- //0 000 0000 00000000
- var funcStr = ""
- switch type {
- case 0: // 0 000 000 0 00000000 == 0000
- funcStr = "0000"
- case 1: // 0001000000000000 == 0200
- funcStr = "1000"
- case 2: // 0010000000000000 == 0400
- funcStr = "2000"
- case 3: // 0011000000000000 == 0600
- funcStr = "3000"
- case 4: // 0100000000000000 == 0800
- funcStr = "4000"
- default:
- break
- }
- let cmd = "FF10E021" + funcStr
- let arr = [cmd]
- //发送数据
- let marr = NSMutableArray()
- for i in 0..<arr.count {
- let dic : NSDictionary = [DataTag:arr[i]]
- marr.add(dic)
- }
-
- BabyBluetoothSwift.shareInstance()?.writeData1(marr)
- }
-
-
- }
- extension UIView {
-
- /**
- brief view的阴影
- opacity 不透明度
- */
- func setShadow(_ opacity : Float) {
- self.layer.backgroundColor = UIColor(red: 1, green: 1, blue: 1, alpha: 1).cgColor
- self.layer.masksToBounds = false
- self.layer.shadowOffset = CGSize(width: -1, height: 1)
- self.layer.shadowOpacity = opacity
- }
-
- /**
- brief 图片阴影
- shadowColor: 图片阴影
- opacity 不透明度
- */
- func setShadow(_ shadowColor:CGColor, opacity : Float) {
- self.layer.backgroundColor = shadowColor
- self.layer.masksToBounds = false
- self.layer.shadowOffset = CGSize(width: -1, height: 1)
- self.layer.shadowOpacity = opacity
- }
-
- func setShadow(_ shadowColor:UIColor,shadowOffset:CGSize,shadowOpacity:Float,shadowRadius:Float) {
- //self.layer.shadowColor = shadowColor.cgColor
- self.layer.backgroundColor = UIColor(red: 1, green: 1, blue: 1, alpha: 1).cgColor
- self.layer.masksToBounds = false
- self.layer.shadowOffset = shadowOffset
- self.layer.shadowOpacity = shadowOpacity
- self.layer.shadowRadius = CGFloat(shadowRadius)
- }
- }
- extension UILabel{
- //根据宽度计算高度 自适应高度
- func getHeight(byWith width:CGFloat,title:String,font:UIFont)->CGFloat{
- let label = UILabel(frame: CGRect(x: 0, y: 0, width: width, height: 0))
- label.text = title
- label.numberOfLines = 0
- label.sizeToFit()
- let height = label.frame.height
- return height
- }
-
- //根据宽度计算高度 自适应高度
- func getWidth(byHeight height:CGFloat,title:String,font:UIFont)->CGFloat{
- let label = UILabel(frame: CGRect(x: 0, y: 0, width: 0, height: height))
- label.text = title
- label.numberOfLines = 0
- label.sizeToFit()
- let width = label.frame.width
- return width
- }
- }
- extension UIImage{
- public class func renderImageWithColor(_ color : UIColor, size :CGSize) -> UIImage {
- UIGraphicsBeginImageContext(size)
- guard let context = UIGraphicsGetCurrentContext() else {
- UIGraphicsEndImageContext()
- return UIImage() }
- context.setFillColor(color.cgColor)
- context.fill(CGRect(x: 0, y: 0, width: size.width, height: size.height))
- let img = UIGraphicsGetImageFromCurrentImageContext()
- UIGraphicsEndImageContext()
- return img ?? UIImage()
- }
- }
- public struct UIRectSide : OptionSet {
-
- public let rawValue: Int
-
- public static let left = UIRectSide(rawValue: 1 << 0)
-
- public static let top = UIRectSide(rawValue: 1 << 1)
-
- public static let right = UIRectSide(rawValue: 1 << 2)
-
- public static let bottom = UIRectSide(rawValue: 1 << 3)
-
- public static let all: UIRectSide = [.top, .right, .left, .bottom]
-
-
-
- public init(rawValue: Int) {
-
- self.rawValue = rawValue;
-
- }
-
- }
-
-
- extension UIDevice{
- public func isX() -> Bool {
- if UIScreen.main.bounds.size.height == 812 {
- return true
- }
- return false
- }
- }
- // MARK: - String extensions
- extension String {
- // 摄氏温度 转华式温度
- func centigradeToFahrenheit() -> String {
- let centigrade = Double(self)
- let fahrenheit = 9 * centigrade! / 5 + 32
- let fahrenheitStr = String(format: "%.1f", fahrenheit)
- return fahrenheitStr
-
- }
- //华氏温度转摄氏温度
- func fahrenheitToCentigrade() -> String {
- let fahrenheit = Double(self)
- let centigrade = 5 * (fahrenheit! - 32) / 9
- let centigradeStr = String(format: "%.1f", centigrade)
- return centigradeStr
- }
-
-
- // 摄氏温度 转华式温度
- func centigradeToFahrenheit_int() -> String {
- let centigrade = Double(self)
- let fahrenheit = 9 * centigrade! / 5 + 32
- let fahrenheitStr = String(format: "%.0f", fahrenheit)
- return fahrenheitStr
-
- }
- //华氏温度转摄氏温度
- func fahrenheitToCentigrade_int() -> String {
- let fahrenheit = Double(self)
- let centigrade = 5 * (fahrenheit! - 32) / 9
- let centigradeStr = String(format: "%.0f", centigrade)
- return centigradeStr
- }
- /// Returns the localized string value
- public var localized: String {
- return localize(withBundle: Bundle.main)
- }
-
- public func localize(withBundle bundle: Bundle) -> String
- {
- return NSLocalizedString(self, tableName: nil, bundle: bundle, value: "", comment: "")
- }
- public func localizedstr() -> String {
- return NSLocalizedString(self, comment: "")
- //return DAConfig.localizedString(forKey: self, value: nil, table: nil)
- }
-
- // func notifi_change_localizedStr() -> String {
- // NotificationCenter.default.addObserver(self, selector: #selector(#selector(da_localizedStr)), name: NSNotification.Name(KCHANGELANGUAGE), object: nil)
- // }
-
- func da_localizedStr() -> String {
-
- return DAConfig.localizedString(forKey: self, value: nil, table: nil)
- }
-
- }
- extension String {
-
- func contains(find: String) -> Bool{
- return self.range(of: find) != nil
- }
-
- func containsIgnoringCase(find: String) -> Bool{
- return self.range(of: find, options: .caseInsensitive) != nil
- }
-
- ///随机字符串
- static let random_str_characters = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
- static func randomStr(len : Int) -> String{
- var ranStr = ""
- for _ in 0..<len {
- let index = Int(arc4random_uniform(UInt32(random_str_characters.count)))
- ranStr.append(random_str_characters[random_str_characters.index(random_str_characters.startIndex, offsetBy: index)])
- }
- return ranStr
- }
- // base64编码
- func toBase64() -> String? {
- if let data = self.data(using: .utf8) {
- return data.base64EncodedString()
- }
- return nil
- }
-
- // base64解码
- func fromBase64() -> String? {
- if let data = Data(base64Encoded: self) {
- return String(data: data, encoding: .utf8)
- }
- return nil
- }
-
-
- //6d4b8bd5540d79f0000000000000000000000000000000000000000000000000
- //6df15733785565e565b080fd6e9079d1628067099650516c53f8000000000000
- //根据开始位置和长度截取字符串
- func subString(start:Int, length:Int = -1) -> String {
- var len = length
- if len == -1 {
- len = self.count - start
- }
- let st = self.index(startIndex, offsetBy:start)
- let en = self.index(st, offsetBy:len)
- return String(self[st ..< en])
- }
- //获取子字符串
- func substingInRange(_ r: Range<Int>) -> String? {
- if r.lowerBound < 0 || r.upperBound > self.count {
- return nil
- }
- let startIndex = self.index(self.startIndex, offsetBy:r.lowerBound)
- let endIndex = self.index(self.startIndex, offsetBy:r.upperBound)
- return String(self[startIndex..<endIndex])
- }
-
- //字符串转十六进制
- func hexEncodeString() -> String{
- var mutStr = ""
- for i in 0..<self.count {
- var number : UInt32 = 0
- for code in self.subString(start: i, length: 1).unicodeScalars {
- number = code.value
- }
- let hexStr = String(format: "%02X", number)
- // print(hexStr)
- mutStr.append(hexStr)
- }
- return mutStr
- }
-
- func isIncludeChinese() -> Bool {
- for (_ , value) in self.charactersArray.enumerated() {
- if "\u{4E00}" <= value && value <= "\u{9FA5}"{
- return true
- }
-
- }
- return false
- }
-
-
- func transformToPinyin() -> String {
- let stringRef = NSMutableString(string: self) as CFMutableString
- // 转换为带音标的拼音
- CFStringTransform(stringRef,nil, kCFStringTransformToLatin, false);
- // 去掉音标
- CFStringTransform(stringRef, nil, kCFStringTransformStripCombiningMarks, false);
- let pinyin = stringRef as String;
-
- return pinyin.replacingOccurrences(of: " ", with: "")
- }
-
- // func transformToPinyin() -> String {
- // let stringRef = NSMutableString(string: self) as CFMutableString
- // // 转换为带音标的拼音
- // CFStringTransform(stringRef,nil, kCFStringTransformToLatin, false);
- // // 去掉音标
- // CFStringTransform(stringRef, nil, kCFStringTransformStripCombiningMarks, false);
- // let pinyin = stringRef as String;
- //
- // return pinyin
- // }
- }
- extension UIViewController {
-
- func g_toast(_ msg:String) {
- self.view.makeToast(msg, duration: 2.0, position: .center)
- }
- func g_httpFail() {
- g_toast("network_error".localizedstr())
- }
- func g_delay_excute(_ cmd:(()->())?) {
- DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
- cmd?()
- }
- // Async.main(after: 2.0, block: cmd?)
- // Async.main(after: 2.0) {
- // cmd?()
- // }
- }
-
- func g_real_delay_excute(_ cmd:(()->())?) {
- DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
- cmd?()
- }
- }
- }
- func stringConvertDate(string:String) -> Date {
- let dateFormatter = DateFormatter()
- dateFormatter.dateFormat = "HH:mm"
- let date = dateFormatter.date(from: string)
- return date!
- }
- func g_showHUD(_ message: String) {
- HUD.flash(.label(message), delay: 2.0) { _ in
- print("License Obtained.")
- }
- }
- func g_showloading() {
- HUD.show(.labeledProgress(title: "", subtitle: "Set_Language".da_localizedStr()))
-
- // Now some long running task starts...
- delay(2.0) {
- // ...and once it finishes we flash the HUD for a second.
- HUD.flash(.labeledSuccess(title: "", subtitle: "Successful_Setup_Languange".da_localizedStr()), delay: 1.0)
- }
- }
- //延迟执行
- func delay(_ delay: Double, closure:@escaping () -> Void) {
- DispatchQueue.main.asyncAfter(
- deadline: DispatchTime.now() + Double(Int64(delay * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC), execute: closure)
- }
- // MARK: 获取当前时间
- // 这里的 type 是指日期的格式 “yyyyMMdd” 或者 “yyyy-MM-dd” 这样子
- func nowTime(_ type:String?) -> String {
- let currentDate = Date()
- let formatter = DateFormatter()
- formatter.dateFormat = type ?? "yyyyMMdd"
- let time = formatter.string(from: currentDate)
- return time;
- }
- //获取前当前时间的前一天
- //NowDay 是传入的需要计算时间
- func getLastDay(_ nowDay:String) -> String {
- let dateFormatter = DateFormatter()
- dateFormatter.dateFormat = "yyyy-M-d"
-
- //先把传入的时间转为date
- let date = dateFormatter.date(from: nowDay)
- let lastTime :TimeInterval = -(24*60*60) // 往前减去一天秒数,昨天
-
- let lastDate = date?.addingTimeInterval(lastTime)
- let lastDay = dateFormatter.string(from: lastDate!)
- return lastDay;
- }
- class AppShare: NSObject {
- static var dataDict : [String: Any] = [String: Any]() // 所有设备数据
- static var paramDataDict : [String: Any] = [String: Any]() /// 参数数据
- static var realDataDict : [String: Any] = [String: Any]() /// 实时数据
- static var cumulativeDataDict : [String :Any] = [String: Any]() /// 累计数据
- static var isRefresh: Bool? = false
- static var isTimarStop : Bool? = false // 实时数据 定时器
- static var isTimar2Stop : Bool? = false // 统计数据定时器
- static var batteryType:BatteryType? = .USER
- static var toolbarSelectedIndex : Int? = 0
- static var reloadDeviceReciveData:Bool = false
-
- static var batIndexPath : BarIndexPath?
- static var perihperalName:String?
- // static var chartViewType :Int?
- // static var selectededBarIndex : Int?
- }
- enum BatteryType {
- case USER // 自定义
- case FLD // 开口铅酸FLD
- case SLD // 密封铅酸SLD
- case GEL // 胶体铅酸GEL
- case LI //磷酸铁锂LI
- }
|