zlg500s_comm.c
来自「zlg500S 刷卡机 I2C 总线51程序」· C语言 代码 · 共 55 行
C
55 行
#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 + =
减小字号Ctrl + -
显示快捷键?