Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // 메시지 보내는 함수
- func bleMessageNetWork(){
- let message_str = self.strArr[0]+self.strArr[1]+self.strArr[3]+self.strArr[5]+self.strArr[7]+"!E"
- // self.sendmessage(message_str)
- self.sendMessageToDevice(message_str)
- }
- //메시지 받는 함수
- func serialDidReceiveString(_ message: String) {
- var msg = message
- msg = message.replacingOccurrences(of: "\r", with: "") // 공백 삭제
- msg = msg.replacingOccurrences(of: "\n", with: "") // 줄바꿈 삭제
- print(message)
- // 메시지 맨 처음이 S 여야하고 두번쨰가 A가 아니라면 메시지를 저장
- if init_message == "" && message.substring(start: 1, end: 2) != "A"{
- init_message = message
- //만약 배열에 저장되있으면 전부다 삭제
- if self.strArr.count > 0{
- self.strArr.removeAll()
- }
- //배열 초기화후 0부터 다시 넣기
- self.strArr.append(message.substring(start: 0, end: 1)) //s 기본 넣어야할것
- self.strArr.append(message.substring(start: 1, end: 2)) //n 온오프
- self.strArr.append(message.substring(start: 2, end: 3)) //f 보일러 가동 상태
- self.strArr.append(message.substring(start: 3, end: 6)) //보일러 설정온도
- self.strArr.append(message.substring(start: 6, end: 9)) //보일러 물온도
- self.strArr.append(message.substring(start: 9, end: 12)) //실내 설정온도
- self.strArr.append(message.substring(start: 12, end: 15)) //실내 온도
- self.strArr.append(message.substring(start: 15, end: 16)) //바람 세기
- self.strArr.append(message.substring(start: 16, end: 17)) //알람
- self.strArr.append(message.substring(start: 17, end: 18)) //충전
- self.strArr.append(message.substring(start: 18, end: 20)) //베터리전압
- if message.substring(start: 15, end: 16) == "H"{
- self.img_wind.image = UIImage(named: self.windStrArr[3])
- }
- else if message.substring(start: 15, end: 16) == "M"{
- self.img_wind.image = UIImage(named: self.windStrArr[2])
- }
- else if message.substring(start: 15, end: 16) == "L"{
- self.img_wind.image = UIImage(named: self.windStrArr[1])
- }
- //에러 코드 일때 토스트 출력
- switch(self.strArr[8]){
- case "1":
- self.strArr[1] = "F"
- self.view.makeToast("보일러 온도센서 단선",duration: 10.0)
- self.bleMessageNetWork()
- break
- case "2":
- self.strArr[1] = "F"
- self.view.makeToast("보일러 온도센서 합선",duration: 10.0)
- self.bleMessageNetWork()
- break
- case "3":
- self.strArr[1] = "F"
- self.view.makeToast("저수위",duration: 10.0)
- self.bleMessageNetWork()
- break
- case "4":
- self.strArr[1] = "F"
- self.view.makeToast("가스없음",duration: 10.0)
- self.bleMessageNetWork()
- break
- case "5":
- self.strArr[1] = "F"
- self.view.makeToast("보일러 착화감지센서 단선",duration: 10.0)
- self.bleMessageNetWork()
- break
- case "6":
- self.strArr[1] = "F"
- self.view.makeToast("실내 온도센서 단선",duration: 10.0)
- self.bleMessageNetWork()
- break
- case "7":
- self.strArr[1] = "F"
- self.view.makeToast("실내 온도센서 합선",duration: 10.0)
- self.bleMessageNetWork()
- break
- default:
- print("non error")
- }
- // 보일러 설정 온도 표시는 소수점 안나타내주고 있습니다.
- // 또한 온도가 100으로 80도이면 800으로 메시지가 넘어오기에 나누기 10을 해주고 표시 해주어야 합니다.
- let str = message.substring(start: 3, end: 6) // 보일러 설정 온도 표시
- var temp: Int = Int(str)!
- temp = temp/10
- let str2 = message.substring(start: 12, end: 15) // 실내 온도 표시
- var temp2: Int = Int(str2)!
- temp2 = temp2/10
- print(temp2)
- // 설정 온도 표시
- let str3 = message.substring(start: 3, end: 6)
- var temp3: Int = Int(str3)!
- temp3 = temp3/10
- // 설정 온도 숫자로 변환 후 저장
- self.Temperature = temp3
- ///// 베터리 잔량
- let str4 = message.substring(start: 18, end: 20)
- let temp4: Int = Int(str4)!
- let temp5 = (16-temp4) //
- let temp6 = 100-(temp5*25) // 0.05
- self.lb_bettery.text = String(temp6)+"%"
- ///// 베터리 잔량
- // 실내 온도 표시
- self.lb_temperature.text = String(temp2)+" ℃"
- // 현재 온도가 아닐시 설정온도로 보여줌
- self.lb_temperature2.text = String(temp3)+" ℃"
- self.timerStart()
- self.collectionView.reloadData()
- }
- else{
- // 메시지 맨 처음이 S 여야하고 두번쨰가 A가 아니라면 메시지를 저장
- if message != init_message && message.substring(start: 0, end: 1) == "S" && message.substring(start: 1, end: 2) != "A"{
- init_message = message
- //배열 전부다 삭제
- self.strArr.removeAll()
- self.strArr.append(message.substring(start: 0, end: 1)) //s 기본 넣어야할것
- self.strArr.append(message.substring(start: 1, end: 2)) //n 온오프
- self.strArr.append(message.substring(start: 2, end: 3)) //f 보일러 가동 상태
- self.strArr.append(message.substring(start: 3, end: 6)) //보일러 설정온도
- self.strArr.append(message.substring(start: 6, end: 9)) //보일러 물온도
- self.strArr.append(message.substring(start: 9, end: 12)) //실내 설정온도
- self.strArr.append(message.substring(start: 12, end: 15)) //실내 온도
- self.strArr.append(message.substring(start: 15, end: 16)) //바람 세기
- self.strArr.append(message.substring(start: 16, end: 17)) //알람
- self.strArr.append(message.substring(start: 17, end: 18)) //충전
- self.strArr.append(message.substring(start: 18, end: 20)) //베터리전압
- if message.substring(start: 15, end: 16) == "H"{
- self.img_wind.image = UIImage(named: self.windStrArr[3])
- }
- else if message.substring(start: 15, end: 16) == "M"{
- self.img_wind.image = UIImage(named: self.windStrArr[2])
- }
- else if message.substring(start: 15, end: 16) == "L"{
- self.img_wind.image = UIImage(named: self.windStrArr[1])
- }
- switch(self.strArr[8]){
- case "1":
- self.strArr[1] = "F"
- self.view.makeToast("보일러 온도센서 단선",duration: 10.0)
- self.bleMessageNetWork()
- break
- case "2":
- self.strArr[1] = "F"
- self.view.makeToast("보일러 온도센서 합선",duration: 10.0)
- self.bleMessageNetWork()
- break
- case "3":
- self.strArr[1] = "F"
- self.view.makeToast("물 부족",duration: 10.0)
- self.bleMessageNetWork()
- break
- case "4":
- self.strArr[1] = "F"
- self.view.makeToast("가스없음",duration: 10.0)
- self.bleMessageNetWork()
- break
- case "5":
- self.strArr[1] = "F"
- self.view.makeToast("보일러 착화 감지센서 단선",duration: 10.0)
- self.bleMessageNetWork()
- break
- case "6":
- self.strArr[1] = "F"
- self.view.makeToast("실내 온도센서 단선",duration: 10.0)
- self.bleMessageNetWork()
- break
- case "7":
- self.strArr[1] = "F"
- self.view.makeToast("실내 온도센서 합선",duration: 10.0)
- self.bleMessageNetWork()
- break
- default:
- print("non error")
- }
- // 보일러 설정 온도 표시는 소수점 안나타내주고 있습니다.
- // 또한 온도가 100으로 80도이면 800으로 메시지가 넘어오기에 나누기 10을 해주고 표시 해주어야 합니다.
- let str = message.substring(start: 3, end: 6) // 보일러 설정 온도 표시
- var temp: Int = Int(str)!
- temp = temp/10
- let str2 = message.substring(start: 12, end: 15) // 실내 온도 표시
- var temp2: Int = Int(str2)!
- temp2 = temp2/10
- print(temp2)
- // 설정 온도 표시
- let str3 = message.substring(start: 3, end: 6)
- var temp3: Int = Int(str3)!
- temp3 = temp3/10
- ///// 베터리 잔량
- let str4 = message.substring(start: 18, end: 20)
- let temp4: Int = Int(str4)!
- let temp5 = (16-temp4) //
- let temp6 = 100-(temp5*25) // 0.05
- self.lb_bettery.text = String(temp6)+"%"
- ///// 베터리 잔량
- // 실내 온도 표시
- self.lb_temperature.text = String(temp2)+" ℃"
- // 설정 온도 숫자로 변환 후 저장
- self.Temperature = temp3
- // 현재 온도가 아닐시 설정온도로 보여줌
- if istemperature == false{
- self.lb_temperature2.text = String(temp3)+" ℃"
- }
- self.collectionView.reloadData()
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement