📄 rscom.c
字号:
}
if ((ScBufAdr[3] >= 20) && (ScBufAdr[3] <= 39)){
for (i=0; i<(u8)((ScBufAdr[2] & 0x0F) - 1); i++){
Set_WJD((u8)(ScBufAdr[3] + i), ScBufAdr[i + 4]);
}
}
}
/* 在模式没有发送到外机之前,先清除允许标志 */
if (!ValBit(Sysflag,fModeflag)){
ClrBit(OutDevStu[0],fRunEnable);
ClrBit(OutDevStu[0],fOutDeforst);
}
if ValBit(OutDevStu[0],fRunEnable) ClrBit(Sysflag2,fRequest);
ScBufAdr[3] = (u8)((ScBufAdr[3] / 10) - 1); /* 参数代号 */
/* Go Next, No break */
case 2:
//if (!(((ScBufAdr[3] >= 1) && (ScBufAdr[3] <= 4)) ||
// ((ScBufAdr[3] >= 20) && (ScBufAdr[3] <= 59)))){
// ScBufAdr[3] = 1; /* 参数代号 */
//}
#if 1
if (ScBufAdr[3] == 1){
/* 三个参数 */
ScBufAdr[2] = (u8)((ScBufAdr[2] & 0x0F0) | 4);
ScBufAdr[4] = Get_NJR(20, j);
ScBufAdr[5] = Get_NJR(21, j);
ScBufAdr[6] = Get_NJR(22, j);
} else if ((ScBufAdr[3] >= 2) && (ScBufAdr[3] <= 4)){
#else
if ((ScBufAdr[3] >= 1) && (ScBufAdr[3] <= 4)){
#endif
/* 10个参数 */
ScBufAdr[2] = (u8)((ScBufAdr[2] & 0x0F0) | 11);
for (i=0; i<10; i++){
ScBufAdr[i+4] = Get_NJR((u8)((ScBufAdr[3] + 1) * 10 + i), j);
}
} else if ((ScBufAdr[3] >= 20) && (ScBufAdr[3] <= 59)){
/* 1个参数 */
ScBufAdr[2] = (u8)((ScBufAdr[2] & 0x0F0) | 2);
ScBufAdr[4] = Get_NJR(ScBufAdr[3], j);
} else {
ScBufAdr[1] = WJ_NJNoBROADCAST; /* 不发送 */
}
break;
case 3:
f = FALSE;
if ((ScBufAdr[3] >= 1) && (ScBufAdr[3] <= 4)){
ScBufAdr[3] = (u8)((ScBufAdr[3] + 1) * 10);
}
if ((ScBufAdr[3] >= 20) && (ScBufAdr[3] <= 59)){
f = TRUE;
for (i=0; i<(u8)((ScBufAdr[2] & 0x0F)- 1); i++){
f = (BOOLEAN)(Set_NJD((u8)(ScBufAdr[3] + i), ScBufAdr[i + 4]) && f);
}
}
ScBufAdr[2] = (u8)((ScBufAdr[2] & 0x0F0) | 0x01);
ScBufAdr[3] = (u8)(f? 0x0FE : 0x0FF); /* ACK/NAK */
break;
default:
ScBufAdr[1] = WJ_NJNoBROADCAST; /* 不发送 */
break;
}
if ((u8)(ScBufAdr[1] & NJNOMASK) != WJ_NJNoBROADCAST){ /* 不为广播地址,发送 */
SetBit(ScBufAdr[0],3); /* 设置应答标志 */
CRCchk(CRC_CALCULATE,ScBufAdr); /* 计算CRC */
ScFlag = (1 << fScREQ); /* 请求启动发送 */
UCSRB = (1 << RXCIE)|(1 << RXEN);
TCCR0 = 0x05; /* Normal, OC0 Disconnected, 1:256 */
OCR0 = (u8)(TCNT0 + 1024/32); /* 下次中断时间 1.024mS*/
WaitBeforeTx = (u8)(TCNT0 & 0x07); /* 随机延时 */
TIMSK |= (u8)(1 << OCIE0);
}
}
}
}
ClrBit(ScFlag,fScRxOk); /* 清除标志 */
}
}
void Set_WJD(u8 i,u8 v)
{
//u8 j;
switch(i){
case 20: /* 室外机工作状态 */
OutDevStu[0] = v;
break;
case 21: /* 系统最大额定制冷量(500W) */
SysSetPow = v;
break;
case 22: /* 系统当前总制冷量(500W) */
if (ValBit(Sysflag1,fRoPowCHK)){ /* 1: 请求功率检测 */
SetBit(Sysflag1,fEnPowCHK);
}
SysTotPow = v;
break;
case 23:
TmpVar = v;
break;
case 24: /* 外机请求开度 */
OutSideValve = (u16)((v<<8) + TmpVar);
break;
case 30: /* 室外机设备状态(2字节) */
OutDevStu[1] = v;
break;
case 31:
OutDevStu[2] = v;
break;
case 32: /* 室外机故障状态 */
OutSideErr[0] = (u8)((WJType == 1)? (v & 0x1F) : v);
break;
case 33: /* 室外机故障状态 */
OutSideErr[1] = (u8)((WJType == 1)? (v & 0x0E7) : (v & 0x17));
break;
case 34: /* 室外机故障状态 */
OutSideErr[2] = (u8)((WJType == 1)? (v & 0x0C7) : v);
break;
case 35: /* 室外机故障状态 */
OutSideErr[3] = (u8)((WJType == 1)? (v & 0x0C7) : (v & 0x1F));
break;
case 36: /* 室外机故障状态 */
OutSideErr[4] = (u8)((WJType == 1)? 0 : (v & 0x07));
break;
case 37: /* 室外机故障状态 */
OutSideErr[5] = (u8)((WJType == 1)? 0 : (v & 0x1));
break;
default:
break;
}
}
BOOLEAN Set_NJD(u8 i, u8 v)
{
u8 j;
switch(i){
case 20:
/* 扫风方式 */
SetFDoorUnit((u8)(v >> 6));
/* 设定风速 */
SetFanStatus((u8)((v >> 4) & 0x03));
/* 室内机模式 */
j = (u8)(v & MODEMASK);
if (j != 0){
ClrBit(Sysflag,fContinue);
if (j == 5){ /* 强制制热 */
SetBit(Sysflag,fContinue);
j = MODEHEAT;
} else if (j == 6){ /* 强制制冷 */
SetBit(Sysflag,fContinue);
j = MODECOOL;
} else if (j == 7){
j = MODEAUTO; /* 自动模式 */
}
SetBit(RunMode,fSysOnOff); /* 开机 */
SetMode(j);
} else {
/* 清除定时关标志 */
SlpTmFlag &= (u8)((1<<bb4ms)|(1<<bb2s)|(1<<fTime));
SysOff();
}
SysInit();
return TRUE;
break;
case 21: /* 内机功率(On 500W) */
if (!ValBit(RunMode,fSysOn) && /* 停机时才允许修改 */
(v != 0)){
PowerConst = v;
ClrBit(Errorflg,fSysPowErr); /* 1: 室内机总功率过大 */
return TRUE;
}
break;
case 22: /* 内机故障标志2 */
case 30: /* 内机故障标志 */
Errorflg = 0;
Errorflg2 = 0;
// PumpErrFlg = 0x03;
return TRUE;
break;
case 35: /* 设定温度 */
if ((v >= (SetupTpMIN - 0x80)) &&
(v <= (SetupTpMAX - 0x80))){
SetupTp = (u8)(v + 0x80);
SysInit();
return TRUE;
}
break;
case 36: /* 制冷调阀零点 */
j = (u8)(v + 0x80);
if ((j >= 118) && (j <= 138)){
SetOnCool = j;
return TRUE;
}
break;
case 37: /* 制热调阀零点 */
j = (u8)(v + 0x80);
if ((j >= 118) && (j <= 138)){
SetOnHeat = j;
return TRUE;
}
break;
case 38: /* 非调节温度 */
if (v <= 10) {
SetUnacc = v;
return TRUE;
}
break;
case 39: /* 制热膨胀阀常开开度 */
if (v >= 40){
SetOn = v;
return TRUE;
}
break;
case 40: /* 室内机膨胀阀类型 */
if (v == 1) {
ClrBit(SysConfig,fPZFClockWise); /* 0:1 三花(逆时针开阀) */
} else if (v == 20){
SetBit(SysConfig,fPZFClockWise); /* 1:20 华鹭(顺时针开阀)*/
}
return TRUE;
break;
case 46: /* 室内机膨胀阀设定开度(Lo,Hi:2字节) */
TmpVar = v;
return TRUE;
break;
case 47:
if ((u16)((v << 8) + TmpVar) <= PZFMAX){
SetupVal_Lo = TmpVar;
SetupVal_Hi = v;
return TRUE;
}
break;
case 48: /* 内机选择项 */
if ((v & 0x0E0) == 0) {
SysConfig = v;
IfDisHeat();
return TRUE;
}
break;
#ifdef ChigoXG1
#ifndef ChigoXG1Set
case 49: /* 制热温度补偿 */
j = (u8)(v + 0x80);
if ((j >= 118) && (j <= 138)){
SetOffset = j;
return TRUE;
}
#endif
#endif
break;
case 50: /* 内机模式 */
if (v == 0){
/* 清除定时关标志 */
SlpTmFlag &= (u8)((1<<bb4ms)|(1<<bb2s)|(1<<fTime));
SysOff(); /* 关机 */
SysInit();
return TRUE;
} else if (v < 8) {
if (v == 6){ /* 强制制热 */
SetBit(Sysflag,fContinue);
j = MODEHEAT;
} else if (v == 7){ /* 强制制冷 */
SetBit(Sysflag,fContinue);
j = MODECOOL;
} else {
ClrBit(Sysflag,fContinue);
j = (u8)((v == 1)? MODEAUTO : ((v == 5)? MODEHEAT : v));
}
SetBit(RunMode,fSysOnOff); /* 申请开机 */
SetMode(j);
SysInit();
return TRUE;
}
break;
case 51: /* 内机风速 00: Auto/01: L/ 02: M/03: H */
FanStatus = (u8)((FanStatus & ~FANMASK_S)|(v & FANMASK_S));
SysInit();
return TRUE;
break;
#ifdef EnSWING
case 52: /* 扫风状态 */
FDoorUnit = (u8)((FDoorUnit & ~SWINGMASK)|(v & SWINGMASK));
SysInit();
return TRUE;
break;
#endif
case 53: /* 内机ID(包括外机) */
j = (u8)(v & NJNOMASK);
if ((j >= WJ_NJNoMIN) && (j <= WJ_NJNoMAX)){
ClrRsErr(v);
return TRUE;
}
break;
}
return FALSE;
}
void ClrRsErr(u8 wjnj)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -