📄 zlg500s_comm.c
字号:
#define ZLG500S_COMM_GLOBALS
#include "config.h"
#include "main.h"
#include "zlg500S_comm.h"
#include "delay.h"
extern INT8U Zlg500S_Send(INT8U slv_adr,INT8U idata *databfr,INT8U len);
extern INT8U Zlg500S_Rcv(INT8U slv_adr,INT8U idata *databfr);
void ZLG500S_COMM_Init()
{
SerDTvalid = FALSE;
}
INT8U Ser_Rcv()
{
INT8U i,BCC;
INT8U Status = FALSE;
if(!zlg500S_Int)
{
if(Zlg500S_Rcv(0xb2,SerBfr))
SerDTvalid = TRUE;
}
if(SerDTvalid)
{ //已接收一帧数据,进行数据校验
if(SerBfr[SerBfr[FRAMELEN]-1] == ETX && SerBfr[FRAMELEN] == (SerBfr[LENGTH]+PRTCLEN))
{ //正确接收到ETX,及帧长度等于数据长度加协议长度,则数据有效
BCC = 0;
for(i=0; i<(SerBfr[FRAMELEN]-1); i++)
{
BCC ^= SerBfr[i];
}
if(BCC == 0xff)
Status = TRUE; //BCC校验通过
}
SerDTvalid = FALSE;
}
return Status;
}
INT8U Ser_Send()
{
INT8U i,BCC;
SerBfr[FRAMELEN] = SerBfr[LENGTH]+PRTCLEN; //帧长度等于数据长度加协议长度
BCC = 0;
for(i=0; i<(SerBfr[FRAMELEN]-2); i++)
BCC ^= SerBfr[i];
SerBfr[SerBfr[FRAMELEN]-2] = ~BCC;
SerBfr[SerBfr[FRAMELEN]-1] = ETX;
return Zlg500S_Send(0xb2,SerBfr,SerBfr[FRAMELEN]);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -