📄 rscom.c
字号:
{
if (WJ_NJNo != wjnj){
WJ_NJNo = wjnj; /* 地址改变,则清除地址冲突标志 */
ClrBit(Errorflg,fRsAddrErr); /* 1:内机地址冲突 */
ClrBit(Errorflg,fSComErr); /* 1:外机通信故障 */
ScAddrErrCnt = 0;
ScMonCnt = 0;
}
}
u8 Get_NJR(u8 i, u8 jcmd)
{
u8 j;
switch(i){
case 20:
#ifdef EnSWING
j = (u8)(((FanStatus & 0x03) << 4)| /* 设定风速 */
((FDoorUnit & SWINGMASK) << 6)); /* 扫风方式 */
#else
j = (u8)((FanStatus & 0x03) << 4); /* 设定风速 */
#endif
/* 室内机故障停机 */
if ((Errorflg|Errorflg2) != 0) j |= 0x08;
/* 室内机模式 */
if (ValBit(RunMode,fSysOn)){
SetBit(Sysflag,fModeflag);
j |= (u8)((RunMode & MODEMASK)|(ValBit(Sysflag,fContinue)? 4 : 0));
}
return j;
break;
case 21: /* 内机功率(On 500W) */
if (ValBit(Sysflag1,fReqPowCHK)){ /* 1: 请求功率检测 */
SetBit(Sysflag1,fRoPowCHK);
}
// return (u8)(((ValBit(RunMode,fSysOn) && ValBit(Sysflag2,fRequest))||
// ValBit(Sysflag,fPower))? PowerConst : 0);
return (u8)((ValBit(Sysflag,fPower) || (jcmd != 1))? PowerConst : 0);
break;
case 22: /* 内机故障标志2 */
return Errorflg2;
break;
case 23:
return Sysflag;
break;
case 24:
return Sysflag1;
break;
case 25:
return Sysflag2;
break;
case 26:
//return MyPc2;
break;
case 27:
//return MyPc;
break;
case 28:
// return PumpErrFlg;
// break;
case 29:
return RunMode;
break;
case 30: /* 内机故障标志 */
return Errorflg;
break;
case 31: /* 室内温度 */
if (ValBit(Errorflg,fAmbientErr)){
return 0x80;
} else if (jcmd == 1){
/* 强制运行时,修改设定温度,不处理补偿温度 */
if (!ValBit(Sysflag,fContinue)){
if (ValBit(RunMode,fSysOn) && ValBit(Sysflag2,fRequest)){
if ((RunMode & MODEMASK) == MODEHEAT){
return (u8)(SetupTp - 0x81); /* Tr = Ts - 1 */
} else if (((RunMode & MODEMASK) == MODECOOL)||
((RunMode & MODEMASK) == MODEDRY)){
return (u8)(SetupTp - 0x7F); /* Tr = Ts + 1 */
}
#ifdef ChigoXG1
} else {
if ((RunMode & MODEMASK) == MODEHEAT){
#ifdef ChigoXG1Set
return (u8)(AmbientTp - ChigoXG1Set);
#else
return (u8)(AmbientTp - SetOffset);
#endif
}
#endif
}
} else if ((((RunMode & MODEMASK) == MODECOOL) ||
((RunMode & MODEMASK) == MODEDRY)) &&
(AmbientTp < 0x85)){
return 0x05 ;
}
}
return (u8)(AmbientTp - 0x80);
break;
case 32: /* 中点温度 */
return (u8)(ValBit(Errorflg,fTubeMidErr)? 0x80: TubeMidTp - 0x80);
break;
case 33: /* 入口(细管)温度 */
return (u8)(ValBit(Errorflg,fTubeInErr)? 0x80: TubeInTp - 0x80);
break;
case 34: /* 出口(粗管)温度 */
return (u8)(ValBit(Errorflg,fTubeOutErr)? 0x80: TubeOutTp - 0x80);
break;
case 35: /* 设定温度 */
/* 强制运行时,修改设定温度,不处理补偿温度 */
if (ValBit(Sysflag,fContinue) && (jcmd == 1)){
if ((RunMode & MODEMASK) == MODEHEAT){ /* Ts = Tr + 5 */
return (u8)((AmbientTp > 0x7B) ? (AmbientTp + 0x85) : 0);
} else if (((RunMode & MODEMASK) == MODECOOL)||
((RunMode & MODEMASK) == MODEDRY)){ /* Ts = Tr - 5 */
return (u8)((AmbientTp > 0x85) ? (AmbientTp + 0x7B) : 0);
}
}
return (u8)(SetupTp - 0x80);
break;
case 36: /* 制冷调阀零点 */
return (u8)(SetOnCool - 0x80);
break;
case 37: /* 制热调阀零点 */
return (u8)(SetOnHeat - 0x80);
break;
case 38: /* 非调节温度 */
return SetUnacc;
break;
case 39: /* 制热膨胀阀常开开度 */
return SetOn;
break;
case 40: /* 室内机膨胀阀类型 0:1 三花(逆时针开阀),1:20 华鹭(顺时针开阀)*/
return (u8)(ValBit(SysConfig,fPZFClockWise)? 20: 1);
break;
#ifdef NJTYPEID
case 41: /* 室内机类型 */
return NJTYPEID;
break;
#endif
//case 42: /* 内机温度传感器类型 0: 3470B */
// return 0;
// break;
case 43: /* 内机程序版本号 V2.00 */
return 200;
break;
case 44: /* 室内机膨胀阀当前开度(Lo,Hi:2字节) */
return CurVal_Lo;
break;
case 45:
return CurVal_Hi;
break;
case 46: /* 室内机膨胀阀设定开度(Lo,Hi:2字节) */
return SetupVal_Lo;
break;
case 47:
return SetupVal_Hi;
break;
case 48: /* 内机选择项 */
return SysConfig;
break;
#ifdef ChigoXG1
case 49: /* 制热温度补偿 */
#ifdef ChigoXG1Set
return (u8)(ChigoXG1Set - 0x80);
#else
return (u8)(SetOffset - 0x80);
#endif
break;
#endif
case 50: /* 内机模式 */
SetBit(Sysflag,fModeflag);
if (ValBit(RunMode,fSysOnOff)){
if (ValBit(Sysflag2,fMAuto) ||
((RunMode & MODEMASK) == MODEAUTO)){
return 0x01; /* 自动 */
} else if ((RunMode & MODEMASK) == MODEHEAT){
if (ValBit(Sysflag,fContinue)) return 0x06;
return 0x05; /* 制热 */
} else if ((RunMode & MODEMASK) == MODECOOL){
if (ValBit(Sysflag,fContinue)) return 0x07;
return 0x02; /* 制冷 */
} else {
return (u8)(RunMode & MODEMASK); /* 除湿/通风 */
}
//} else {
// return 0x00; /* 关机 */
}
break;
case 51: /* 内机风速 00: Auto/01: L/ 02: M/03: H */
return FanStatus;
break;
#ifdef EnSWING
case 52: /* 扫风状态 */
return FDoorUnit;
break;
#endif
case 53: /* 内机ID(包括外机) */
return WJ_NJNo;
break;
}
return 0x00; /* 不支持的项,都返回 0x00 */
}
/*
Dim i As Byte
Dim j As Byte
Dim R4 As Byte
Dim R5 As Byte
R4 = 0 ' H
R5 = 0 ' L
For j = 1 To 3 + (ss(3) And &HF)
i = ss(j) Xor R5
R5 = R4 Xor sstl(i)
R4 = ssth(i)
Next j
ss(j) = R5 Mod 256
ss(j + 1) = R4 Mod 256
*/
#if 0
BOOLEAN CRCchk (u8 f, u8 *ss)
{
u8 i,j,k;
u8 R4,R5;
u8 *p;
R4 = 0; /* H */
R5 = 0; /* L */
p = ss;
k = (u8)((ss[2] & 0x0F) + 3);
for(j=0; j<k; j++){
i = (u8)(*p++^R5);
R5 = (u8)(sstl[i]^R4);
R4 = ssth[i];
}
if (f == CRC_CHECK){
if ((*p++ == R5) && (*p == R4)) return TRUE;
} else {
*p++ = R5;
*p = R4;
}
return FALSE;
}
#endif
/*
Dim i As Integer, ir As Integer
Dim j As Integer
Dim k As Integer
Dim R4 As Long
R4 = 0
For j = 1 To (ss(3) And &HF) + 3
i = ss(j)
For k = 0 To 7
ir = (i Mod 2) Xor (R4 And 1&)
R4 = (R4 \ 2) Xor (&HA001& * ir)
i = i \ 2
Next k
Next j
ss(l + 1) = R4 Mod 256
ss(l + 2) = (R4 \ 256) Mod 256
*/
//#if 0
BOOLEAN CRCchk(u8 f, u8 *ss)
{
u8 i,j,k,l;
u16 R4;
u8 *p;
R4 = 0;
p = ss;
l = (u8)((ss[2] & 0x0F) + 3);
for(j=0; j<l; j++){
i = *p++;
for(k=0; k<8; k++){
if (((i^(u8)R4) & 0x01) == 0){
R4 >>= 1;
} else {
R4 = (u16)((R4>>1)^0x0A001);
}
i >>= 1;
}
}
if (f == CRC_CHECK){
if ((*p++ == (u8)R4) && (*p == (u8)(R4>>8))) return TRUE;
} else {
*p++ = (u8)R4;
*p = (u8)(R4>>8);
}
return FALSE;
}
//#endif
#endif
/*** (c) 2005 佛山菱电 **************************** END OF FILE *************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -