SBTFirmwareUpdate.swift 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. //
  2. // SBTFirmwareUpdate.swift
  3. // SolarBT
  4. //
  5. // Created by weclouds on 2019/9/23.
  6. // Copyright © 2019 weclouds. All rights reserved.
  7. //
  8. import UIKit
  9. class SBTFirmwareUpdate: NSObject {
  10. static let share :SBTFirmwareUpdate = SBTFirmwareUpdate()
  11. var dataSource :[String]?
  12. func end(_ resposeStr :String) {
  13. let encode = resposeStr as String
  14. let encode1 = encode.fromBase64()
  15. let encode2 = encode1?.subString(start: 3)
  16. // print(encode2)
  17. let code = encode2?.fromBase64()
  18. // log.debug(code)
  19. log.debug("字节数 \(code!.count)")
  20. let bytes = code!.count / 2048
  21. log.debug("大小\(bytes)")
  22. for i in 0..<bytes{
  23. let data = code?.subString(start: i * 2048, length: 2048)
  24. // log.debug("第\(i)包 dataCount \(data!.count)")
  25. let complementCode = 255 - (i + 1)
  26. let cmd = "02" + String(format: "%02x", i + 1) + String(format: "%02x", complementCode)
  27. // log.debug("下发指令\(cmd)")
  28. let crcStr = UUUtils.crc16Test(data!)
  29. let sendCMD = cmd + crcStr!
  30. self.dataSource?.append(sendCMD)
  31. }
  32. //最后一包
  33. var lastPack = code?.subString(start: 2048 * bytes)
  34. log.debug("第83包 dataCount \(lastPack!.count)")
  35. let restCont = 2048 - lastPack!.count
  36. for _ in 0..<(restCont/2){
  37. lastPack?.append("1a")
  38. }
  39. log.debug("data=== \(lastPack!.count)")
  40. let complementCode = 255 - (bytes + 1)
  41. let cmd = "02" + String(format: "%02x", bytes + 1) + String(format: "%02x", complementCode)
  42. // log.debug("下发指令\(cmd)")
  43. let crcStr = UUUtils.crc16Test(lastPack!)
  44. let sendCMD = cmd + crcStr!
  45. // log.debug("每包字节数 \(sendCMD.count / 2)")
  46. log.debug(sendCMD)
  47. self.dataSource?.append(sendCMD)
  48. doSmallPack(self.dataSource!)
  49. }
  50. func doSmallPack(_ datasource :[String]) {
  51. for i in 0..<datasource.count {
  52. let cmd = datasource[i]
  53. log.debug("cmd")
  54. }
  55. }
  56. }