📄 commujk1f.c
字号:
for(i=1; i<=char2; i++) //calculate crc
{
char3= char3 + (0xff&(*pTRxdBuffer++));
}
char3 = 0xff&char3;
if(char3 != (*pTRxdBuffer&0xff))
{
flag2 = Again_AllReceive;
*(ReceBuff.pOutBuffer) = *(ReceBuff.pInBuffer);
break;
}
if( ((*++pTRxdBuffer)&0xff) != End_Code)
{
flag2 = Again_AllReceive;
*(ReceBuff.pOutBuffer) = *(ReceBuff.pInBuffer);
break;
}
ReceFrameFlagJK1 = FrameunFix;
return;
}
else
{
flag2 = Again_OneReceive;
break;
}
default:
flag2 = Again_OneReceive;
break;
}
}
//-----------------_continue to receive one character------------------------*/
if(flag2 == Again_OneReceive)
{
pTRxdBuffer = Buffer+5;
Rchar16c554JK1(char1,COM_PORT);
if(char1[1] == 0x00) //receive char_ reliable
{
*pTRxdBuffer = char1[0];
ptr=pTRxdBuffer = Buffer; //transmit char_ to frame buffer
for(i=1; i<=5; i++)
{
*pTRxdBuffer++ = *++ptr;
}
flag2 = Check_Receive;
}
else
{
flag2 = Again_AllReceive;
}
}
}
}
/* This function has been inspected.GauTsunFar 2001-12-22
函数功能: transmit one frame of characters;
输入参数: buffer address of transmit frame--------- TransUpBuffRemJK1;
length of transmit frame----------------- Length1;
commu port--------------------------------COM_PORT;
输出参数: no;
返回数值: no need mention;
修改记录:
*/
int TransmitOneFrameJK1(unsigned char* TransUpBuffRemJK1,int Length1,unsigned char *COM_PORT)
{
int i,flag;
unsigned char *pTRxdBuffer;
volatile unsigned char *address1,*address2;
int timecount;
OPTION old_preempt;
//----------------------------------------------------------------
address1 = COM_PORT+5; /* LineSR */
address2 = COM_PORT+0; /* TransmitBR */
pTRxdBuffer = TransUpBuffRemJK1;
//U_Sleep(5);
if(COM_PORT == Com_Port3)
{
// CtrlPortBuf |= _485_OE1; /*485OE1 Selected*/
// *RDY_OE = CtrlPortBuf;
enable485();
}
if(COM_PORT == Com_Port4)
{
// CtrlPortBuf |= _485_OE1; /*485OE2 selected*/
// *RDY_OE = CtrlPortBuf;
enable485();
}
NU_Sleep(5);
for(i=1; i<=Length1; i++)
{
Tchar16c554JK1(COM_PORT,*pTRxdBuffer++);
}
flag = *address1;
old_preempt = NU_Change_Preemption(NU_NO_PREEMPT);
while(!((flag&TransReady_) && (HoldRegEmpty_&flag)))
{
flag = *address1;
}
// NU_Sleep(5);
if(COM_PORT==Com_Port3)
{
// CtrlPortBuf &= (~_485_OE1); /*485OE1 unSelected*/
// *RDY_OE = CtrlPortBuf;
disable485()
}
if(COM_PORT==Com_Port4)
{
// CtrlPortBuf &= (~_485_OE1); /*485OE2 unSelected*/
// *RDY_OE = CtrlPortBuf;
disable485()
}
NU_Change_Preemption(old_preempt);
return(1);
}
/* This function has been inspected.GauTsunFar 2001-12-22
函数功能: retransmit a frame;
输入参数: buffer address of transmit frame--------- TransUpBuffRemJK1;
commu port--------------------------------COM_PORT;
输出参数: no;
返回数值: no need mention;
修改记录:
*/
int ReTransmitFrameJK1(unsigned char* TransUpBuffRemJK1,unsigned char *COM_PORT)
{
int Length1;
//----------------------------------------------------------------
if((0xff&TransUpBuffRemJK1[0]) == 0x10)
{
Length1 = 5;
}
else if((0xff&TransUpBuffRemJK1[0]) == 0x68)
{
Length1 = (0xff & TransUpBuffRemJK1[1])+6;
}
else
{
return(0);
}
TransmitOneFrameJK1(TransUpBuffRemJK1,Length1,COM_PORT) ;
return(1);
}
/* This function has been inspected.GauTsunFar 2001-12-22
函数功能: transmit a frame of Unfix Frame;
输入参数: buffer address of transmit frame--------- TransUpBuffRemJK1;
commu port--------------------------------COM_PORT;
输出参数: no;
返回数值: no need mention;
修改记录:
*/
int FrameTransmitUnFixJK1(unsigned char* TransUpBuffRemJK1,unsigned char *COM_PORT)
{
int Length1,i;
unsigned char AccountNumber = 0;
unsigned char *pTRxdBuffer;
//----------------------------------------------------------------
pTRxdBuffer = TransUpBuffRemJK1+4;
TransUpBuffRemJK1[0] = TransUpBuffRemJK1[3] = 0x68;
TransUpBuffRemJK1[5] = subAddress_backup;
Length1=(TransUpBuffRemJK1[1] & 0xff);
if(Length1 <= 2)return(0);
for(i=1; i<=Length1; i++)
{
AccountNumber = AccountNumber + *pTRxdBuffer++;
}
*pTRxdBuffer++ = AccountNumber;
*pTRxdBuffer = 0x16;
Length1 = (TransUpBuffRemJK1[1]&0xff)+4+2;
TransmitOneFrameJK1(TransUpBuffRemJK1,Length1,COM_PORT) ;
return(1);
}
/* This function has been inspected.GauTsunFar 2001-12-22
函数功能: transmit a frame of fix Frame;
输入参数: buffer address of transmit frame--------- TransUpBuffRemJK1;
commu port--------------------------------COM_PORT;
输出参数: no;
返回数值: no need mention;
修改记录:
*/
int FrameTransmitFixJK1(unsigned char* TransUpBuffRemJK1,unsigned char *COM_PORT)
{
int Length1=5;
//----------------------------------------------------------------
TransmitOneFrameJK1(TransUpBuffRemJK1,Length1,COM_PORT) ;
return(1);
}
/* This function has been inspected.GauTsunFar 2001-12-22
函数功能:1. compare reveive Frame and transfer corresponding function.
2. transmit the corresponding data to buffer of transmiting frame;
输入参数: buffer address of receive frame--------- ReceUpBuffRemJK1;
commu port-------------------------------COM_PORT;
输出参数: buffer address of transmit frame-------- TransUpBuffRemJK1;
返回数值: no need mention;
修改记录:
*/
int TransferFun103JK1(unsigned char* ReceUpBuffRemJK1,
unsigned char* TransUpBuffRemJK1,unsigned char *COM_PORT)
{
unsigned char ControlCode;
UNSIGNED Event_flag;
int i;
unsigned char temp_char;
//----------------------------------------------------------------
//------------------------receive fix frame----------------------*/
if(ReceFrameFlagJK1==FrameFix)
{
ControlCode = (ReceUpBuffRemJK1[1]) & 0xff;
if(!(ControlCode&_PRM))
{
ReceFrameFlagJK1 = NotPrimaryFrame ;
TransmitflagJK1 = NoTransmit;
return(0); /*Not primary*/
}
if((ControlCode&_FCV))
{
if(!((ControlCode&_FCB)^(ImageCtrCodeJK1&_FCB)))
{
if(!(MsgTransUpFlagJK1&Reset_CU))
{
TransmitflagJK1 = ReTransmit;
ImageCtrCodeJK1 = ControlCode;
return(1);
}
}
}
ImageCtrCodeJK1 = ControlCode;
switch(ControlCode&0x0F)
{
case 0: /*reset communication component*/
Initial_16c554JK1(COM_PORT);
MsgTransUpFlagJK1 = Reset_CU;
MsgTransUpFlagJK1 |= Reset_Device;
Sure_MsgJK1();
break;
case 7: /*reset FCB component*/
ImageCtrCodeJK1 &= 0xdf;
MsgTransUpFlagJK1 |= Reset_FCB;
Sure_MsgJK1();
break;
case 9:
/*链路状态*/
LSDU_Status_ReplyJK1();
break;
case 10:
if(MsgTransUpFlagJK1&Reset_CU )
{
Rest_CU_MsgJK1();
break;
}
if(MsgTransUpFlagJK1&Reset_FCB)
{
Rest_FCB_MsgJK1();
break;
}
if(MsgTransUpFlagJK1&Reset_Device)
{
Rest_Device_MsgJK1();
break;
}
if(MsgTransUpFlagJK1&Gen_Inspect_Start)
{
Trans_Gen_Inspect_Events();
break;
}
if(MsgTransUpFlagJK1&ReModify_Time)
{
Modify_Time_MsgJK1();
break;
}
if(MsgTransUpFlagJK1&Sets_Parameter)
{
Sets_Parameter_MsgJK1();
break;
}
if(MsgTransUpFlagJK1&ASDU20_Sure)
{
ASDU_20_Sure();
break;
} /*有关命令确认*/
if(pReportOUT_COM != pReportIN)
{
Trans_DIN_Status_ChangeJK1();
break;
}
if(MsgTransUpFlagJK1&ASDU20_Return)
{
ASDU_20_Return();
break;
}
if(MsgTransUpFlagJK1&Setting_COMMAND)
{
Transmit_ASDU61();
break;
}
if(MsgTransUpFlagJK1&DIN_Status_Change)
{
Trans_DIN_Status_ChangeJK1();
break;
}
if(MsgTransUpFlagJK1&Tap_Status_Change)
{
Trans_Tap_Chger_Change();
break;
}
if(MsgTransUpFlagJK1 & WarningSignals)
{
Trans_Self_Insp_ErrorJK1();
break;
}
if(MsgTransUpFlagJK1&Exec_Tap_Obj)
{
Trans_Exec_Tap_Obj();
break;
} /*有关TAP确认*/
if(MsgTransUpFlagJK1&Select_Tap_Obj)
{
Trans_Select_Tap_Obj();
break;
} /*有关TAP确认*/
if(MsgTransUpFlagJK1&Esc_Tap_Obj)
{
Trans_Esc_Tap_Obj();
break;
} /*有关TAP确认*/
if(MsgTransUpFlagJK1&Exec_CB_Obj)
{
Trans_Exec_CB_Obj();
break;
} /*有关CB确认*/
if(MsgTransUpFlagJK1&Select_CB_Obj)
{
Trans_Select_CB_Obj();
break;
} /*有关CB确认*/
if(MsgTransUpFlagJK1&Esc_CB_Obj)
{
Trans_Esc_CB_Obj();
break;
} /*有关CB确认*/
if(MsgTransUpFlagJK1&Coulometer_Freeze)
{
Trans_Coulometer_Freeze();
break;
} /*有关命令确认*/
if(MsgTransUpFlagJK1&Coulometer_Count)
{
Trans_Coulometer_Count();
break;
} /*有关命令确认*/
if(MsgTransUpFlagJK1&Coulometer_End)
{
Trans_Coulometer_End();
break;
}
if(MsgTransUpFlagJK1&Coulometer_No)
{
Trans_Coulometer_No();
break;
}
if(MsgTransUpFlagJK1&Return_Version)
{
MsgTransUpFlagJK1 &= Return_Version^0xffffffff;
Rest_FCB_MsgJK1();
TransUpBuffRemJK1[8]=21;
TransUpBuffRemJK1[11]=0x06;
break;
} /*有版本确认*/
if(MsgTransUpFlagJK1 & ERROR_COMMAND)
{
Trans_ASDU_ERROR();
break;
}
NoMessag_ReplyJK1();
break;
case 11:
if(ASDU_50_FlagJK1 & _Data_RDY)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -