Advertisement
Guest User

Untitled

a guest
Sep 21st, 2019
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.19 KB | None | 0 0
  1. // 메시지 보내는 함수
  2. func bleMessageNetWork(){
  3.  
  4. let message_str = self.strArr[0]+self.strArr[1]+self.strArr[3]+self.strArr[5]+self.strArr[7]+"!E"
  5. // self.sendmessage(message_str)
  6.  
  7. self.sendMessageToDevice(message_str)
  8. }
  9.  
  10. //메시지 받는 함수
  11. func serialDidReceiveString(_ message: String) {
  12.  
  13. var msg = message
  14. msg = message.replacingOccurrences(of: "\r", with: "") // 공백 삭제
  15. msg = msg.replacingOccurrences(of: "\n", with: "") // 줄바꿈 삭제
  16.  
  17. print(message)
  18.  
  19. // 메시지 맨 처음이 S 여야하고 두번쨰가 A가 아니라면 메시지를 저장
  20. if init_message == "" && message.substring(start: 1, end: 2) != "A"{
  21.  
  22. init_message = message
  23.  
  24. //만약 배열에 저장되있으면 전부다 삭제
  25. if self.strArr.count > 0{
  26.  
  27. self.strArr.removeAll()
  28. }
  29.  
  30. //배열 초기화후 0부터 다시 넣기
  31.  
  32. self.strArr.append(message.substring(start: 0, end: 1)) //s 기본 넣어야할것
  33. self.strArr.append(message.substring(start: 1, end: 2)) //n 온오프
  34. self.strArr.append(message.substring(start: 2, end: 3)) //f 보일러 가동 상태
  35.  
  36. self.strArr.append(message.substring(start: 3, end: 6)) //보일러 설정온도
  37. self.strArr.append(message.substring(start: 6, end: 9)) //보일러 물온도
  38. self.strArr.append(message.substring(start: 9, end: 12)) //실내 설정온도
  39. self.strArr.append(message.substring(start: 12, end: 15)) //실내 온도
  40.  
  41. self.strArr.append(message.substring(start: 15, end: 16)) //바람 세기
  42.  
  43. self.strArr.append(message.substring(start: 16, end: 17)) //알람
  44. self.strArr.append(message.substring(start: 17, end: 18)) //충전
  45. self.strArr.append(message.substring(start: 18, end: 20)) //베터리전압
  46.  
  47. if message.substring(start: 15, end: 16) == "H"{
  48.  
  49. self.img_wind.image = UIImage(named: self.windStrArr[3])
  50. }
  51. else if message.substring(start: 15, end: 16) == "M"{
  52.  
  53. self.img_wind.image = UIImage(named: self.windStrArr[2])
  54. }
  55. else if message.substring(start: 15, end: 16) == "L"{
  56.  
  57. self.img_wind.image = UIImage(named: self.windStrArr[1])
  58. }
  59.  
  60.  
  61. //에러 코드 일때 토스트 출력
  62. switch(self.strArr[8]){
  63.  
  64. case "1":
  65. self.strArr[1] = "F"
  66. self.view.makeToast("보일러 온도센서 단선",duration: 10.0)
  67. self.bleMessageNetWork()
  68. break
  69. case "2":
  70. self.strArr[1] = "F"
  71. self.view.makeToast("보일러 온도센서 합선",duration: 10.0)
  72. self.bleMessageNetWork()
  73. break
  74. case "3":
  75. self.strArr[1] = "F"
  76. self.view.makeToast("저수위",duration: 10.0)
  77. self.bleMessageNetWork()
  78. break
  79. case "4":
  80. self.strArr[1] = "F"
  81. self.view.makeToast("가스없음",duration: 10.0)
  82. self.bleMessageNetWork()
  83. break
  84. case "5":
  85. self.strArr[1] = "F"
  86. self.view.makeToast("보일러 착화감지센서 단선",duration: 10.0)
  87. self.bleMessageNetWork()
  88. break
  89. case "6":
  90. self.strArr[1] = "F"
  91. self.view.makeToast("실내 온도센서 단선",duration: 10.0)
  92. self.bleMessageNetWork()
  93. break
  94. case "7":
  95. self.strArr[1] = "F"
  96. self.view.makeToast("실내 온도센서 합선",duration: 10.0)
  97. self.bleMessageNetWork()
  98. break
  99. default:
  100. print("non error")
  101. }
  102.  
  103. // 보일러 설정 온도 표시는 소수점 안나타내주고 있습니다.
  104. // 또한 온도가 100으로 80도이면 800으로 메시지가 넘어오기에 나누기 10을 해주고 표시 해주어야 합니다.
  105.  
  106. let str = message.substring(start: 3, end: 6) // 보일러 설정 온도 표시
  107. var temp: Int = Int(str)!
  108. temp = temp/10
  109.  
  110. let str2 = message.substring(start: 12, end: 15) // 실내 온도 표시
  111. var temp2: Int = Int(str2)!
  112. temp2 = temp2/10
  113.  
  114. print(temp2)
  115.  
  116. // 설정 온도 표시
  117. let str3 = message.substring(start: 3, end: 6)
  118. var temp3: Int = Int(str3)!
  119. temp3 = temp3/10
  120.  
  121. // 설정 온도 숫자로 변환 후 저장
  122. self.Temperature = temp3
  123.  
  124. ///// 베터리 잔량
  125.  
  126. let str4 = message.substring(start: 18, end: 20)
  127. let temp4: Int = Int(str4)!
  128.  
  129. let temp5 = (16-temp4) //
  130. let temp6 = 100-(temp5*25) // 0.05
  131. self.lb_bettery.text = String(temp6)+"%"
  132. ///// 베터리 잔량
  133.  
  134. // 실내 온도 표시
  135. self.lb_temperature.text = String(temp2)+" ℃"
  136.  
  137. // 현재 온도가 아닐시 설정온도로 보여줌
  138. self.lb_temperature2.text = String(temp3)+" ℃"
  139.  
  140. self.timerStart()
  141.  
  142. self.collectionView.reloadData()
  143. }
  144. else{
  145. // 메시지 맨 처음이 S 여야하고 두번쨰가 A가 아니라면 메시지를 저장
  146. if message != init_message && message.substring(start: 0, end: 1) == "S" && message.substring(start: 1, end: 2) != "A"{
  147.  
  148. init_message = message
  149.  
  150. //배열 전부다 삭제
  151. self.strArr.removeAll()
  152.  
  153. self.strArr.append(message.substring(start: 0, end: 1)) //s 기본 넣어야할것
  154. self.strArr.append(message.substring(start: 1, end: 2)) //n 온오프
  155. self.strArr.append(message.substring(start: 2, end: 3)) //f 보일러 가동 상태
  156.  
  157. self.strArr.append(message.substring(start: 3, end: 6)) //보일러 설정온도
  158. self.strArr.append(message.substring(start: 6, end: 9)) //보일러 물온도
  159. self.strArr.append(message.substring(start: 9, end: 12)) //실내 설정온도
  160. self.strArr.append(message.substring(start: 12, end: 15)) //실내 온도
  161.  
  162. self.strArr.append(message.substring(start: 15, end: 16)) //바람 세기
  163.  
  164. self.strArr.append(message.substring(start: 16, end: 17)) //알람
  165. self.strArr.append(message.substring(start: 17, end: 18)) //충전
  166. self.strArr.append(message.substring(start: 18, end: 20)) //베터리전압
  167.  
  168. if message.substring(start: 15, end: 16) == "H"{
  169.  
  170. self.img_wind.image = UIImage(named: self.windStrArr[3])
  171. }
  172. else if message.substring(start: 15, end: 16) == "M"{
  173.  
  174. self.img_wind.image = UIImage(named: self.windStrArr[2])
  175. }
  176. else if message.substring(start: 15, end: 16) == "L"{
  177.  
  178. self.img_wind.image = UIImage(named: self.windStrArr[1])
  179. }
  180.  
  181. switch(self.strArr[8]){
  182.  
  183. case "1":
  184. self.strArr[1] = "F"
  185. self.view.makeToast("보일러 온도센서 단선",duration: 10.0)
  186. self.bleMessageNetWork()
  187. break
  188. case "2":
  189. self.strArr[1] = "F"
  190. self.view.makeToast("보일러 온도센서 합선",duration: 10.0)
  191. self.bleMessageNetWork()
  192. break
  193. case "3":
  194. self.strArr[1] = "F"
  195. self.view.makeToast("물 부족",duration: 10.0)
  196. self.bleMessageNetWork()
  197. break
  198. case "4":
  199. self.strArr[1] = "F"
  200. self.view.makeToast("가스없음",duration: 10.0)
  201. self.bleMessageNetWork()
  202. break
  203. case "5":
  204. self.strArr[1] = "F"
  205. self.view.makeToast("보일러 착화 감지센서 단선",duration: 10.0)
  206. self.bleMessageNetWork()
  207. break
  208. case "6":
  209. self.strArr[1] = "F"
  210. self.view.makeToast("실내 온도센서 단선",duration: 10.0)
  211. self.bleMessageNetWork()
  212. break
  213. case "7":
  214. self.strArr[1] = "F"
  215. self.view.makeToast("실내 온도센서 합선",duration: 10.0)
  216. self.bleMessageNetWork()
  217. break
  218. default:
  219. print("non error")
  220. }
  221.  
  222. // 보일러 설정 온도 표시는 소수점 안나타내주고 있습니다.
  223. // 또한 온도가 100으로 80도이면 800으로 메시지가 넘어오기에 나누기 10을 해주고 표시 해주어야 합니다.
  224.  
  225. let str = message.substring(start: 3, end: 6) // 보일러 설정 온도 표시
  226. var temp: Int = Int(str)!
  227. temp = temp/10
  228.  
  229. let str2 = message.substring(start: 12, end: 15) // 실내 온도 표시
  230. var temp2: Int = Int(str2)!
  231. temp2 = temp2/10
  232.  
  233. print(temp2)
  234.  
  235. // 설정 온도 표시
  236. let str3 = message.substring(start: 3, end: 6)
  237. var temp3: Int = Int(str3)!
  238. temp3 = temp3/10
  239.  
  240. ///// 베터리 잔량
  241.  
  242. let str4 = message.substring(start: 18, end: 20)
  243. let temp4: Int = Int(str4)!
  244.  
  245. let temp5 = (16-temp4) //
  246. let temp6 = 100-(temp5*25) // 0.05
  247. self.lb_bettery.text = String(temp6)+"%"
  248. ///// 베터리 잔량
  249.  
  250. // 실내 온도 표시
  251. self.lb_temperature.text = String(temp2)+" ℃"
  252.  
  253. // 설정 온도 숫자로 변환 후 저장
  254. self.Temperature = temp3
  255.  
  256.  
  257. // 현재 온도가 아닐시 설정온도로 보여줌
  258. if istemperature == false{
  259.  
  260. self.lb_temperature2.text = String(temp3)+" ℃"
  261. }
  262.  
  263. self.collectionView.reloadData()
  264. }
  265. }
  266. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement