2025-04-24 11:37:10 +08:00
|
|
|
|
#include "agreement.h"
|
|
|
|
|
|
#include "system.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
QUEUE_DATA RecQueue;
|
|
|
|
|
|
WORK_TIME WorkTime;
|
|
|
|
|
|
SYS_DATA s_Data;
|
|
|
|
|
|
//GET_DATA_FREQUENCY data_parameter[20]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
void RecQueueInit(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
RecQueue.front=0;
|
|
|
|
|
|
RecQueue.rear=0;
|
|
|
|
|
|
}
|
|
|
|
|
|
void Float2char(unsigned char *Data,float Fldata)
|
|
|
|
|
|
{
|
|
|
|
|
|
Data[0]=(unsigned char)(((int)(Fldata))&0x00FF);
|
|
|
|
|
|
Data[1]=(unsigned char)(((((int)(Fldata)))&0xFF00)>>8);
|
|
|
|
|
|
}
|
|
|
|
|
|
void SysDataInit(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
s_Data.ReceiveOffset=0;
|
|
|
|
|
|
s_Data.ReceiveOKFlag=_FALSE;
|
|
|
|
|
|
s_Data.UartStaus=Receive_head;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
s_Data.Allow_GetData_Flag = 0; //<2F><>ʼ<EFBFBD><CABC>Ϊ<EFBFBD><CEAA>ֹ<EFBFBD>ɼ<EFBFBD>
|
|
|
|
|
|
s_Data.Allow_GetData_Count = 0; //<2F><><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
RecQueueInit();
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
uint8_t PushQueue(QUEUE_DATA *que_data,uint8_t data)
|
|
|
|
|
|
{
|
|
|
|
|
|
if((que_data->rear+1)%(RECEIVE_BUFFSIZE)==que_data->front)// full
|
|
|
|
|
|
{
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
que_data->Buf[que_data->rear]=data;
|
|
|
|
|
|
que_data->rear=(que_data->rear+1)%(RECEIVE_BUFFSIZE);
|
|
|
|
|
|
return 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
uint8_t PopQueue(QUEUE_DATA *que_data,uint8_t* data)
|
|
|
|
|
|
{
|
|
|
|
|
|
if(que_data->rear==que_data->front)//empty
|
|
|
|
|
|
{
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
*data = que_data->Buf[que_data->front];
|
|
|
|
|
|
que_data->front =(que_data->front+1)%(RECEIVE_BUFFSIZE);
|
|
|
|
|
|
return 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
//˫<><CBAB>ַ<EFBFBD>жϳ<D0B6><CFB3><EFBFBD>
|
|
|
|
|
|
void Uart1_Sevice(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
uint8_t temp = 0;
|
|
|
|
|
|
if(s_Data.ReceiveOKFlag==_FALSE)
|
|
|
|
|
|
{
|
|
|
|
|
|
if(PopQueue(&RecQueue,&temp))
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
switch (s_Data.UartStaus)
|
|
|
|
|
|
{
|
|
|
|
|
|
case Receive_head:
|
|
|
|
|
|
{
|
|
|
|
|
|
if(temp == HEAD_AB)
|
|
|
|
|
|
{
|
|
|
|
|
|
s_Data.ReceiveBuf[s_Data.ReceiveOffset++]=temp;
|
|
|
|
|
|
s_Data.UartStaus=Receive_addr;
|
|
|
|
|
|
g_Data.Uart1RcvOverTime = 500;
|
|
|
|
|
|
}
|
|
|
|
|
|
};
|
|
|
|
|
|
break;
|
|
|
|
|
|
case Receive_addr:
|
|
|
|
|
|
{
|
|
|
|
|
|
if(temp == ADDRESS_NB) //<2F>㲥<EFBFBD><E3B2A5>ַ<EFBFBD><D6B7>ԭ<EFBFBD><D4AD>ַ0A
|
|
|
|
|
|
{
|
|
|
|
|
|
s_Data.ReceiveBuf[s_Data.ReceiveOffset++]=temp;
|
|
|
|
|
|
s_Data.UartStaus=ReceiveSend_addr; //<2F><>Ϊ<EFBFBD><CEAA>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ַ״̬
|
|
|
|
|
|
s_Data.IsOneSlaveAddrFlag = 1; //<2F><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ַ
|
|
|
|
|
|
g_Data.Uart1RcvOverTime = 500;
|
|
|
|
|
|
}
|
|
|
|
|
|
else if(temp == HEAD_AB)
|
|
|
|
|
|
{
|
|
|
|
|
|
s_Data.ReceiveOffset = 1;
|
|
|
|
|
|
s_Data.UartStaus=Receive_addr;
|
|
|
|
|
|
g_Data.Uart1RcvOverTime = 500;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
s_Data.ReceiveOffset = 0;
|
|
|
|
|
|
s_Data.UartStaus=Receive_head;
|
|
|
|
|
|
}
|
|
|
|
|
|
};
|
|
|
|
|
|
break;
|
|
|
|
|
|
case ReceiveSend_addr: //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ַ״̬
|
|
|
|
|
|
{
|
|
|
|
|
|
if(temp == ADDRESS_HOST) //<2F><>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ַ0x34 0x21
|
|
|
|
|
|
{
|
|
|
|
|
|
s_Data.ReceiveBuf[s_Data.ReceiveOffset++]=temp;
|
|
|
|
|
|
g_Data.Uart1RcvOverTime=500;
|
|
|
|
|
|
s_Data.IsTwoHostAddrFlag = 2; //<2F><><EFBFBD><EFBFBD>Ϊ˫<CEAA><CBAB>ַ
|
|
|
|
|
|
}
|
|
|
|
|
|
else if((temp == ADDRESS_SEC)||(temp == ADDRESS_FAR)) //<2F><>ַ0A <20><><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD><DAB6>ֽڵ<D6BD>ַ 0x21
|
|
|
|
|
|
{
|
|
|
|
|
|
s_Data.ReceiveBuf[s_Data.ReceiveOffset++]=temp;
|
|
|
|
|
|
s_Data.UartStaus=Receive_data; //<2F><>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|
|
|
|
|
g_Data.Uart1RcvOverTime=500;
|
|
|
|
|
|
}
|
|
|
|
|
|
else if(temp == HEAD_AB)
|
|
|
|
|
|
{
|
|
|
|
|
|
s_Data.ReceiveOffset = 1;
|
|
|
|
|
|
s_Data.UartStaus=Receive_addr;
|
|
|
|
|
|
g_Data.Uart1RcvOverTime=500;
|
|
|
|
|
|
}
|
|
|
|
|
|
else //<2F><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ַ
|
|
|
|
|
|
{
|
|
|
|
|
|
s_Data.ReceiveBuf[s_Data.ReceiveOffset++]=temp;
|
|
|
|
|
|
s_Data.UartStaus=Receive_data;
|
|
|
|
|
|
g_Data.Uart1RcvOverTime = 500;
|
|
|
|
|
|
s_Data.IsTwoHostAddrFlag = 1; //<2F><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڣ<D6BD><DAA3><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ַ
|
|
|
|
|
|
}
|
|
|
|
|
|
};
|
|
|
|
|
|
break;
|
|
|
|
|
|
case Receive_data:
|
|
|
|
|
|
{
|
|
|
|
|
|
s_Data.ReceiveBuf[s_Data.ReceiveOffset++]=temp;
|
|
|
|
|
|
if(s_Data.IsTwoHostAddrFlag == 1)
|
|
|
|
|
|
{
|
|
|
|
|
|
if(s_Data.IsOneSlaveAddrFlag == 2) //<2F>ӻ<EFBFBD>˫<EFBFBD><CBAB>ַ
|
|
|
|
|
|
{
|
|
|
|
|
|
if((s_Data.ReceiveOffset>=5)&&(s_Data.ReceiveOffset>=s_Data.ReceiveBuf[4]+5))
|
|
|
|
|
|
{
|
|
|
|
|
|
s_Data.UartStaus = Receive_crc;
|
|
|
|
|
|
g_Data.Uart1RcvOverTime = 500;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else if(s_Data.IsOneSlaveAddrFlag == 1) //<2F>ӻ<EFBFBD><D3BB><EFBFBD><EFBFBD><EFBFBD>ַ
|
|
|
|
|
|
{
|
|
|
|
|
|
if((s_Data.ReceiveOffset>=4)&&(s_Data.ReceiveOffset>=s_Data.ReceiveBuf[3]+4))
|
|
|
|
|
|
{
|
|
|
|
|
|
s_Data.UartStaus = Receive_crc;
|
|
|
|
|
|
g_Data.Uart1RcvOverTime = 500;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else if(s_Data.IsTwoHostAddrFlag == 2)
|
|
|
|
|
|
{
|
|
|
|
|
|
if((s_Data.ReceiveOffset>=5)&&(s_Data.ReceiveOffset>=s_Data.ReceiveBuf[4]+5))
|
|
|
|
|
|
{
|
|
|
|
|
|
s_Data.UartStaus = Receive_crc;
|
|
|
|
|
|
g_Data.Uart1RcvOverTime = 500;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
};
|
|
|
|
|
|
break;
|
|
|
|
|
|
case Receive_crc:
|
|
|
|
|
|
{
|
|
|
|
|
|
s_Data.ReceiveBuf[s_Data.ReceiveOffset++]=temp;
|
|
|
|
|
|
if(s_Data.IsTwoHostAddrFlag == 1) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˫<EFBFBD><CBAB>ַ
|
|
|
|
|
|
{
|
|
|
|
|
|
if(s_Data.IsOneSlaveAddrFlag == 2) //<2F>ӻ<EFBFBD>˫<EFBFBD><CBAB>ַ
|
|
|
|
|
|
{
|
|
|
|
|
|
if(data_crc8((uint8_t*)&(s_Data.ReceiveBuf[0]),s_Data.ReceiveBuf[4]+5)==s_Data.ReceiveBuf[s_Data.ReceiveBuf[4]+5])
|
|
|
|
|
|
{
|
|
|
|
|
|
s_Data.UartStaus = Receive_busy;
|
|
|
|
|
|
s_Data.ReceiveOKFlag=_TRUE;
|
|
|
|
|
|
g_Data.Uart1RcvOverTime = 500;
|
|
|
|
|
|
s_Data.Allow_GetData_Flag = 0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳɹ<DDB3><C9B9><EFBFBD>ֹͣ<CDA3><D6B9><EFBFBD>ݲɼ<DDB2> 22.5.10
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
s_Data.UartStaus = Receive_head;
|
|
|
|
|
|
s_Data.ReceiveOffset=0;
|
|
|
|
|
|
g_Data.Uart1RcvOverTime = 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else if(s_Data.IsOneSlaveAddrFlag == 1) //<2F>ӻ<EFBFBD><D3BB><EFBFBD><EFBFBD><EFBFBD>ַ
|
|
|
|
|
|
{
|
|
|
|
|
|
if(data_crc8((uint8_t*)&(s_Data.ReceiveBuf[0]),s_Data.ReceiveBuf[3]+4)==s_Data.ReceiveBuf[s_Data.ReceiveBuf[3]+4])
|
|
|
|
|
|
{
|
|
|
|
|
|
s_Data.UartStaus = Receive_busy;
|
|
|
|
|
|
s_Data.ReceiveOKFlag=_TRUE;
|
|
|
|
|
|
g_Data.Uart1RcvOverTime = 500;
|
|
|
|
|
|
s_Data.Allow_GetData_Flag = 0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳɹ<DDB3><C9B9><EFBFBD>ֹͣ<CDA3><D6B9><EFBFBD>ݲɼ<DDB2> 22.5.10
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
s_Data.UartStaus = Receive_head;
|
|
|
|
|
|
s_Data.ReceiveOffset=0;
|
|
|
|
|
|
g_Data.Uart1RcvOverTime = 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else if(s_Data.IsTwoHostAddrFlag == 2) //<2F><><EFBFBD><EFBFBD>˫<EFBFBD><CBAB>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˫<EFBFBD><CBAB>ַ
|
|
|
|
|
|
{
|
|
|
|
|
|
if(data_crc8((uint8_t*)&(s_Data.ReceiveBuf[0]),s_Data.ReceiveBuf[4]+5)==s_Data.ReceiveBuf[s_Data.ReceiveBuf[4]+5])
|
|
|
|
|
|
{
|
|
|
|
|
|
s_Data.UartStaus = Receive_busy;
|
|
|
|
|
|
s_Data.ReceiveOKFlag=_TRUE;
|
|
|
|
|
|
g_Data.Uart1RcvOverTime = 500;
|
|
|
|
|
|
s_Data.Allow_GetData_Flag = 0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳɹ<DDB3><C9B9><EFBFBD>ֹͣ<CDA3><D6B9><EFBFBD>ݲɼ<DDB2> 22.5.10
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
s_Data.UartStaus = Receive_head;
|
|
|
|
|
|
s_Data.ReceiveOffset=0;
|
|
|
|
|
|
g_Data.Uart1RcvOverTime = 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
break;
|
|
|
|
|
|
case Receive_busy:
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
break;
|
|
|
|
|
|
default:
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD>Ŀ<EFBFBD>ĵ<EFBFBD>ַ<EFBFBD><D6B7>ԭ<EFBFBD><D4AD>ַ<EFBFBD><D6B7><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>ݵij<DDB5><C4B3>ȡ<EFBFBD>
|
|
|
|
|
|
void SwapAddr_DataLen(uint8_t data_len)
|
|
|
|
|
|
{
|
|
|
|
|
|
s_Data.ReceiveBuf[1] = s_Data.ReceiveBuf[2]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>
|
|
|
|
|
|
s_Data.ReceiveBuf[2] = ADDRESS_NB;
|
|
|
|
|
|
s_Data.ReceiveBuf[3] = data_len; //<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD>Ŀ<EFBFBD>ĵ<EFBFBD>ַ<EFBFBD><D6B7>ԭ<EFBFBD><D4AD>ַ<EFBFBD><D6B7><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>ݵij<DDB5><C4B3>ȡ<EFBFBD>
|
|
|
|
|
|
void IsOneAddr_DataLen(uint8_t data_len)
|
|
|
|
|
|
{
|
|
|
|
|
|
s_Data.ReceiveBuf[1] = s_Data.ReceiveBuf[3]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>
|
|
|
|
|
|
//s_Data.ReceiveBuf[2] = s_Data.ReceiveBuf[4]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>
|
|
|
|
|
|
s_Data.ReceiveBuf[2] = ADDRESS_NBF;
|
|
|
|
|
|
s_Data.ReceiveBuf[3] = ADDRESS_NBT;
|
|
|
|
|
|
s_Data.ReceiveBuf[4] = data_len; //<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>-1
|
|
|
|
|
|
int my_strncmp(uint8_t *pstr1, uint8_t *pstr2, int16_t len)
|
|
|
|
|
|
{
|
|
|
|
|
|
while ( len -- )
|
|
|
|
|
|
{
|
|
|
|
|
|
if((*pstr1 ++) != (*pstr2 ++))
|
|
|
|
|
|
{
|
|
|
|
|
|
return -1;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return 0;//<2F><><EFBFBD>رȽϽ<C8BD><CFBD><EFBFBD>
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ȡʵʱ<CAB5><CAB1><EFBFBD><EFBFBD>
|
|
|
|
|
|
void r_GetData(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
unsigned char i;
|
|
|
|
|
|
for(i = 0;i < 18;i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
s_Data.ReceiveBuf[i+6] = s_Data.ucMeasureData[i];
|
|
|
|
|
|
}
|
|
|
|
|
|
// SwapAddr_DataLen(19);
|
|
|
|
|
|
IsOneAddr_DataLen(19);
|
|
|
|
|
|
s_Data.ReceiveBuf[24]=data_crc8((uint8_t *)&(s_Data.ReceiveBuf[0]),24);
|
|
|
|
|
|
UART_SendStr((uint8_t *)&(s_Data.ReceiveBuf[0]),25); //<2F><><EFBFBD>ʹ洢<CDB4><E6B4A2><EFBFBD><EFBFBD><F1B6AFBE><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
}
|
|
|
|
|
|
//<2F><>ȡʵʱ<CAB5><CAB1><EFBFBD><EFBFBD>
|
|
|
|
|
|
void GetData(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
uint8_t i;
|
|
|
|
|
|
switch(s_Data.ReceiveBuf[3])
|
|
|
|
|
|
{
|
|
|
|
|
|
case 0x40: //<2F><>ȡ<EFBFBD><C8A1><EFBFBD>˹<EFBFBD><CBB9>̲<EFBFBD><CCB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2025-04-24 17:46:19 +08:00
|
|
|
|
#if 0
|
2025-04-24 11:37:10 +08:00
|
|
|
|
for(i=0;i<12;i++) //<2F><>ֵѹ<D6B5><D1B9><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD> 48-59 6-17 3
|
|
|
|
|
|
{
|
|
|
|
|
|
MeasurementData_Nearbit.ucDataValueBuf[i+48] = s_Data.ReceiveBuf[6+i];
|
|
|
|
|
|
}
|
|
|
|
|
|
for(i=0;i<4;i++) //<2F><>ֵ<EFBFBD><D6B5>ѹ<EFBFBD><D1B9>ֵ 8-11 18-21 1
|
|
|
|
|
|
{
|
|
|
|
|
|
MeasurementData_Nearbit.ucDataValueBuf[i+8] = s_Data.ReceiveBuf[18+i];
|
|
|
|
|
|
}
|
|
|
|
|
|
for(i=0;i<8;i++) //<2F><>ֵ<EFBFBD><D6B5>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD> 60-67 22-29 2
|
|
|
|
|
|
{
|
|
|
|
|
|
MeasurementData_Nearbit.ucDataValueBuf[i+60] = s_Data.ReceiveBuf[22+i];
|
|
|
|
|
|
}
|
|
|
|
|
|
for(i=0;i<4;i++) //<2F><>ֵŤ<D6B5>ؾ<EFBFBD>ֵ 12-15 30-33 1
|
|
|
|
|
|
{
|
|
|
|
|
|
MeasurementData_Nearbit.ucDataValueBuf[i+12] = s_Data.ReceiveBuf[30+i];
|
|
|
|
|
|
}
|
|
|
|
|
|
for(i=0;i<8;i++) //<2F><>ֵŤ<D6B5>ط<EFBFBD><D8B7><EFBFBD>ֵ<EFBFBD><D6B5>Ť<EFBFBD>ط<EFBFBD><D8B7><EFBFBD> 68-75 34-41 2
|
|
|
|
|
|
{
|
|
|
|
|
|
MeasurementData_Nearbit.ucDataValueBuf[i+68] = s_Data.ReceiveBuf[34+i];
|
|
|
|
|
|
}
|
|
|
|
|
|
for(i=0;i<4;i++) //<2F><>ֵת<D6B5>پ<EFBFBD>ֵ 16-19 42-45 1
|
|
|
|
|
|
{
|
|
|
|
|
|
MeasurementData_Nearbit.ucDataValueBuf[i+16] = s_Data.ReceiveBuf[42+i];
|
|
|
|
|
|
}
|
|
|
|
|
|
for(i=0;i<20;i++) //<2F><>ֵת<D6B5>ٷ<EFBFBD><D9B7>ȣ<EFBFBD>ת<EFBFBD>ٷ<EFBFBD><D9B7>X<EEA3AC><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD>Y<EFBFBD><59><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD>Z<EFBFBD><5A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 76-95 46-65 5
|
|
|
|
|
|
{
|
|
|
|
|
|
MeasurementData_Nearbit.ucDataValueBuf[i+76] = s_Data.ReceiveBuf[46+i];
|
|
|
|
|
|
}
|
|
|
|
|
|
// for(i=0;i<76;i++)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// MeasurementData_Nearbit.ucDataValueBuf[i] = s_Data.ReceiveBuf[6+i];
|
|
|
|
|
|
// }
|
|
|
|
|
|
// MeasurementData_Nearbit.ucDataValueBuf[]
|
2025-04-24 17:46:19 +08:00
|
|
|
|
#else
|
|
|
|
|
|
for(i = 0; i < 26*4; i++) //<2F><>ֵѹ<D6B5><D1B9><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD> 48-59 6-17 3
|
|
|
|
|
|
{
|
|
|
|
|
|
MeasurementData_Nearbit.ucDataValueBuf[i] = s_Data.ReceiveBuf[6+i];
|
|
|
|
|
|
}
|
|
|
|
|
|
#endif
|
2025-04-24 11:37:10 +08:00
|
|
|
|
break;
|
|
|
|
|
|
case 0x41: //<2F><>ȡԶ<C8A1>˹<EFBFBD><CBB9>̲<EFBFBD><CCB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
for(i=0;i<12;i++) //<2F><>ֵѹ<D6B5><D1B9><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD> 48-59 6-17 3
|
|
|
|
|
|
{
|
|
|
|
|
|
MeasurementData_Farbit.ucDataValueBuf[i+48] = s_Data.ReceiveBuf[6+i];
|
|
|
|
|
|
}
|
|
|
|
|
|
for(i=0;i<4;i++) //<2F><>ֵ<EFBFBD><D6B5>ѹ<EFBFBD><D1B9>ֵ 8-11 18-21 1
|
|
|
|
|
|
{
|
|
|
|
|
|
MeasurementData_Farbit.ucDataValueBuf[i+8] = s_Data.ReceiveBuf[18+i];
|
|
|
|
|
|
}
|
|
|
|
|
|
for(i=0;i<8;i++) //<2F><>ֵ<EFBFBD><D6B5>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD> 60-67 22-29 2
|
|
|
|
|
|
{
|
|
|
|
|
|
MeasurementData_Farbit.ucDataValueBuf[i+60] = s_Data.ReceiveBuf[22+i];
|
|
|
|
|
|
}
|
|
|
|
|
|
for(i=0;i<4;i++) //<2F><>ֵŤ<D6B5>ؾ<EFBFBD>ֵ 12-15 30-33 1
|
|
|
|
|
|
{
|
|
|
|
|
|
MeasurementData_Farbit.ucDataValueBuf[i+12] = s_Data.ReceiveBuf[30+i];
|
|
|
|
|
|
}
|
|
|
|
|
|
for(i=0;i<8;i++) //<2F><>ֵŤ<D6B5>ط<EFBFBD><D8B7><EFBFBD>ֵ<EFBFBD><D6B5>Ť<EFBFBD>ط<EFBFBD><D8B7><EFBFBD> 68-75 34-41 2
|
|
|
|
|
|
{
|
|
|
|
|
|
MeasurementData_Farbit.ucDataValueBuf[i+68] = s_Data.ReceiveBuf[34+i];
|
|
|
|
|
|
}
|
|
|
|
|
|
for(i=0;i<4;i++) //<2F><>ֵת<D6B5>پ<EFBFBD>ֵ 16-19 42-45 1
|
|
|
|
|
|
{
|
|
|
|
|
|
MeasurementData_Farbit.ucDataValueBuf[i+16] = s_Data.ReceiveBuf[42+i];
|
|
|
|
|
|
}
|
|
|
|
|
|
for(i=0;i<20;i++) //<2F><>ֵת<D6B5>ٷ<EFBFBD><D9B7>ȣ<EFBFBD>ת<EFBFBD>ٷ<EFBFBD><D9B7>X<EEA3AC><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD>Y<EFBFBD><59><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD>Z<EFBFBD><5A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 76-95 46-65 5
|
|
|
|
|
|
{
|
|
|
|
|
|
MeasurementData_Farbit.ucDataValueBuf[i+76] = s_Data.ReceiveBuf[46+i];
|
|
|
|
|
|
}
|
|
|
|
|
|
// for(i=0;i<76;i++)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// MeasurementData_Farbit.ucDataValueBuf[i] = s_Data.ReceiveBuf[6+i];
|
|
|
|
|
|
// }
|
|
|
|
|
|
// MeasurementData_Farbit.ucDataValueBuf[]
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
void AgreementService(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
unsigned char buf[2]={0};
|
|
|
|
|
|
Uart1_Sevice();
|
|
|
|
|
|
if(s_Data.ReceiveOKFlag==_TRUE)
|
|
|
|
|
|
{
|
|
|
|
|
|
switch(s_Data.IsTwoHostAddrFlag)
|
|
|
|
|
|
{
|
|
|
|
|
|
case 1:
|
|
|
|
|
|
{
|
|
|
|
|
|
if(s_Data.IsOneSlaveAddrFlag == 1) //<2F>ӵ<EFBFBD>ַΪ˫<CEAA><CBAB>ַ
|
|
|
|
|
|
{
|
|
|
|
|
|
switch (s_Data.ReceiveBuf[5])
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
case READ_DATA_0x34: //ʵʱ<CAB5><CAB1><EFBFBD>ݶ<EFBFBD>ȡ
|
|
|
|
|
|
r_GetData();
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
s_Data.ReceiveOKFlag=_FALSE;
|
|
|
|
|
|
s_Data.ReceiveOffset=0;
|
|
|
|
|
|
s_Data.UartStaus=Receive_head;
|
|
|
|
|
|
s_Data.Allow_GetData_Count = 0;//<2F><><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD>
|
|
|
|
|
|
g_Data.GetUart1OverFlag = 1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
}
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 2: //<2F><><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
switch (s_Data.ReceiveBuf[5])
|
|
|
|
|
|
{
|
|
|
|
|
|
case READ_DATA_0x34: //ʵʱ<CAB5><CAB1><EFBFBD>ݶ<EFBFBD>ȡ
|
|
|
|
|
|
GetData();
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
s_Data.ReceiveOKFlag=_FALSE;
|
|
|
|
|
|
s_Data.ReceiveOffset=0;
|
|
|
|
|
|
s_Data.UartStaus=Receive_head;
|
|
|
|
|
|
s_Data.Allow_GetData_Count = 0;//<2F><><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD>
|
|
|
|
|
|
g_Data.GetUart1OverFlag = 1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
}
|
|
|
|
|
|
break;
|
|
|
|
|
|
default:
|
|
|
|
|
|
s_Data.ReceiveOKFlag=_FALSE;
|
|
|
|
|
|
s_Data.ReceiveOffset=0;
|
|
|
|
|
|
s_Data.UartStaus=Receive_head;
|
|
|
|
|
|
s_Data.Allow_GetData_Count = 0;//<2F><><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD>
|
|
|
|
|
|
g_Data.GetUart1OverFlag = 1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
//<2F><><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD>
|
|
|
|
|
|
void Send_Slave(unsigned char Data)
|
|
|
|
|
|
{
|
|
|
|
|
|
unsigned char SendComment[8] = {0};
|
|
|
|
|
|
switch(Data)
|
|
|
|
|
|
{
|
|
|
|
|
|
case 1: //<2F><>ȡ<EFBFBD><C8A1><EFBFBD>˹<EFBFBD><CBB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
SendComment[0] = 0xFF;
|
|
|
|
|
|
SendComment[1] = 0xAB;
|
|
|
|
|
|
SendComment[2] = 0x34;
|
|
|
|
|
|
SendComment[3] = 0x40;
|
|
|
|
|
|
SendComment[4] = 0x0A;
|
|
|
|
|
|
SendComment[5] = 0x01;
|
|
|
|
|
|
SendComment[6] = 0x34;
|
|
|
|
|
|
SendComment[7] = 0x37;
|
|
|
|
|
|
UART_SendStr(SendComment,8);
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 2: //<2F><>ȡԶ<C8A1>˹<EFBFBD><CBB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
SendComment[0] = 0xFF;
|
|
|
|
|
|
SendComment[1] = 0xAB;
|
|
|
|
|
|
SendComment[2] = 0x34;
|
|
|
|
|
|
SendComment[3] = 0x41;
|
|
|
|
|
|
SendComment[4] = 0x0A;
|
|
|
|
|
|
SendComment[5] = 0x01;
|
|
|
|
|
|
SendComment[6] = 0x34;
|
|
|
|
|
|
SendComment[7] = 0x9F;
|
|
|
|
|
|
UART_SendStr(SendComment,8);
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 3: //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>0<EFBFBD><30><EFBFBD><EFBFBD>
|
|
|
|
|
|
SendComment[0] = 0xAA;
|
|
|
|
|
|
SendComment[1] = 0x55;
|
|
|
|
|
|
SendComment[2] = 0x10;
|
|
|
|
|
|
SendComment[3] = 0x80;
|
|
|
|
|
|
SendComment[4] = 0x8F;
|
|
|
|
|
|
UART3_SendStr(SendComment,5);
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 4: //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>1<EFBFBD><31><EFBFBD><EFBFBD>
|
|
|
|
|
|
SendComment[0] = 0xAA;
|
|
|
|
|
|
SendComment[1] = 0x55;
|
|
|
|
|
|
SendComment[2] = 0x10;
|
|
|
|
|
|
SendComment[3] = 0x81;
|
|
|
|
|
|
SendComment[4] = 0x90;
|
|
|
|
|
|
UART3_SendStr(SendComment,5);
|
|
|
|
|
|
break;
|
|
|
|
|
|
default:
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|