龙三郎 1 éve
szülő
commit
822f76140b

+ 1 - 1
Drivers/Business/PumpBusiness.c

@@ -21,7 +21,7 @@ static struct TIMER_Struct timer;
 
 
 
-uint8_t send_data_switch = 0; // 发送数据的开关,0表示发送数据
+uint8_t send_data_switch = 1; // 发送数据的开关,0表示发送数据
 uint8_t networkTest_Flag=0;//开机判断是否有信号,0是未知默认状态,1是失败状态,2是成功状态。
 uint8_t module_switch = 0;//4G模块开关 0正常,1是关闭标志
 static uint8_t test_switch=0; //0代表正常流程,1代表测试流程

+ 2 - 2
Drivers/CONFIG.h

@@ -7,8 +7,8 @@
 
 
 
-//#define EC800M 1 //4G开关,不能数字开头
-#define BC260Y 1  // NB
+#define EC800M 1 //4G开关,不能数字开头
+//#define BC260Y 1  // NB
 
 
 

+ 1 - 1
Drivers/Modules/At_Module.c

@@ -21,7 +21,7 @@ static struct TIMER_Struct timer = {
 struct AT_Struct
 {
 	enum AT_Status status;
-	uint8_t result[512];
+	uint8_t result[1024];
 	uint16_t result_length;
 };
 static struct AT_Struct at_Struct = {

+ 1 - 1
Drivers/Modules/Log_Module.c

@@ -41,7 +41,7 @@ void Log_SendHex(uint8_t * arr, uint16_t len)
 		Log_SendString(hex);
 	}
 }
-static char Log_String[512];
+static char Log_String[1024];
 void Log_Printf(char *format, ...)
 {
 	memset(Log_String, 0, sizeof(Log_String));

+ 4 - 4
Drivers/Modules/bc260y/BC260Y_UDP_Client5.c

@@ -273,7 +273,7 @@ void UDP_Client_Handle(void)
 			goto_step(STEP_EXIT_SLEEP);
 			break;
 		case STEP_EXIT_SLEEP: // 退出休眠
-			result = bc260y.exit_sleep();
+			result = bc260y.exit_sleep_2();
 		  if(result == Result_Success)
 			{
 				Log_Printf_Debug("退出休眠成功\r\n");
@@ -296,7 +296,7 @@ void UDP_Client_Handle(void)
 			}
 			break;
 		case STEP_SET_SLEEP: // 设置休眠模式
-			result = bc260y.set_sleep(1);
+			result = bc260y.set_sleep(2);
 			if(result == Result_Success)
 			{
 				goto_step(STEP_DATAFORMAT);
@@ -307,7 +307,7 @@ void UDP_Client_Handle(void)
 			}
 			break;
 		case STEP_DATAFORMAT:
-			result = bc260y.dataformat(0);
+			result = bc260y.dataformat(1);
 			if(result == Result_Success)
 			{
 			 goto_step(STEP_QUERY_CFUN);
@@ -467,7 +467,7 @@ void UDP_Client_Handle(void)
 			break;
  
 		case STEP_SEND: // 发送send
-			result = bc260y.send(connectID, coap_message, coap_message_length);
+			result = bc260y.send_rai(connectID, coap_message, coap_message_length, 2);
 			if(result == Result_Success)
 			{
 				goto_step(STEP_RECV);

+ 7 - 7
Drivers/Modules/bc260y/Bc260y_Regist.c

@@ -90,7 +90,7 @@ uint8_t regist_Handle()
 	uint32_t ci = 0;
 	enum Result result = Result_None;
 //	GPIO_SetBits(WAKE_GPIO, WAKE_GPIO_Pin);
-	result = bc260y.exit_sleep_sync();//退出休眠
+	result = bc260y.exit_sleep_2_sync();//退出休眠
 	if(result==Result_Success)
 	{
 		Log_Printf_Debug("退出休眠成功\r\n");
@@ -99,12 +99,12 @@ uint8_t regist_Handle()
   if(result==Result_Success)
 	{
 		Log_Printf_Debug("开启回显成功\r\n");
-		result=bc260y.set_sleep_sync(1);//设置休眠模式
+		result=bc260y.set_sleep_sync(2);//设置休眠模式
 	}
 	if(result==Result_Success)
 	{
 		Log_Printf_Debug("设置休眠模式成功\r\n");
-		result = bc260y.dataformat_sync(0); // 设置数据格式
+		result = bc260y.dataformat_sync(1); // 设置数据格式, 十六进制
 	}
 	
   if(result==Result_Success)
@@ -161,7 +161,7 @@ uint8_t regist_Handle()
 		memset(regist_data, 0, sizeof(regist_data));
 		packRegistParams(regist_data, &regist_data_length, regist_params_struct);
 		printf_regist_param_struct(regist_params_struct);
-		result =bc260y.send_sync(tcpconnectID, regist_data, regist_data_length);//数据发送
+		result =bc260y.send_rai_sync(tcpconnectID, regist_data, regist_data_length, 0);//数据发送
 	}
 	
 	if(result==Result_Success)
@@ -169,9 +169,9 @@ uint8_t regist_Handle()
 		Log_Printf_Debug("数据发送成功\r\n");
 		memset(regist_data, 0, sizeof(regist_data));
 		result =bc260y.recv_with_time_sync(tcpconnectID,regist_data,&regist_data_length,10000);
-		Log_Printf_Debug("解密前:\r\n");
-		Log_SendHex(regist_data, regist_data_length);
-		Log_Printf_Debug("\r\n");
+//		Log_Printf_Debug("解密前:\r\n");
+//		Log_SendHex(regist_data, regist_data_length);
+//		Log_Printf_Debug("\r\n");
 	}
 	
 	

+ 112 - 8
Drivers/Modules/bc260y/bc260y.c

@@ -34,6 +34,8 @@
 void bc260y_reset(void); // 重置状态。该文件中的方法共用状态,在使用下面的方法前需要重置一下状态。
 enum Result bc260y_exit_sleep(void); // 退出休眠
 enum Result bc260y_exit_sleep_sync(void); // 退出休眠
+enum Result bc260y_exit_sleep_2(void); // 退出休眠
+enum Result bc260y_exit_sleep_2_sync(void); // 退出休眠
 void bc260y_enter_sleep(void); // 进入休眠
 /**
 * 查询休眠模式
@@ -145,8 +147,9 @@ enum Result bc260y_set_qisde_sync(uint8_t echo); // 同
 *
 **/
 enum Result bc260y_send(uint8_t connectID, uint8_t * data, uint16_t data_length);
-enum Result bc260y_send_rai(uint8_t connectID, uint8_t * data, uint16_t data_length,uint8_t rai);
 enum Result bc260y_send_sync(uint8_t connectID, uint8_t * data, uint16_t data_length); // 同步
+enum Result bc260y_send_rai(uint8_t connectID, uint8_t * data, uint16_t data_length,uint8_t rai);
+enum Result bc260y_send_rai_sync(uint8_t connectID, uint8_t * data, uint16_t data_length,uint8_t rai);
 /** 
 * 接收数据
 * 输入<<
@@ -222,7 +225,7 @@ enum Result bc260y_dataformat_sync(uint8_t n);
 // 
 
 // AT指令
-static char AT_CMD[256];
+static char AT_CMD[1024];
 
 
 // EC800M提供的一些方法
@@ -235,6 +238,8 @@ struct BC260Y_Struct bc260y =
 	.reset = bc260y_reset,
 	.exit_sleep = bc260y_exit_sleep,
 	.exit_sleep_sync = bc260y_exit_sleep_sync,
+	.exit_sleep_2 = bc260y_exit_sleep_2,
+	.exit_sleep_2_sync = bc260y_exit_sleep_2_sync,
 	.enter_sleep = bc260y_enter_sleep,
 	.query_sleep = bc260y_query_sleep,
 	.query_sleep_sync = bc260y_query_sleep_sync,
@@ -257,8 +262,9 @@ struct BC260Y_Struct bc260y =
 	.set_qisde = bc260y_set_qisde,
 	.set_qisde_sync = bc260y_set_qisde_sync,
 	.send = bc260y_send,
-	.send_rai = bc260y_send_rai,
 	.send_sync = bc260y_send_sync,
+	.send_rai = bc260y_send_rai,
+	.send_rai_sync = bc260y_send_rai_sync,
 	.recv = bc260y_recv,
 	.recv_with_time = bc260y_recv_with_time,
 	.recv_with_time_sync = bc260y_recv_with_time_sync,
@@ -457,6 +463,73 @@ enum Result bc260y_exit_sleep_sync()
 	return result;
 }
 
+
+
+// 退出休眠
+enum Result bc260y_exit_sleep_2(void)
+{
+	enum Result result = Result_None;
+	int activeID = 123, time = 100; // 活动ID, 超时时间
+	if(!verifyActiveID(activeID)){ return Result_Failed; } // 校验ID
+	// 判断状态
+	if(getStatus() == Status_None) // 空闲状态
+	{
+		sprintf(AT_CMD, "AT\r\n"); // 拼接AT指令
+		result = send_at(AT_CMD, activeID);
+	}
+	else if(getStatus() != Status_Sending) // 上一次的结果没有清除,返回错误,为了保证时效性,需要重置状态。重新调用
+	{
+		Log_Printf_Debug("返回结果过期1,请重置状态\r\n"); // 打印日志
+		
+		result = failed(); // 失败
+	}
+	else if(getTimerMs() > time) // 正在发送状态。判断超时
+	{
+		Log_Printf_Debug("AT指令返回超时\r\n"); // 打印日志
+		Log_SendArray_Debug(AT_result(), AT_result_length());
+		result = success(); // 成功
+	}
+	if(strstr((char * )AT_result(), "OK\r\n") != NULL) // 查询是否返回
+	{
+		// 发送日志
+		Log_Printf_Debug("AT返回: %d\r\n", AT_result_length());
+		Log_SendArray_Debug(AT_result(), AT_result_length());
+		result = success(); // 成功
+	}
+	else if(strstr((char * )AT_result(), "+QNBIOTEVENT:") != NULL)
+	{
+	  // 发送日志
+		Log_Printf_Debug("AT返回: %d\r\n", AT_result_length());
+		Log_SendArray_Debug(AT_result(), AT_result_length());
+		result = success(); // 成功
+	}
+	else if(strstr((char * )AT_result(), "ERROR\r\n") != NULL) // 查询是否返回
+	{
+		// 发送日志
+		Log_Printf_Debug("AT返回: %d\r\n", AT_result_length());
+		Log_SendArray_Debug(AT_result(), AT_result_length());
+		
+		result = failed(); // 失败
+	}
+	return result;
+	
+}
+enum Result bc260y_exit_sleep_2_sync()
+{
+	enum Result result = Result_None;
+	while(1)
+	{
+		result = bc260y_exit_sleep_2();
+		if(result != Result_None)
+		{
+			// 重置
+			bc260y.reset();
+			break;
+		}
+	}
+	return result;
+}
+
 // 进入休眠
 void bc260y_enter_sleep(void)
 {
@@ -1405,6 +1478,31 @@ enum Result bc260y_send(uint8_t connectID, uint8_t * data, uint16_t data_length)
 	return result;
 }
 
+/** 
+* 发送数据
+* 输入<<
+* connectID Socket ID。范围1-11。
+* send_length 发送长度。
+* data 待发送的数据。
+*
+* activeID 49
+**/
+enum Result bc260y_send_sync(uint8_t connectID, uint8_t * data, uint16_t data_length)
+{
+	enum Result result = Result_None;
+	while(1)
+	{
+		result = bc260y_send(connectID, data, data_length);
+		if(result != Result_None)
+		{
+			// 重置
+			bc260y.reset();
+			break;
+		}
+	}
+	return result;
+}
+
 /** 
 * 发送数据
 * 输入<<
@@ -1425,9 +1523,13 @@ enum Result bc260y_send_rai(uint8_t connectID, uint8_t * data, uint16_t data_len
 	// 判断状态
 	if(getStatus() == Status_None) // 空闲状态
 	{
-//		memset(hexData,0, sizeof(hexData));
-//		byteToHexStr(data,hexData, data_length);//nb需要转16进制
-//		sprintf(AT_CMD, "AT+QISEND=%d,%d,%s,%d\r\n", connectID, data_length,hexData,rai); // 拼接AT指令
+		memset(AT_CMD, 0, sizeof(AT_CMD));
+		sprintf(AT_CMD + strlen(AT_CMD), "AT+QISEND=%d,%d,\"", connectID, data_length); // 拼接AT指令
+		for(uint16_t i = 0; i < data_length; i++)
+		{
+			sprintf(AT_CMD + strlen(AT_CMD), "%02X", data[i]);
+		}
+		sprintf(AT_CMD + strlen(AT_CMD), "\",%d\r\n", rai); // 拼接AT指令
 		result = send_at(AT_CMD, activeID);
 	}
 	else if(getStatus() != Status_Sending) // 上一次的结果没有清除,返回错误,为了保证时效性,需要重置状态。重新调用
@@ -1468,6 +1570,8 @@ enum Result bc260y_send_rai(uint8_t connectID, uint8_t * data, uint16_t data_len
 	return result;
 }
 
+
+
 /** 
 * 发送数据
 * 输入<<
@@ -1477,12 +1581,12 @@ enum Result bc260y_send_rai(uint8_t connectID, uint8_t * data, uint16_t data_len
 *
 * activeID 49
 **/
-enum Result bc260y_send_sync(uint8_t connectID, uint8_t * data, uint16_t data_length)
+enum Result bc260y_send_rai_sync(uint8_t connectID, uint8_t * data, uint16_t data_length,uint8_t rai)
 {
 	enum Result result = Result_None;
 	while(1)
 	{
-		result = bc260y_send(connectID, data, data_length);
+		result = bc260y_send_rai(connectID, data, data_length, rai);
 		if(result != Result_None)
 		{
 			// 重置

+ 4 - 1
Drivers/Modules/bc260y/bc260y.h

@@ -34,6 +34,8 @@ struct BC260Y_Struct
 	void (* reset) (void);
 	enum Result (* exit_sleep)(void); // 退出休眠
 	enum Result (* exit_sleep_sync)(void); // 退出休眠
+	enum Result (* exit_sleep_2)(void); // 退出休眠, 浅睡眠模式下
+	enum Result (* exit_sleep_2_sync)(void); // 退出休眠
 	void (* enter_sleep)(void); // 退出休眠
 	enum Result (* query_sleep)(uint8_t * n); // 查询休眠状态
 	enum Result (* query_sleep_sync)(uint8_t * n); // 查询休眠状态。同步
@@ -56,8 +58,9 @@ struct BC260Y_Struct
 	enum Result (* set_qisde)(uint8_t echo); // 控制发送数据后是否回显。
 	enum Result (* set_qisde_sync)(uint8_t echo); // 控制发送数据后是否回显。。同步
 	enum Result (* send)(uint8_t connectID, uint8_t * data, uint16_t data_length); // 发送数据。
-	enum Result (* send_rai)(uint8_t connectID, uint8_t * data, uint16_t data_length,uint8_t rai); // 发送数据。
 	enum Result (* send_sync)(uint8_t connectID, uint8_t * data, uint16_t data_length); // 发送数据。。同步
+	enum Result (* send_rai)(uint8_t connectID, uint8_t * data, uint16_t data_length,uint8_t rai); // 发送数据。
+	enum Result (* send_rai_sync)(uint8_t connectID, uint8_t * data, uint16_t data_length,uint8_t rai); // 发送数据。
 	
 	enum Result (* recv)(uint8_t connectID, uint8_t * data, uint16_t * data_length); // 接收数据
 	enum Result (* recv_with_time)(uint8_t connectID, uint8_t * data, uint16_t * data_length, uint32_t time_out); // 接收数据,带等待时间。

+ 13 - 6
Drivers/Modules/ec800m/Ec800m_Regist.c

@@ -30,7 +30,7 @@
 #include "At_Module.h"
 #include "Common_Util.h"
 #include "Tuoreniot.h"
-static uint8_t mcu_id[8] = "123456";
+static uint8_t mcu_id[8] = "1234567";
 
 static uint8_t register_status;//注册成功,向flash存储标志
 
@@ -132,24 +132,31 @@ uint8_t regist_Handle()
 		packRegistParams(regist_data, &regist_data_length, regist_params_struct);
 		printf_regist_param_struct(regist_params_struct);
 		result =ec800m.send_sync(tcpconnectID, regist_data, regist_data_length);//数据发送
+		Log_Printf_Debug("regist_data:\r\n");
+		Log_SendHex(regist_data, regist_data_length);
+		Log_Printf_Debug("\r\n");
 	}
 
 	if(result==Result_Success)
 	{
+		Log_Printf_Debug("数据发送成功\r\n");
 		memset(regist_data, 0, sizeof(regist_data));
 		result =ec800m.recv_with_time_sync(tcpconnectID,regist_data,&regist_data_length,10000);
-		if(result==Result_Failed)
-		{
-			return result;
-		}
+		
+	}
+	
+	if(result==Result_Success)
+	{
 		// 解析注册数据
 		regist_flag = analysisRegistData(regist_data, regist_data_length, &regist_params_struct);
 		printf_regist_param_struct(regist_params_struct);
+		
+		result=ec800m.close_socket_sync(tcpconnectID);//断开tcp连接
 	}
 
 	if(result==Result_Success)
 	{
-		result=ec800m.close_socket_sync(tcpconnectID);//断开tcp连接
+		Log_Printf_Debug("断开tcp连接成功\r\n");
 	}
 	
 	ec800m.set_cfun_sync(0);//设置最小功能模式

+ 35 - 0
User/main.c

@@ -22,8 +22,13 @@
 
 #include "Tuoreniot.h"
 
+#include "bc260y.h"
+#include "At_Module.h"
+
 // 计时器
 static struct TIMER_Struct timer;
+//static uint8_t send_flag = 1;
+//static char AT_CMD[512];
 
 int main(void)
 {
@@ -53,9 +58,39 @@ int main(void)
 		
 		if(time_get_delay(&timer) > 60 * 1000)
 		{
+			
+			
 			time_clear(&timer);
 		}
 		
+		
+//		if(send_flag == 1)
+//		{
+//			uint8_t connectID = 1;
+//			uint16_t data_length = 6;
+//			uint8_t data[10] = {0x03, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38};
+//			uint8_t rai = 2;
+//			
+//			
+//			memset(AT_CMD, 0, sizeof(AT_CMD));
+//			sprintf(AT_CMD + strlen(AT_CMD), "AT+QISEND=%d,%d,\"", connectID, data_length); // 拼接AT指令
+//			for(uint16_t i = 0; i < data_length; i++)
+//			{
+//				sprintf(AT_CMD + strlen(AT_CMD), "%02X", data[i]);
+//			}
+//			sprintf(AT_CMD + strlen(AT_CMD), "\",%d\r\n", rai); // 拼接AT指令
+//			
+//			
+//			
+//			Log_Printf_Debug("\r\n");
+//			Log_Printf_Debug(AT_CMD);
+//			Log_Printf_Debug("\r\n");
+//			
+//			send_flag = 0;
+//		}
+//		
+//		AT_Handle();
+		
 		pump_business_loop_execution();