/// <summary> /// DKP 空调控制器 收发数据 判断接受数据 根据情况 多次或 等待发送 /// </summary> /// <returns></returns> private CommuniState DkpDadaSendRece(IsWait isWait) { CommuniState CommuniState = CommuniState.无回复; byte[] bRece = new byte[8]; int iReceLen = serial.SendReceByte(DjControl, ref bRece, 10, isWait); //txt 发送 接受 txtLog.TxtWriteByte("Air.txt", "DjControl Send", DjControl, false); if (iReceLen > 0) { txtLog.TxtWriteByte("Air.txt", "DjControl Rece", bRece, true); } if (iReceLen == 8) { if (bRece[0] == DjControl[0] && bRece[1] == DjControl[1] && bRece[2] == DjControl[2] && bRece[3] == DjControl[3] && bRece[4] == DjControl[4] && bRece[5] == DjControl[5] && bRece[6] == DjControl[6] && bRece[7] == DjControl[7]) { CommuniState = CommuniState.正常; } else { CommuniState = CommuniState.错误; } } else { if (iReceLen == 0) { CommuniState = CommuniState.无回复; } else { CommuniState = CommuniState.错误; } } return(CommuniState); }
/// <summary> /// 控制大金空调 开关或模式 /// </summary> public bool DjAirControl(byte bAddr, DjControlType type, byte bContent, IsWait isWiat) { bool blRet = false; DjControl[1] = bAddr; DjControl[2] = 0x03; DjControl[3] = 0x04; DjControl[4] = (byte)type; DjControl[5] = bContent; byte bCheck = 0; for (int i = 1; i < 6; i++) { bCheck += DjControl[i]; } DjControl[6] = bCheck; CommuniState ret = DkpDadaSendRece(isWiat); if (ret == CommuniState.错误) { int iSend = 3; for (int i = 0; i < iSend; i++) { Thread.Sleep(2000); ret = DkpDadaSendRece(isWiat); if (ret == CommuniState.正常) { break; } } } if (ret == CommuniState.正常) { blRet = true; } return(blRet); }
/// <summary> /// 连接 读写器 更新通信状态 /// </summary> public void OpenRfidNewState() { if (stateNet == CommuniState.错误) { TimeSpan span = DateTime.Now - timeLinkErr; if (span.TotalMinutes < 1) { return; } } bool blRet = OpenNetPort(); if (blRet) { blConnent = true; iLinkErr = 0; if (stateNet != CommuniState.正常) { stateNet = CommuniState.正常; //通信恢复正常 } } else { iLinkErr++; } if (iLinkErr > 3) { if (stateNet != CommuniState.错误) { stateNet = CommuniState.错误; //通信异常 } timeLinkErr = DateTime.Now; } }
/// <summary> /// 读大金空调运行状态 /// </summary> public CommuniState DjAirReadData(byte bAddr, ref DeviceRunState state, ref AirRunModel model, ref int iSetTemp) { CommuniState CommuniState = CommuniState.无回复; DjAirState[1] = bAddr; DjAirState[2] = 0x01; DjAirState[3] = 0x05; byte bCheck = 0; for (int i = 1; i < 4; i++) { bCheck += DjAirState[i]; } DjAirState[4] = bCheck; byte[] bRece = new byte[22]; int iReceLen = serial.SendReceByte(DjAirState, ref bRece, 10, IsWait.CanStop); //txt 发送 接受 txtLog.TxtWriteByte("Air.txt", "DjState Send", DjAirState, false); if (iReceLen > 0) { txtLog.TxtWriteByte("Air.txt", "DjState Rece", bRece, true); } if (iReceLen == 22) { bCheck = 0; for (int i = 1; i < 20; i++) { bCheck += bRece[i]; } if (bRece[0] == 0x7e && bRece[1] == bAddr && bRece[2] == 0x11 && bRece[3] == 0x05 && bRece[20] == bCheck && bRece[21] == 0x0d) { bool blPBoard = false;//P板和空调不通信 for (int i = 4; i < 20; i++) { if (bRece[i] != 0) { blPBoard = true; break; } } if (blPBoard) { CommuniState = CommuniState.正常; iSetTemp = bRece[4]; if (bRece[10] == 0x00) { state = DeviceRunState.停止; } else if (bRece[10] == 0x01) { state = DeviceRunState.运行; } // 60H:送风、61H:制热、62H:制冷、63H:自动、67H:除湿 if (bRece[11] == 0x60) { model = AirRunModel.送风; } else if (bRece[11] == 0x61) { model = AirRunModel.制热; } else if (bRece[11] == 0x62) { model = AirRunModel.制冷; } else if (bRece[11] == 0x63) { model = AirRunModel.自动; } else if (bRece[11] == 0x67) { model = AirRunModel.除湿; } } else { CommuniState = CommuniState.错误; } } } return(CommuniState); }