|
@@ -1106,6 +1106,184 @@ void Send_A1_Cmd(unsigned char scrAddr, unsigned char funCode, unsigned char scr
|
|
|
*/
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ ***************************************
|
|
|
+ * 构建A1命令数据 -- hex制式
|
|
|
+ * 输入:
|
|
|
+ * pBuf-构建数据的存放首地址
|
|
|
+ * pEmergy,如果是数据有变动,表示紧急上报,将标记存于此地址
|
|
|
+ * 返回: 构建数据的字节总数
|
|
|
+ ***************************************
|
|
|
+ */
|
|
|
+int BuildA1Cmd(uint8_t *pBuf, uint8_t *pEmergy)
|
|
|
+{
|
|
|
+ int send_pos=0;
|
|
|
+ unsigned char emergy=0;
|
|
|
+ unsigned char Lrc_temp;
|
|
|
+ unsigned char overflow_flag=0;
|
|
|
+ int i,j;
|
|
|
+ unsigned char temp_i = 0x00;
|
|
|
+
|
|
|
+ pBuf[send_pos++] = 0xA1;
|
|
|
+ pBuf[send_pos++] = 120;
|
|
|
+ if(StoreNumber>0)
|
|
|
+ {
|
|
|
+ if(memcmp(Cang_IO_tbak[0],Cang01_IO,64))
|
|
|
+ {
|
|
|
+ emergy=0x80;
|
|
|
+ }
|
|
|
+ memcpy(Cang_IO_tbak[0],Cang01_IO,64);
|
|
|
+ }
|
|
|
+ if(StoreNumber>1)
|
|
|
+ {
|
|
|
+ if(memcmp(Cang_IO_tbak[1],Cang02_IO,64))
|
|
|
+ {
|
|
|
+ emergy=0x80;
|
|
|
+ }
|
|
|
+ memcpy(Cang_IO_tbak[1],Cang02_IO,64);
|
|
|
+ }
|
|
|
+ if(StoreNumber>2)
|
|
|
+ {
|
|
|
+ if(memcmp(Cang_IO_tbak[2],Cang03_IO,64))
|
|
|
+ {
|
|
|
+ emergy=0x80;
|
|
|
+ }
|
|
|
+ memcpy(Cang_IO_tbak[2],Cang03_IO,64);
|
|
|
+ }
|
|
|
+ if(StoreNumber>3)
|
|
|
+ {
|
|
|
+ if(memcmp(Cang_IO_tbak[3],Cang04_IO,64))
|
|
|
+ {
|
|
|
+ emergy=0x80;
|
|
|
+ }
|
|
|
+ memcpy(Cang_IO_tbak[3],Cang04_IO,64);
|
|
|
+ }
|
|
|
+ if((overflow_cnt==0) && (overflow_cnt==overflow_cnt_bak))
|
|
|
+ {
|
|
|
+ overflow_flag=0;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ overflow_flag=1;
|
|
|
+ }
|
|
|
+ overflow_cnt_bak=overflow_cnt;
|
|
|
+ if(overflow_flag_bak!=overflow_flag)
|
|
|
+ {
|
|
|
+ emergy=0x80;
|
|
|
+ }
|
|
|
+ overflow_flag_bak=overflow_flag;
|
|
|
+
|
|
|
+ pBuf[send_pos++] = emergy;
|
|
|
+ pBuf[send_pos++] = StoreNumber;
|
|
|
+ pBuf[send_pos++] = 0x22;
|
|
|
+ pBuf[send_pos++] = overflow_flag;
|
|
|
+
|
|
|
+ if((Config_info_all.ManHole_Big_info>0) && (Config_info_all.ManHole_Big_info<8))
|
|
|
+ {
|
|
|
+ pBuf[send_pos++] = 0x72;
|
|
|
+ for (i = 0; i < StoreNumber; i++)
|
|
|
+ {
|
|
|
+ pBuf[send_pos++] = Config_info_all.ManHole_Big_info/StoreNumber;
|
|
|
+ for(j=0;j<Config_info_all.ManHole_Big_info/StoreNumber;++j)
|
|
|
+ {
|
|
|
+ pBuf[send_pos++] = Cang_IO_tbak[i][indexDaGai01+10*j];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if((Config_info_all.Dump_info>0) && (Config_info_all.Dump_info<8))
|
|
|
+ {
|
|
|
+ pBuf[send_pos++] = 0x71;
|
|
|
+ for (i = 0; i < StoreNumber; i++)
|
|
|
+ {
|
|
|
+ pBuf[send_pos++] = Config_info_all.Dump_info/StoreNumber;
|
|
|
+ for(j=0;j<Config_info_all.Dump_info/StoreNumber;++j)
|
|
|
+ {
|
|
|
+ pBuf[send_pos++] = Cang_IO_tbak[i][indexXieYouFa01+10*j];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if((Config_info_all.HaiDiFa_info>0) && (Config_info_all.HaiDiFa_info<8))
|
|
|
+ {
|
|
|
+ pBuf[send_pos++] = 0x64;
|
|
|
+ for (i = 0; i < StoreNumber; i++)
|
|
|
+ {
|
|
|
+ pBuf[send_pos++] = Config_info_all.HaiDiFa_info/StoreNumber;
|
|
|
+ for(j=0;j<Config_info_all.HaiDiFa_info/StoreNumber;++j)
|
|
|
+ {
|
|
|
+ pBuf[send_pos++] = Cang_IO_tbak[i][indexHaiDiFa01+10*j];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ while (send_pos<(120+2))
|
|
|
+ {
|
|
|
+ pBuf[send_pos++] = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (pEmergy) *pEmergy = emergy;
|
|
|
+ return send_pos;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ ***************************************
|
|
|
+ * 构建20命令数据 时间戳 -- hex制式
|
|
|
+ * 输入:pBuf-构建数据的存放首地址
|
|
|
+ * 返回: 构建数据的字节总数
|
|
|
+ ***************************************
|
|
|
+ */
|
|
|
+extern SDateTime m_datetime;
|
|
|
+int BuildTimeCmd(uint8_t *pBuf)
|
|
|
+{
|
|
|
+ int send_pos=0;
|
|
|
+
|
|
|
+ pBuf[send_pos++] = 0x20;
|
|
|
+ pBuf[send_pos++] = 6;
|
|
|
+
|
|
|
+ pBuf[send_pos++] = m_datetime.year;
|
|
|
+ pBuf[send_pos++] = m_datetime.month;
|
|
|
+ pBuf[send_pos++] = m_datetime.day;
|
|
|
+ pBuf[send_pos++] = m_datetime.hour;
|
|
|
+ pBuf[send_pos++] = m_datetime.min;
|
|
|
+ pBuf[send_pos++] = m_datetime.sec;
|
|
|
+
|
|
|
+ return send_pos;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ ***************************************
|
|
|
+ * xy,新透传,41串口透传,模拟F3轮询传感器
|
|
|
+ * 按照周期1构建数据,按照周期2发送数据
|
|
|
+ * 输入:无
|
|
|
+ * 返回: 无
|
|
|
+ * 发送区的格式为:
|
|
|
+ * 数据负载类别,1Byte
|
|
|
+ * 传感器命令数据包数,1Byte
|
|
|
+ * 具体的各个命令数据包,NByte
|
|
|
+ ***************************************
|
|
|
+ */
|
|
|
+void DoInternalSensorScanAndPost()
|
|
|
+{
|
|
|
+ uint8_t len=0;
|
|
|
+ uint8_t emergy=0;
|
|
|
+ uint8_t *pSendBuf = USART1_TX_BUF;
|
|
|
+ static int step = 0;
|
|
|
+ static int nstep = 0;
|
|
|
+
|
|
|
+ if(++step % SensorScanParam.step == 0)
|
|
|
+ {
|
|
|
+ pSendBuf[0] = 1;
|
|
|
+ pSendBuf[1] = 2;
|
|
|
+ pSendBuf += 2;
|
|
|
+ len = BuildA1Cmd(pSendBuf, &emergy); // 目前只实装了A1命令,后续根据新命令设计再行拓展
|
|
|
+ len += BuildTimeCmd(pSendBuf+len); // 目前总是会附加时间戳命令数据
|
|
|
+
|
|
|
+ if(emergy) {
|
|
|
+ TerminalSlave485_Send_Data(USART1_TX_BUF,len+2);
|
|
|
+ nstep = 0;
|
|
|
+ } else {
|
|
|
+ if(++nstep % SensorScanParam.nstep == 0) TerminalSlave485_Send_Data(USART1_TX_BUF,len+2);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
#include "leaf_ota.h"
|
|
|
//uint32_t data_count=0;
|
|
@@ -5348,7 +5526,13 @@ int Process_CMD_0x39_RemoteCali(uint8_t dataMode)
|
|
|
}
|
|
|
T2C_RemoteCaliDat001.NumberOfRegs = 32;
|
|
|
break;
|
|
|
-
|
|
|
+
|
|
|
+ case ADDR_Sensor_Scan_Param:
|
|
|
+ FM25L16B_Write_N_Bytes(ADDR_Sensor_Scan_Param,T2C_RemoteCaliDat001.PayLoadData,11);
|
|
|
+ InitSensorScanParam();
|
|
|
+ T2C_RemoteCaliDat001.NumberOfRegs = 11;
|
|
|
+ break;
|
|
|
+
|
|
|
case ADDR_TiltAngle_Sensor://倾角补偿参数 ----长度为16字节
|
|
|
FM25L16B_Write_N_Bytes(ADDR_TiltAngle_Sensor,T2C_RemoteCaliDat001.PayLoadData,16);
|
|
|
T2C_RemoteCaliDat001.NumberOfRegs=16;
|
|
@@ -5380,6 +5564,7 @@ int Process_CMD_0x39_RemoteCali(uint8_t dataMode)
|
|
|
ScreenMaster485_Send_Data(time_Set_Dwin,14);
|
|
|
//memcpy(TimeBuf+1,T2C_RemoteCaliDat001.PayLoadData,6);
|
|
|
ds1302_Write_Time(T2C_RemoteCaliDat001.PayLoadData-1);
|
|
|
+ ds1302_SynTime(&m_datetime);
|
|
|
/*for(i001=0;i001<6;i001++)
|
|
|
{
|
|
|
sprintf((char*)(&USART1_TX_BUF[33+i001]),"%02X",T2C_RemoteCaliDat001.PayLoadData[i001]);
|