⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 message_storage.h

📁 458通讯
💻 H
字号:
#ifndef _MES_STOR
#define _MES_STOR
#include "modbus_client.h"



#define ERROR 0
#define OK 1
//----循环队列------
#define MAXQSIZE0 3
#define MAXDATASIZE0 30

#define MAXQSIZE1 3
#define MAXDATASIZE1 30

#define MAXQSIZE2 3
#define MAXDATASIZE2 30

BYTE Data_Buffer0[MAXQSIZE0][MAXDATASIZE0];          //
BYTE  *Uart_buf0[MAXQSIZE0] = 
	    {Data_Buffer0[0],Data_Buffer0[1],Data_Buffer0[2]/*,
		Data_Buffer0[3],Data_Buffer0[4]*/};     
		//缓冲区
		
BYTE Data_Buffer1[MAXQSIZE1][MAXDATASIZE1];          //
BYTE  *Uart_buf1[MAXQSIZE1] = 
	    {Data_Buffer1[0],Data_Buffer1[1],Data_Buffer1[2]/*,
		Data_Buffer1[3],Data_Buffer1[4]*/};     
		//缓冲区
		
BYTE Data_Buffer2[MAXQSIZE2][MAXDATASIZE2];          //
BYTE  *Uart_buf2[MAXQSIZE2] = 
	    {Data_Buffer2[0],Data_Buffer2[1],Data_Buffer2[2]/*,
		Data_Buffer2[3],Data_Buffer2[4]*/};     
		//缓冲区

typedef struct _BUF_QUEUE
{
	BYTE front;                    
	//头
	BYTE rear;                     
	//尾
    BYTE **UART_BUF;
	/*BYTE *DATA_BUF;*/
	BYTE Max_que_size;
	BYTE Max_data_size;
}BUF_QUEUE;

BUF_QUEUE EQU_sto[MAX_EQU_NUM] = 
{
  {0,0,Uart_buf0,/*Data_Buffer0,*/MAXQSIZE0,MAXDATASIZE0},
  {0,0,Uart_buf1,/*Data_Buffer1,*/MAXQSIZE1,MAXDATASIZE1},
  {0,0,Uart_buf2,/*Data_Buffer2,*/MAXQSIZE2,MAXDATASIZE2}
};

//--------循环对列的基本操作---------

void InitQueue(BYTE EUQ_num)                  
//初始化循环队列
{
    EQU_sto[EUQ_num].front = EQU_sto[EUQ_num].rear = 0;
}

BYTE QueueLenth(BYTE EUQ_num)         
//当前队列报文的个数
{
	return (EQU_sto[EUQ_num].rear - 
	EQU_sto[EUQ_num].front + 
	EQU_sto[EUQ_num].Max_que_size) 
	% EQU_sto[EUQ_num].Max_que_size;
}

BYTE WrQueue(BYTE *e,BYTE EUQ_num,BYTE len)      
//向队列中写入元素e
{
    BYTE i;
	if((EQU_sto[EUQ_num].rear + 1) % EQU_sto[EUQ_num].Max_que_size == 
	EQU_sto[EUQ_num].front)  
	//队列满
	return ERROR;
	*(*(EQU_sto[EUQ_num].UART_BUF + EQU_sto[EUQ_num].rear)) = len;     
	//第0个节存放长度
	for(i = 0;i < len; i ++)
	{
        *(*(EQU_sto[EUQ_num].UART_BUF + EQU_sto[EUQ_num].rear) + i + 1) = *(e + i);
		//从第一个字节开始存放
	}
	EQU_sto[EUQ_num].rear = (EQU_sto[EUQ_num].rear + 1) % EQU_sto[EUQ_num].Max_que_size;
	return OK;
}

BYTE ReQueue(BYTE *e,BYTE EUQ_num)   
//从队列中读出元素
{
    BYTE i,len;
	if(EQU_sto[EUQ_num].front == EQU_sto[EUQ_num].rear)return ERROR;
	len = **(EQU_sto[EUQ_num].UART_BUF + EQU_sto[EUQ_num].front);
	for(i = 0;i < len;i++)
	*(e + i)= *(*(EQU_sto[EUQ_num].UART_BUF + EQU_sto[EUQ_num].front) + i + 1);
//	Uart_buf[front] = 0;
	EQU_sto[EUQ_num].front = (EQU_sto[EUQ_num].front + 1) % EQU_sto[EUQ_num].Max_que_size;
	return OK;
}
//----------------------------------------------------------
void message_storage(BYTE *,BYTE,BYTE);
void message_read(BYTE *,BYTE);
#endif

⌨️ 快捷键说明

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