|
@@ -1,4 +1,5 @@
|
|
|
#include "TerminalSlave485.h"
|
|
|
+#include "TerminalSlave485_jt808.h"
|
|
|
#include "CollectMaster485.h"
|
|
|
#include "ScreenMaster485.h"
|
|
|
#include "KeySlave485.h"
|
|
@@ -13,6 +14,8 @@
|
|
|
#include "DS1302.h"
|
|
|
#include "leaf_ota.h"
|
|
|
#include "md5c.h"
|
|
|
+#include "cmsis_os.h"
|
|
|
+#include "func_queue_record.h"
|
|
|
|
|
|
/* zhuzl 20211220 增加为了内蒙定时上送*/
|
|
|
uint32_t circle_send;
|
|
@@ -497,7 +500,7 @@ Data_frame_TypeDef data_frame,Tx_data_frame;
|
|
|
void Reboot_System()
|
|
|
{
|
|
|
__set_FAULTMASK(1);
|
|
|
-#if (WatchDogOn)
|
|
|
+#if (WATCH_DOG_ON)
|
|
|
while (1)
|
|
|
{
|
|
|
__nop();
|
|
@@ -561,7 +564,18 @@ void TerminalSlave485_Send_Data(uint8_t *buf,uint16_t len)
|
|
|
TerminalSlave485_TX_Set(1); //设置为发送模式
|
|
|
//HAL_UART_Transmit(&huart1,buf,len,1000);//串口1发送数据
|
|
|
// TerminalSlave485_TX_Set(0); //设置为接收模式
|
|
|
- memcpy(terminal_buf,buf,len);
|
|
|
+
|
|
|
+ // 如果来自41串口的报文回应,需要粘合原样5字节头部,其中将长度内容适配下即可
|
|
|
+ if(Pass41SensorScanParam.rx_buf[0] > 0){
|
|
|
+ memcpy(terminal_buf,Pass41SensorScanParam.rx_buf,5);
|
|
|
+ terminal_buf[2] = len;
|
|
|
+ memcpy(terminal_buf+5,buf,len);
|
|
|
+ len += 5;
|
|
|
+ Pass41SensorScanParam.rx_buf[0] = 0;
|
|
|
+ }else{
|
|
|
+ memcpy(terminal_buf,buf,len);
|
|
|
+ }
|
|
|
+
|
|
|
if(HAL_UART_Transmit_IT(&huart1,terminal_buf,len)!=HAL_OK)
|
|
|
{
|
|
|
TerminalSlave485_TX_Set(0); //设置为接收模式
|
|
@@ -1128,6 +1142,18 @@ void Data_analysis(void)
|
|
|
usart1_rx_flag=0;
|
|
|
usart_timesec=0;
|
|
|
f3_flag=0;
|
|
|
+
|
|
|
+ // xy,匹配到0x0139为首的5字节的头,表示是41串口透传下行的数据
|
|
|
+ // 5字节的头定义为:
|
|
|
+ // [0][1] -- 01 39
|
|
|
+ // [2] -- 透传有效数据长度
|
|
|
+ // [3][4] -- 流水号
|
|
|
+ if( (USART1_RX_BUF[0]==0x01) && (USART1_RX_BUF[1]==0x39)){
|
|
|
+ memcpy(Pass41SensorScanParam.rx_buf,USART1_RX_BUF,5);
|
|
|
+ memcpy(USART1_RX_BUF,USART1_RX_BUF+5,rx1_len-5);
|
|
|
+ rx1_len -=5;
|
|
|
+ }
|
|
|
+
|
|
|
if((USART1_RX_BUF[0]==':') && (USART1_RX_BUF[1]==0xa5) && (USART1_RX_BUF[1]==0xa5))
|
|
|
{
|
|
|
memcpy(USART1_RX_BUF,USART1_RX_BUF+1,rx1_len-5);
|
|
@@ -3557,12 +3583,15 @@ Return_data * IO_Tx_Readvalue(uint16_t ID,uint16_t length)//
|
|
|
//*******************************************************************************/
|
|
|
static uint8_t test_send_cnt = 0;//重要数据连续上报5次
|
|
|
static uint8_t Emergencyflag =0 ;//重要数据发送标志
|
|
|
+uint8_t temp_buf[137]={0};//大小+1 136
|
|
|
Return_data * Seal_Tx_Readvalue(uint16_t ID,uint16_t length)//读取电子铅封的应答 0:默认 1:解封 2 :施封 3:破封
|
|
|
{
|
|
|
- uint8_t temp_buf[137]={0};//大小+1 136
|
|
|
static Return_data temp;
|
|
|
uint8_t i,j=0;
|
|
|
uint8_t Byte_high,Byte_low;
|
|
|
+
|
|
|
+ memset(temp_buf,0x00,sizeof(temp_buf));
|
|
|
+
|
|
|
if(Sealing_Data.Sealing_up_datetype != 1)//常规数据上报
|
|
|
{
|
|
|
Emergencyflag = 0;
|
|
@@ -5060,6 +5089,13 @@ int Process_CMD_0x39_RemoteCali(uint8_t dataMode)
|
|
|
FM25L16B_Read_N_Bytes(ADDR_OiLType_Data,T2C_RemoteCaliDat001.PayLoadData,32);
|
|
|
T2C_RemoteCaliDat001.NumberOfRegs = 32;
|
|
|
break;
|
|
|
+ case IDEX_ADDR_Scan_Param:
|
|
|
+ FM25L16B_Read_N_Bytes(FRAM_ADDR_Scan_Param,T2C_RemoteCaliDat001.PayLoadData,16);
|
|
|
+ T2C_RemoteCaliDat001.NumberOfRegs = 16;
|
|
|
+ break;
|
|
|
+ case IDEX_ADDR_Read_WorkSt:
|
|
|
+ T2C_RemoteCaliDat001.NumberOfRegs = jt808_Build_Read_WorkSt(T2C_RemoteCaliDat001.PayLoadData);
|
|
|
+ break;
|
|
|
default:
|
|
|
|
|
|
//memset(&USART1_TX_BUF[33], '=', sizeof(USART1_TX_BUF) - 33);
|
|
@@ -5366,7 +5402,19 @@ int Process_CMD_0x39_RemoteCali(uint8_t dataMode)
|
|
|
}
|
|
|
T2C_RemoteCaliDat001.NumberOfRegs = 32;
|
|
|
break;
|
|
|
-
|
|
|
+
|
|
|
+ case IDEX_ADDR_Scan_Param:
|
|
|
+ FM25L16B_Write_N_Bytes(FRAM_ADDR_Scan_Param,T2C_RemoteCaliDat001.PayLoadData,16);
|
|
|
+ jt808_InitSensorScanParam();
|
|
|
+ T2C_RemoteCaliDat001.NumberOfRegs = 16;
|
|
|
+ break;
|
|
|
+
|
|
|
+ case IDEX_ADDR_Read_WorkSt:
|
|
|
+ memset(queue_record_obj.cmd,0,sizeof(queue_record_obj.cmd));
|
|
|
+ strncpy(queue_record_obj.cmd, (char *)T2C_RemoteCaliDat001.PayLoadData, sizeof(queue_record_obj.cmd)-1);
|
|
|
+ T2C_RemoteCaliDat001.NumberOfRegs = 16;
|
|
|
+ break;
|
|
|
+
|
|
|
case ADDR_TiltAngle_Sensor://倾角补偿参数 ----长度为16字节
|
|
|
FM25L16B_Write_N_Bytes(ADDR_TiltAngle_Sensor,T2C_RemoteCaliDat001.PayLoadData,16);
|
|
|
T2C_RemoteCaliDat001.NumberOfRegs=16;
|
|
@@ -5397,7 +5445,16 @@ 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));
|
|
|
+ memcpy(times_buf+1,T2C_RemoteCaliDat001.PayLoadData,6);
|
|
|
+ ds1302_Write_Time(times_buf);
|
|
|
+#else
|
|
|
ds1302_Write_Time(T2C_RemoteCaliDat001.PayLoadData-1);
|
|
|
+#endif
|
|
|
+ ds1302_SynTime(&m_datetime);
|
|
|
+ fram_time_write(m_datetime);
|
|
|
/*for(i001=0;i001<6;i001++)
|
|
|
{
|
|
|
sprintf((char*)(&USART1_TX_BUF[33+i001]),"%02X",T2C_RemoteCaliDat001.PayLoadData[i001]);
|
|
@@ -5530,6 +5587,20 @@ int Process_CMD_0x39_RemoteCali(uint8_t dataMode)
|
|
|
FM25L16B_Write_N_Bytes(ADDR_Enable_BlankSeal, T2C_RemoteCaliDat001.PayLoadData, 1);
|
|
|
T2C_RemoteCaliDat001.NumberOfRegs = 1;
|
|
|
break;
|
|
|
+ //add boly 20221021
|
|
|
+ case IDEX_ADDR_JT808_DataBack:
|
|
|
+ {
|
|
|
+ jt808_recv_func_DataBack(T2C_RemoteCaliDat001.PayLoadData, T2C_RemoteCaliDat001.NumberOfRegs);
|
|
|
+ memset((void *)&T2C_RemoteCaliDat001, 0x00, sizeof(T2C_RemoteCaliDat001));
|
|
|
+ memset((void *)Pass41SensorScanParam.rx_buf, 0x00, sizeof(Pass41SensorScanParam.rx_buf));
|
|
|
+
|
|
|
+ if(tmrForRemoteCali > (SPAN_RemoteCali_INTERVAL - 10))
|
|
|
+ {
|
|
|
+ tmrForRemoteCali = 0;
|
|
|
+ }
|
|
|
+ return 1;
|
|
|
+ };//break;
|
|
|
+ //end boly
|
|
|
default:
|
|
|
T2C_RemoteCaliDat001.NumberOfRegs = sprintf(T2C_RemoteCaliDat001.PayLoadData, "Write Address Error! %08X\r\n", T2C_RemoteCaliDat001.AddrRegStart);
|
|
|
break;
|