|
@@ -86,6 +86,7 @@ sT2C_SealByElec_Fence *pT2C_SealByElec_Fence = &T2C_SealByElec_Fence001;
|
|
|
|
|
|
//============================================================
|
|
|
sT2C_SetupData T2C_SetupData[8] =
|
|
|
+{{
|
|
|
2021,
|
|
|
1,
|
|
|
25,
|
|
@@ -885,6 +886,7 @@ int Process_CMD_IAP_Update(void)
|
|
|
txLen = sprintf((char *)USART1_TX_BUF,"Rx Error lenRx1=%d crcIAP=%04X crcTerminal=%04X\r\n",lenRx1,crcIAP,crcTerminal);
|
|
|
}
|
|
|
|
|
|
+ break;
|
|
|
case 3:
|
|
|
//if(packIndex>2)
|
|
|
{//结束帧处理
|
|
@@ -1299,6 +1301,12 @@ void Data_analysis(void)
|
|
|
data_frame.Frame_addr = MODBUS_ASCII_AsciiToHex(temp_dataFromUsart1+1);
|
|
|
//判断地址是否正确
|
|
|
if(((data_frame.Frame_addr>=0x47)&&(data_frame.Frame_addr<=0x4e))||
|
|
|
+ (data_frame.Frame_addr==TERMINAL_CONTROL_GET_SENSOR_D1)||
|
|
|
+ (data_frame.Frame_addr==0xA1)||
|
|
|
+ (data_frame.Frame_addr==TERMINAL_CONTROL_GET_SENSOR_D2)||
|
|
|
+ (data_frame.Frame_addr==0x40)||
|
|
|
+ ((data_frame.Frame_addr>=0x30)&&(data_frame.Frame_addr<=0x6f))||
|
|
|
+ ((data_frame.Frame_addr>=TERMINAL_CONTROL_GET_Store01_ALL_Sensor)&&(data_frame.Frame_addr<=TERMINAL_CONTROL_GET_Whole_Car_Sensor))
|
|
|
)
|
|
|
{//地址码或者功能码正确合法-----开始
|
|
|
Sealing_Data.TerminalOnLineFlag = True;
|
|
@@ -2730,9 +2738,63 @@ sT2C_ALL_Sensor_Data_Each_Cang* pT2C_ALL_Sensor_Data0x93;
|
|
|
}
|
|
|
|
|
|
|
|
|
+ memcpy(&USART1_TX_BUF[1],&USART1_RX_BUF[1],4);
|
|
|
+ sprintf((char *)(char*)USART1_TX_BUF+5,"%02X",0x4a);//(16+4*33)/1
|
|
|
|
|
|
|
|
|
-
|
|
|
+ memcpy(&USART1_TX_BUF[1+6],pT2C_ALL_Sensor_Data0x93->FrameHead,16);
|
|
|
+
|
|
|
+ //pT2C_ALL_Sensor_Data0x93->ElecSealState=0x12345678;
|
|
|
+ //memcpy(&USART1_TX_BUF[17],&T2C_ALL_Sensor_Data01.ElecSealState,4); //17--20
|
|
|
+
|
|
|
+ //pT2C_ALL_Sensor_Data0x93->ElecSealState=0x1122aacc;//*123.45f;//for test 仅用于测试
|
|
|
+ uni_0x93.u32Dat=pT2C_ALL_Sensor_Data0x93->ElecSealState;//T2C_ALL_Sensor_Data01.ElecSealState;
|
|
|
+ USART1_TX_BUF[17+0+6]=uni_0x93.array_u8[3];
|
|
|
+ USART1_TX_BUF[17+1+6]=uni_0x93.array_u8[2];
|
|
|
+ USART1_TX_BUF[17+2+6]=uni_0x93.array_u8[1];
|
|
|
+ USART1_TX_BUF[17+3+6]=uni_0x93.array_u8[0];
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ //memcpy(&USART1_TX_BUF[21],&T2C_ALL_Sensor_Data01.IO_Valve_Data_Every_Cang,21*4); //17--20
|
|
|
+
|
|
|
+ //21个u32转换
|
|
|
+ for(i_0x93=0;i_0x93<21;i_0x93++)
|
|
|
+ {
|
|
|
+ uni_0x93.u32Dat=pT2C_ALL_Sensor_Data0x93->IO_Valve_Data_Every_Cang[i_0x93];
|
|
|
+ USART1_TX_BUF[21+0+i_0x93*4+0+6]=uni_0x93.array_u8[3];
|
|
|
+ USART1_TX_BUF[21+0+i_0x93*4+1+6]=uni_0x93.array_u8[2];
|
|
|
+ USART1_TX_BUF[21+0+i_0x93*4+2+6]=uni_0x93.array_u8[1];
|
|
|
+ USART1_TX_BUF[21+0+i_0x93*4+3+6]=uni_0x93.array_u8[0];
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ //memcpy(&USART1_TX_BUF[21+84],&T2C_ALL_Sensor_Data01.MoniLiang_Data_Every_Cang,11*4); //17--20
|
|
|
+
|
|
|
+
|
|
|
+ //11个浮点数转换
|
|
|
+ for(i_0x93=0;i_0x93<11;i_0x93++)
|
|
|
+ {
|
|
|
+ uni_0x93.flo_Data=pT2C_ALL_Sensor_Data0x93->MoniLiang_Data_Every_Cang[i_0x93];
|
|
|
+ USART1_TX_BUF[21+84+i_0x93*4+0+6]=uni_0x93.array_u8[3];
|
|
|
+ USART1_TX_BUF[21+84+i_0x93*4+1+6]=uni_0x93.array_u8[2];
|
|
|
+ USART1_TX_BUF[21+84+i_0x93*4+2+6]=uni_0x93.array_u8[1];
|
|
|
+ USART1_TX_BUF[21+84+i_0x93*4+3+6]=uni_0x93.array_u8[0];
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ //Lrc_temp = MODBUS_Hex_GetLrc(USART1_TX_BUF+1,148);//154
|
|
|
+ Lrc_temp = MODBUS_ASCII_GetLrc(USART1_TX_BUF+1,154);//154
|
|
|
+
|
|
|
+ //USART1_TX_BUF[149+6]=Lrc_temp;
|
|
|
+ //sprintf((char *)&USART1_TX_BUF[149+6],"%02X",Lrc_temp);
|
|
|
+ sprintf((char *)(char*)USART1_TX_BUF+149+6,"%02X",Lrc_temp);
|
|
|
+ USART1_TX_BUF[LenthOf_Reply0x93-2]=0x0d;
|
|
|
+ USART1_TX_BUF[LenthOf_Reply0x93-1]=0x0a;
|
|
|
}
|
|
|
|
|
|
//数据的应答
|
|
@@ -3531,7 +3593,6 @@ uint8_t temp_buf[137]={0};//
|
|
|
Return_data * Seal_Tx_Readvalue(uint16_t ID,uint16_t length)//读取电子铅封的应答 0:默认 1:解封 2 :施封 3:破封
|
|
|
{
|
|
|
|
|
|
-
|
|
|
static Return_data temp;
|
|
|
uint8_t i,j=0;
|
|
|
uint8_t Byte_high,Byte_low;
|
|
@@ -4632,6 +4693,7 @@ int Process_CMD_0x39_RemoteCali(uint8_t dataMode)
|
|
|
int i000,i001;
|
|
|
//uint8_t TempData;//,TmpValState00,TmpValState01;
|
|
|
|
|
|
+ extern uint16_t bufText00[256];
|
|
|
extern uint16_t bufText01Password[256];
|
|
|
extern uint32_t FunDebugCode;
|
|
|
|
|
@@ -4769,6 +4831,8 @@ int Process_CMD_0x39_RemoteCali(uint8_t dataMode)
|
|
|
// USART1_TX_BUF[130] = 0x0A;
|
|
|
TerminalSlave485_Send_Data(USART1_TX_BUF,128+3);
|
|
|
}
|
|
|
+ else
|
|
|
+ {//按照十六进制的方式回复
|
|
|
// Lrc_temp = MODBUS_ASCII_GetLrc(USART1_TX_BUF+1,64);
|
|
|
// //memcpy(USART1_TX_BUF,temp_dataFromUsart1,16*2+1);//前16字节原样返回,共33字符 1表示起始字符英文下的冒号,hex为0x3a
|
|
|
// memcpy(USART1_TX_BUF,temp_dataFromUsart1,67+2);//
|
|
@@ -4776,19 +4840,18 @@ int Process_CMD_0x39_RemoteCali(uint8_t dataMode)
|
|
|
// USART1_TX_BUF[68]=0x0A;
|
|
|
// TerminalSlave485_Send_Data(USART1_TX_BUF,69);
|
|
|
//
|
|
|
-
|
|
|
+
|
|
|
//lenRx1
|
|
|
memcpy(USART1_TX_BUF,temp_dataFromUsart1,lenRx1+0);//
|
|
|
// USART1_TX_BUF[67]=0x0D;
|
|
|
// USART1_TX_BUF[68]=0x0A;
|
|
|
- TerminalSlave485_Send_Data(USART1_TX_BUF,lenRx1+0);
|
|
|
+ TerminalSlave485_Send_Data(USART1_TX_BUF,lenRx1+0);
|
|
|
|
|
|
|
|
|
/*Lrc_temp = MODBUS_ASCII_GetLrc(USART1_TX_BUF+1,64);
|
|
|
//张毅反应去掉开头的冒号0x3A,去掉结尾的校验2字节、0x0d0a
|
|
|
memcpy(USART1_TX_BUF,&temp_dataFromUsart1[1],64);//
|
|
|
|
|
|
-
|
|
|
TerminalSlave485_Send_Data(USART1_TX_BUF,64); */
|
|
|
|
|
|
__NOP();
|
|
@@ -5026,7 +5089,7 @@ int Process_CMD_0x39_RemoteCali(uint8_t dataMode)
|
|
|
case ADDR_Sensor_Scan_Param:
|
|
|
FM25L16B_Read_N_Bytes(ADDR_Sensor_Scan_Param,T2C_RemoteCaliDat001.PayLoadData,16);
|
|
|
T2C_RemoteCaliDat001.NumberOfRegs = 16;
|
|
|
-
|
|
|
+ break;
|
|
|
default:
|
|
|
|
|
|
//memset(&USART1_TX_BUF[33], '=', sizeof(USART1_TX_BUF) - 33);
|
|
@@ -5174,6 +5237,7 @@ int Process_CMD_0x39_RemoteCali(uint8_t dataMode)
|
|
|
T2C_RemoteCaliDat001.NumberOfRegs=32;
|
|
|
break;
|
|
|
case ADDR_Zero_Of_TankCapacity://兼容8仓 罐容Vt零点
|
|
|
+ FM25L16B_Write_N_Bytes(ADDR_Zero_Of_TankCapacity,T2C_RemoteCaliDat001.PayLoadData,32);
|
|
|
//解析8个浮点数数据
|
|
|
for(i001=0;i001<8;i001++)
|
|
|
{
|
|
@@ -5190,9 +5254,9 @@ int Process_CMD_0x39_RemoteCali(uint8_t dataMode)
|
|
|
//数据回读
|
|
|
FM25L16B_Read_N_Bytes(ADDR_Zero_Of_LiquidMeter,T2C_RemoteCaliDat001.PayLoadData,32);
|
|
|
T2C_RemoteCaliDat001.NumberOfRegs=32;
|
|
|
-
|
|
|
+ break;
|
|
|
case ADDR_ManHoLe_Number://人孔盖卸油阀数量
|
|
|
-
|
|
|
+
|
|
|
//解析8个浮点数数据
|
|
|
for(i001=0;i001<8;i001++)
|
|
|
{
|
|
@@ -5263,6 +5327,7 @@ int Process_CMD_0x39_RemoteCali(uint8_t dataMode)
|
|
|
FM25L16B_Read_N_Bytes(ADDR_Foot_info,T2C_RemoteCaliDat001.PayLoadData+4,1);
|
|
|
T2C_RemoteCaliDat001.NumberOfRegs = 5;
|
|
|
|
|
|
+ break;
|
|
|
|
|
|
case ADDR_Enable_ReSeal://是否允许重复施封 断电保存
|
|
|
//解析8个浮点数数据----合法的取值只有两种0,1
|
|
@@ -5368,7 +5433,6 @@ int Process_CMD_0x39_RemoteCali(uint8_t dataMode)
|
|
|
memcpy(&time_Set_Dwin[8],T2C_RemoteCaliDat001.PayLoadData,6);
|
|
|
ScreenMaster485_Send_Data(time_Set_Dwin,14);
|
|
|
//memcpy(TimeBuf+1,T2C_RemoteCaliDat001.PayLoadData,6);
|
|
|
-
|
|
|
#if 1
|
|
|
uint8_t times_buf[32];
|
|
|
memset(times_buf, 0x00,sizeof(times_buf));
|
|
@@ -5499,6 +5563,7 @@ int Process_CMD_0x39_RemoteCali(uint8_t dataMode)
|
|
|
}
|
|
|
FM25L16B_Write_N_Bytes(ADDR_USART1_RE_TIMEOUT, T2C_RemoteCaliDat001.PayLoadData, 4);
|
|
|
T2C_RemoteCaliDat001.NumberOfRegs = 4;
|
|
|
+ break;
|
|
|
case ADDR_DISP_VT_TYPE:
|
|
|
vt_disp_type = T2C_RemoteCaliDat001.PayLoadData[0];
|
|
|
FM25L16B_Write_N_Bytes(ADDR_DISP_VT_TYPE, T2C_RemoteCaliDat001.PayLoadData, 1);
|