meter.c

来自「电力行业的DL645采集程序,嵌入式Linux环境」· C语言 代码 · 共 47 行

C
47
字号

#define ARM_METER_GLOBALS
#include "cfg_ISlave.h"


/*****************************************************************************************
函数名称:      BOOL MeterFilterFrame(INT8U *pbuf)
功能说明:      检查数据包、过滤0x33
输入参数:      
输出参数:      
其它说明:      
*****************************************************************************************/

BOOL MeterFilterFrame(INT8U *pbuf)
{
	MeterFrameType *pMeterFrame;
	INT8U checkSum;
	INT16U frameSize, datalen;	
	INT8U *ptr;

	pMeterFrame = (MeterFrameType *)pbuf;
	if(pMeterFrame->header1 != METER_FRAME_START_CH || pMeterFrame->header2 != METER_FRAME_START_CH)
	{
		return FALSE;
	}
	frameSize = pMeterFrame->datalen + METER_FRAME_EXT_LEN;
	checkSum = mCheckSumByte(pbuf, frameSize-2);
	if(checkSum != pbuf[frameSize-2])
	{
		return FALSE;
	}
	if(pbuf[frameSize-1] != METER_FRAME_END_CH)
	{
		return FALSE;
	}

	ptr = (INT8U *)pMeterFrame->data;
	datalen = pMeterFrame->datalen;
	while(datalen--)
	{
		*ptr -= 0x33;
		ptr++;
	}
	return TRUE;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?