Browse Source

F427处理SD卡挂载问题。以及web数据传输问题。

liyi 1 year ago
parent
commit
9fd88fd23b

+ 0 - 1
f427/applications/cascade.c

@@ -671,7 +671,6 @@ void cascade_reset(uint8_t mode,uint8_t addr)
 	}else if(p_d->cas.mode == MB_MODE_SLAVE)
 	{
 		mb_set_addr(MB_ID_CASCADE,p_d->cas.addr);
-			
 	}else
 	{
 		return ;

+ 2 - 2
f427/applications/rtconfig.h

@@ -13,7 +13,7 @@
 //#define DBG_LEVEL DBG_LOG
 
 // RT-Thread Kernel
-#define RT_NAME_MAX 8
+#define RT_NAME_MAX 20
 #define RT_CPUS_NR 1
 #define RT_ALIGN_SIZE 8
 #define RT_THREAD_PRIORITY_32
@@ -115,7 +115,7 @@
 #define RT_SERIAL_RB_BUFSZ 64
 #define RT_USING_SDIO
 #define SDIO_MAX_FREQ 40*1000000
-#define RT_MMCSD_STACK_SIZE (1024*2)
+#define RT_MMCSD_STACK_SIZE (1024*4)
 #define RT_MMCSD_THREAD_PREORITY 22
 #define RT_MMCSD_MAX_PARTITION 16
 #define RT_USING_SPI

+ 10 - 12
f427/applications/ui/menu.c

@@ -259,21 +259,21 @@ static void menu_input_paint(menu_handle_t *h, int font1, int font2, int item_h,
     sprintf(tmp, "%s:%0.2f", lang_get_str(h->lang, STR_ID_FACTOR), pttl->total[0].factor);
     lcd_draw_string(LCD_WIDTH/2, item_h*2, LCD_WIDTH/2, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
 #else
-    sprintf(tmp, "%s:%0.2f", lang_get_str(h->lang, STR_ID_VOLTAGE), pttl->voltage);
+    sprintf(tmp, "%s:    %0.2f", lang_get_str(h->lang, STR_ID_VOLTAGE), pttl->voltage);
     lcd_draw_string(5, item_h, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
 		
-		sprintf(tmp, "%s:%0.2f", lang_get_str(h->lang, STR_ID_CURRENT), pttl->current);
+		sprintf(tmp, "%s:    %0.2f", lang_get_str(h->lang, STR_ID_CURRENT), pttl->current);
     lcd_draw_string(5, item_h*2, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
 		
 		
 
-    sprintf(tmp, "%s:%0.2f", lang_get_str(h->lang, STR_ID_POWER), pttl->power);
+    sprintf(tmp, "%s:    %0.2f", lang_get_str(h->lang, STR_ID_POWER), pttl->power);
     lcd_draw_string(5, item_h*3, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
 
-    sprintf(tmp, "%s:%0.2f",lang_get_str(h->lang, STR_ID_FACTOR), pttl->factor);
+    sprintf(tmp, "%s:    %0.2f",lang_get_str(h->lang, STR_ID_FACTOR), pttl->factor);
     lcd_draw_string(5, item_h*4, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
 #endif
-    sprintf(tmp, "%s:%0.2f", lang_get_str(h->lang, STR_ID_CONSUMP), pttl->consump);
+    sprintf(tmp, "%s:    %0.2f", lang_get_str(h->lang, STR_ID_CONSUMP), pttl->consump);
     lcd_draw_string(5, item_h*5, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
 
     //lcd_refresh();
@@ -325,20 +325,18 @@ static void menu_output_paint(menu_handle_t *h, int font1, int font2, int item_h
     sprintf(tmp, "%s:%0.2f", lang_get_str(h->lang, STR_ID_FACTOR), pwr->factor);
     lcd_draw_string(LCD_WIDTH/2, item_h*2, LCD_WIDTH/2, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
 #else
-    sprintf(tmp, "%s:%s", lang_get_str(h->lang, STR_ID_SWITCH), pon);
+    sprintf(tmp, "%s:    %s", lang_get_str(h->lang, STR_ID_SWITCH), pon);
     lcd_draw_string(5, item_h, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
-		sprintf(tmp, "%s:%0.2f",lang_get_str(h->lang, STR_ID_CURRENT), ((float)all->pch[h->ch_out+1].power[0].current/10.0));
+		sprintf(tmp, "%s:    %0.2f",lang_get_str(h->lang, STR_ID_CURRENT), ((float)all->pch[h->ch_out+1].power[0].current/10.0));
     lcd_draw_string(5, item_h*2, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
-
-
-    sprintf(tmp, "%s:%0.2f", lang_get_str(h->lang, STR_ID_POWER), (((float)all->pch[h->ch_out+1].power[0].power)/1000.0));
+    sprintf(tmp, "%s:    %0.2f", lang_get_str(h->lang, STR_ID_POWER), (((float)all->pch[h->ch_out+1].power[0].power)/1000.0));
     lcd_draw_string(5, item_h*3, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
 		
 		
-    sprintf(tmp, "%s:%0.2f", lang_get_str(h->lang, STR_ID_FACTOR),(all->pch[h->ch_out+1].power[0].factor)/100.0);
+    sprintf(tmp, "%s:    %0.2f", lang_get_str(h->lang, STR_ID_FACTOR),(all->pch[h->ch_out+1].power[0].factor)/100.0);
     lcd_draw_string(5, item_h*4, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
 #endif
-    sprintf(tmp, "%s:%0.2f", lang_get_str(h->lang, STR_ID_CONSUMP), (all->pch[h->ch_out+1].power[0].consump)/1000.0);
+    sprintf(tmp, "%s:    %0.2f", lang_get_str(h->lang, STR_ID_CONSUMP), (all->pch[h->ch_out+1].power[0].consump)/1000.0);
     lcd_draw_string(5, item_h*5, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
 
     //lcd_refresh();

+ 141 - 12
f427/applications/web.c

@@ -155,7 +155,7 @@ static void send_powerc(web_handle_t *h, mg_conn_t *c, uint8_t addr)
 	
 		do{
 			bag ++;
-			if(count < ONCE_SEND_CNT)
+			if(count <= ONCE_SEND_CNT)
 			{
 				for(j=0;j<count;j++)
 				{
@@ -278,6 +278,100 @@ static void send_breaker(web_handle_t *h, mg_conn_t *c, uint8_t addr)
     breaker_data_free(&all);
 }
 
+static void send_net(web_handle_t *h, mg_conn_t *c)
+{
+	paras_data_t* para=paras_get();
+	pkt_hdr_t *hdr=NULL;
+	hdr = (pkt_hdr_t*)h->buf;
+	hdr->magic = PKT_MAGIC;
+  hdr->addr  = 0;
+  hdr->type  = PKT_TYPE_PARAS;
+  hdr->nack  = 0;
+	hdr->subtype = SUB_TYPE_PARAS_NETWORK;	
+
+	network_data_t data = {0};
+	
+	data = para->netwk;
+	hdr->dlen  = sizeof(network_data_t);
+	memcpy(hdr->data,&data,hdr->dlen);
+	
+	uint32_t xlen = sizeof(pkt_hdr_t) + sizeof(network_data_t);
+	ws_send(c, h->buf, xlen, 1);
+	//ws_send(c, h->buf, hdr->dlen, 1);	
+}
+
+
+static void send_misc(web_handle_t *h, mg_conn_t *c)
+{
+	paras_data_t* para=paras_get();
+	pkt_hdr_t *hdr=NULL;
+	hdr = (pkt_hdr_t*)h->buf;
+	hdr->magic = PKT_MAGIC;
+  hdr->addr  = 0;
+  hdr->type  = PKT_TYPE_PARAS;
+  hdr->nack  = 0;
+	hdr->subtype = SUB_TYPE_PARAS_MISC;	
+	
+	
+	misc_data_t data = {0};
+	
+	data = para->misc;
+	hdr->dlen  = sizeof(misc_data_t);
+	
+	
+	ws_send(c, h->buf, hdr->dlen, 1);
+	
+}
+
+
+static void send_smnp(web_handle_t *h, mg_conn_t *c)
+{
+	paras_data_t* para=paras_get();
+	pkt_hdr_t *hdr=NULL;
+	hdr = (pkt_hdr_t*)h->buf;
+	
+	hdr->magic = PKT_MAGIC;
+  hdr->addr  = 0;
+  hdr->type  = PKT_TYPE_PARAS;
+  hdr->nack  = 0;
+	hdr->subtype = SUB_TYPE_PARAS_SNMP;	
+	hdr->flag = 0;
+	hdr->dlen = 0;
+	
+	snmp_data_t data = {0};
+	
+	
+	data = para->snmp;
+	hdr->dlen  = sizeof(snmp_data_t);
+	memcpy(hdr->data,&data,hdr->dlen);
+	uint32_t xlen = sizeof(pkt_hdr_t) + sizeof(snmp_data_t);
+	ws_send(c, h->buf, xlen, 1);
+}
+
+static void send_modbus(web_handle_t *h, mg_conn_t *c)
+{
+	paras_data_t* para=paras_get();
+	pkt_hdr_t *hdr=NULL;
+	hdr = (pkt_hdr_t*)h->buf;
+	
+	hdr->magic = PKT_MAGIC;
+  hdr->addr  = 0;
+  hdr->type  = PKT_TYPE_PARAS;
+  hdr->nack  = 0;
+	hdr->subtype = SUB_TYPE_PARAS_MODBUS;	
+	hdr->flag = 0;
+	hdr->dlen = 0;
+	
+	modbus_data_t data = {0};
+	
+	data = para->cas;
+	hdr->dlen  = sizeof(modbus_data_t);
+	memcpy(hdr->data,&data,hdr->dlen);
+	uint32_t xlen = sizeof(pkt_hdr_t) + sizeof(modbus_data_t);
+	ws_send(c, h->buf, xlen, 1);
+}
+
+
 static void sendntp(web_handle_t *h, mg_conn_t *c)
 {
 	time_t t=time(NULL);
@@ -288,11 +382,13 @@ static void sendntp(web_handle_t *h, mg_conn_t *c)
 	snprintf(_time, 40, "%04d%:%02d:%02d", tm->tm_hour, tm->tm_min, tm->tm_sec);
 	paras_data_t* para=paras_get();
 	pkt_hdr_t *hdr=NULL;
+	hdr = (pkt_hdr_t*)h->buf;
+	
 	hdr->magic = PKT_MAGIC;
   hdr->addr  = 0;
   hdr->type  = PKT_TYPE_PARAS;
   hdr->nack  = 0;
-	hdr->subtype = SUB_TYPE_PARAS_SYS;
+	hdr->subtype = SUB_TYPE_PARAS_NTP;
 	
 	system_data_t data = {0};
 	data.lang = para->sys.lang;
@@ -385,16 +481,22 @@ static int ws_handle(web_handle_t *h, pkt_hdr_t *hdr, mg_conn_t *c)
                 
                 case SUB_TYPE_PARAS_MODBUS:
                 {
+									if(hdr->dlen>0) {
                     modbus_data_t *p=(modbus_data_t*)hdr->data;
 //                    cascade_reinit(p->mode, p->addr, p->baud);
-//                    para->cas = *p;
+                    para->cas = *p;
 //                    paras_save();
 									cascade_reset(p->mode,p->addr);
+									}else
+									{
+										send_modbus(h, c);
+									}
                 }
                 break;
                 
                 case SUB_TYPE_PARAS_MISC:
                 {
+									if(hdr->dlen>0) {
                     misc_data_t *p=(misc_data_t*)hdr->data;
                     
                     if(p->rotate!=para->misc.rotate) {
@@ -403,28 +505,47 @@ static int ws_handle(web_handle_t *h, pkt_hdr_t *hdr, mg_conn_t *c)
                     
                     para->misc = *p;
                     paras_save();
+									}else
+									{
+										send_misc(h, c);
+									}
                 }
                 break;
                 
                 case SUB_TYPE_PARAS_PROD:
                 {
-                    product_data_t *p=(product_data_t*)hdr->data;
+									if(hdr->dlen>0) {
+                    //product_data_t *p=(product_data_t*)hdr->data;
+									}else
+									{
+										
+									}
                 }
                 break;
                 
                 case SUB_TYPE_PARAS_SERV:
                 {
-                    service_data_t *p=(service_data_t*)hdr->data;
+									if(hdr->dlen>0) {
+									}else
+									{
+									}
+                  //  service_data_t *p=(service_data_t*)hdr->data;
                 }
                 break;
                 
                 case SUB_TYPE_PARAS_NETWORK:
                 {
+									if(hdr->dlen>0) {
+										
                     network_data_t *p=(network_data_t*)hdr->data;
 										paras_data_t *para = paras_get();
 										net_ipaddr_set(p);
 										para->netwk = *p;
 										paras_save();
+									}else
+									{
+										send_net(h, c);
+									}
 //                    extern void set_dns(uint8_t dns_num, char* dns_server);
 //                    extern void set_if(char* netif_name, char* ip_addr, char* gw_addr, char* nm_addr);
 //                    set_if("e0", p->ipaddr, p->gateway, p->mask);
@@ -435,12 +556,20 @@ static int ws_handle(web_handle_t *h, pkt_hdr_t *hdr, mg_conn_t *c)
                 break;
 								case SUB_TYPE_PARAS_SNMP:
 								{
-									snmp_data_t *p=(snmp_data_t*)hdr->data;
 									
-									paras_data_t *para = paras_get();
-									para->snmp = *p;
-									snmp_strap_set();
-									paras_save();
+									if(hdr->dlen>0) {
+										snmp_data_t *p=(snmp_data_t*)hdr->data;
+										
+										paras_data_t *para = paras_get();
+										strcpy(para->snmp.publics,p->publics);
+										strcpy(para->snmp.nms_ip,p->nms_ip);
+										//para->snmp = *p;
+										snmp_strap_set();
+										paras_save();
+									}else
+									{
+										send_smnp(h, c);
+									}
 									
 								}
 								break;
@@ -664,7 +793,7 @@ static void web_thread(void *arg)
     thread_handle_t *th=(thread_handle_t*)arg;
     web_handle_t *h=(web_handle_t*)th->attr->arg;
 
-    strcpy(h->rootDir, "/web");
+    strcpy(h->rootDir, "/sd");
 
 #ifdef USE_MG716
     mg_log_set(MG_LL_VERBOSE);
@@ -686,7 +815,7 @@ static void web_thread(void *arg)
     mg_mgr_init(&h->mgr, NULL);
     nc = mg_bind(&h->mgr, "80", http_fn);
 
-    strcpy(h->rootDir, "/web");
+    strcpy(h->rootDir, "/sd");
     
     mg_set_protocol_http_websocket(nc);
     h->opts.document_root = h->rootDir;

+ 4 - 3
f427/rt-thread/components/drivers/sdio/sd.c

@@ -499,9 +499,10 @@ rt_int32_t mmcsd_get_scr(struct rt_mmcsd_card *card, rt_uint32_t *scr)
     mmcsd_set_data_timeout(&data, card);
 
     mmcsd_send_request(card->host, &req);
-
-    if (cmd.err)
-        return cmd.err;
+		
+		
+//    if (cmd.err)
+//        return cmd.err;
     if (data.err)
         return data.err;