Browse Source

V0.0.1.5 测试版,针对平峰发送仍然重启问题增加了观测,改大了暂存buffer

LAPTOP-KB7QFH2U\ChenJie-PC 2 years ago
parent
commit
965ab9263d
3 changed files with 58 additions and 45 deletions
  1. 1 1
      src/AppGlobalVar.h
  2. 45 42
      src/AppTaskUart1.c
  3. 12 2
      src/hal_adapter.c

+ 1 - 1
src/AppGlobalVar.h

@@ -26,7 +26,7 @@
 #define HWVERSION 0x0001
 #define BLSWVERSION 0x00000000
 #define DRVSWVERSION 0x00000004
-#define APPSWVERSION 0x00000104
+#define APPSWVERSION 0x00000105
 #define BMS_MANUFACTURE 0xFF
 #define BMS_INFO 0xFF
 #define DATA_MODULE_TYPE 0x02

+ 45 - 42
src/AppTaskUart1.c

@@ -221,6 +221,48 @@ sint8 TcpDataSendFunc(sint8 ConnectId)
 	pSendDataAddr = 0;
 	return outValue;
 }
+sint8 tcpipConnectionSend(uint8 TcpConnectId, uint8 *SendDataPtr, uint16 SendDataLen)
+{
+	sint8 outValue = -1;
+	uint8  sendErrConuter= 0;
+	uint16 ReadLen = 0;
+	char AtCmdSend[30] = {0};
+	uint8 AtCmdSendTotalLen = 0;
+	uint8 UartRecvPtr[128];//暂存buffer改大
+	uint8 ret = 0;
+	sprintf(AtCmdSend, "AT+CIPSEND=%d,%d\r\n", TcpConnectId, SendDataLen);
+	AtCmdSendTotalLen = mstrlen(AtCmdSend);
+	while(outValue!=0&&sendErrConuter<3)
+	{
+		ret = UART_Query_Data(UART_LPUART1, UART_LPUART1, (uint8 *)AtCmdSend, AtCmdSendTotalLen, UartRecvPtr, &ReadLen, 1000);
+		if (((ret==0)&&(ReadLen>0)&&((uint8 *)strstr((char *)UartRecvPtr, (char *)(">"))))||1)//此IF条件默认通过
+		{
+			UART_Send_Data(UART_LPUART1, (uint8 *)SendDataPtr, SendDataLen, 1000);
+			sint8 ret = AtcmdDelayRecvFunc(UART_LPUART1,(char *)("+CIPSEND"),5000);
+			if (ret==0)
+			{
+				outValue = 0;
+			}
+			else
+			{
+#if SEGGER_PRINTF==1
+			SEGGER_RTT_printf("[%d]sendFault!!!\r\n",__LINE__);
+#endif
+				outValue = -2;
+				sendErrConuter++;
+			}
+		}
+		else
+		{
+			outValue = -1;
+			sendErrConuter++;
+		}
+#if SEGGER_PRINTF==1
+			SEGGER_RTT_printf("[%d]outValue=%d,sendErrConuter=%d\r\n",__LINE__,outValue,sendErrConuter);
+#endif
+	}
+	return outValue;
+}
 sint8 TcpConnectFunc(sint8 *ConnectId)
 {
 	uint8 ConnectStep = 0;
@@ -701,9 +743,9 @@ void TcpDataEncode(uint32 *PtrSendAddr, uint16 *SendLen)
 	uint8 *SendBuffer = NULL;
 	uint8 DataIdx = 0;
 #if SEGGER_PRINTF==1
-	SEGGER_RTT_printf("[%d] TcpSendTimeCounter -%d\r\n",__LINE__,TcpSendTimeCounter);
+	SEGGER_RTT_printf("[%d] TcpSendTimeCounter=%d\r\n",__LINE__,TcpSendTimeCounter);
 #endif
-	if (TcpSendTimeCounter == 1)
+	if (TcpSendTimeCounter == 5)
 	{
 		DataIdx = VerMsg; //版本信息发送
 	}
@@ -734,7 +776,7 @@ void TcpDataEncode(uint32 *PtrSendAddr, uint16 *SendLen)
 		return;
 	}
 #if SEGGER_PRINTF==1
-	SEGGER_RTT_printf("[%d] DataIdx -%d\r\n",__LINE__,DataIdx);
+	SEGGER_RTT_printf("\r\n[%d] DataIdx -%X\r\n",__LINE__,DataIdx);
 #endif
 	memcpy(TcpbattSN, AppConfigInfo.deviceSn, 17);
 	GetUtc8Time(&UTC8TimeTcp); //时间获取
@@ -1348,45 +1390,6 @@ void tcpUdsFunc(uint8 *Ptr,uint8 *AnsPtr)
 	*(AnsPtr+36) = 0x31;
 	*(AnsPtr+37) = bcc_chk(AnsPtr, 37);
 }
-sint8 tcpipConnectionSend(uint8 TcpConnectId, uint8 *SendDataPtr, uint16 SendDataLen)
-{
-	sint8 outValue = -1;
-	uint8  sendErrConuter= 0;
-	uint16 ReadLen = 0;
-	char AtCmdSend[30] = {0};
-	uint8 AtCmdSendTotalLen = 0;
-	uint8 UartRecvPtr[30];
-	uint8 ret = 0;
-	sprintf(AtCmdSend, "AT+CIPSEND=%d,%d\r\n", TcpConnectId, SendDataLen);
-	AtCmdSendTotalLen = mstrlen(AtCmdSend);
-	while(outValue!=0&&sendErrConuter<3)
-	{
-		ret = UART_Query_Data(UART_LPUART1, UART_LPUART1, (uint8 *)AtCmdSend, AtCmdSendTotalLen, UartRecvPtr, &ReadLen, 1000);
-		if (((ret==0)&&(ReadLen>0)&&((uint8 *)strstr((char *)UartRecvPtr, (char *)(">"))))||1)//此IF条件默认通过
-		{
-			UART_Send_Data(UART_LPUART1, (uint8 *)SendDataPtr, SendDataLen, 1000);
-			sint8 ret = AtcmdDelayRecvFunc(UART_LPUART1,(char *)("+CIPSEND"),5000);
-			if (ret==0)
-			{
-				outValue = 0;
-			}
-			else
-			{
-				outValue = -2;
-				sendErrConuter++;
-			}
-		}
-		else
-		{
-			outValue = -1;
-			sendErrConuter++;
-		}
-#if SEGGER_PRINTF==1
-			SEGGER_RTT_printf("[%d]outValue=%d,sendErrConuter=%d\r\n",__LINE__,outValue,sendErrConuter);
-#endif
-	}
-	return outValue;
-}
 void Fota_Ftp(uint8 *dataPtrIn)
 {
 	static uint8 ftp_process = 0;

+ 12 - 2
src/hal_adapter.c

@@ -108,7 +108,12 @@ uint32_t write_ringBuffer(uint8_t *buffer, uint32_t size, ringbuffer_t *ringBuf)
     memcpy(ringBuf_source + ringBuf_bw, buffer, size);
     ringBuf->bw = (ringBuf_bw + size) % ringBuf_len;
     ringBuf->btoRead += size;
-
+#if SEGGER_PRINTF==1
+    if(ringBuf->source==ringBufferforUart[1])
+    {
+    	SEGGER_RTT_printf("[%d]buffer=%s\r\nringBuf->bw=%X,size=%X,%X\r\n",__LINE__,buffer,ringBuf->bw,size,ringBuf->bw-size+ringBuf_source);
+    }
+#endif
 /*
     if(ringBuf->br!=0)
     {
@@ -142,7 +147,6 @@ uint32_t read_ringBuffer(uint8_t *buffer, uint32_t size, ringbuffer_t *ringBuf)
 
     memcpy(buffer, ringBuf_source, size);
     ringBuf->br = size;
-
 //    if( (ringBuf_br + size ) <= ringBuf_len )
 //    {
 //        memcpy(buffer, ringBuf_source + ringBuf_br, size);
@@ -317,6 +321,12 @@ Std_ReturnType UART_Send_Data(uint8 transChannel, const uint8 *txBuffer, uint32
 						UartRecvMsg.DataLen = UartHalMsgRecv.value;
 						UartRecvMsg.dataAddr = (uint32)(uartRingBuffer[UartHalMsgRecv.Channel].bw + uartRingBuffer[UartHalMsgRecv.Channel].source - UartHalMsgRecv.value);
 						ret_send = xQueueSend(UartRecvQueue[UartHalMsgRecv.Channel],&UartRecvMsg,10);
+#if SEGGER_PRINTF==1
+						if(UartHalMsgRecv.Channel==1)
+						{
+							SEGGER_RTT_printf("[%d]source=%X,dataAddr=%X\r\n",__LINE__,uartRingBuffer[UartHalMsgRecv.Channel].source,UartRecvMsg.dataAddr);
+						}
+#endif
 					}
 					T_timeout[UartHalMsgRecv.Channel] = 0;
 					UartState[UartHalMsgRecv.Channel] = UartRecvComplete;