diff --git a/keilp/cc_as_stc02_ps5ws.uvprojx b/keilp/cc_as_stc02_ps5ws.uvprojx
index 3d0d2ce..6782846 100644
--- a/keilp/cc_as_stc02_ps5ws.uvprojx
+++ b/keilp/cc_as_stc02_ps5ws.uvprojx
@@ -10,7 +10,6 @@
STC8F2K16S2
0x0
MCS-51
- 0
AT80C31X2
@@ -177,14 +176,12 @@
0
0
0
- 0
0
0
0
0
0
0
- 0
0
0
0
@@ -254,16 +251,6 @@
0x0
0x0
-
- 0
- 0x0
- 0x0
-
-
- 0
- 0x0
- 0x0
-
diff --git a/si4/ps5ws.si4project/soft_ps5ws.sip_sym b/si4/ps5ws.si4project/soft_ps5ws.sip_sym
index 3e50c3d..f5b3cb8 100644
Binary files a/si4/ps5ws.si4project/soft_ps5ws.sip_sym and b/si4/ps5ws.si4project/soft_ps5ws.sip_sym differ
diff --git a/si4/ps5ws.si4project/soft_ps5ws.sip_xab b/si4/ps5ws.si4project/soft_ps5ws.sip_xab
index ebda7a1..36c17d9 100644
Binary files a/si4/ps5ws.si4project/soft_ps5ws.sip_xab and b/si4/ps5ws.si4project/soft_ps5ws.sip_xab differ
diff --git a/si4/ps5ws.si4project/soft_ps5ws.sip_xad b/si4/ps5ws.si4project/soft_ps5ws.sip_xad
index 426cc27..1484248 100644
Binary files a/si4/ps5ws.si4project/soft_ps5ws.sip_xad and b/si4/ps5ws.si4project/soft_ps5ws.sip_xad differ
diff --git a/si4/ps5ws.si4project/soft_ps5ws.sip_xc b/si4/ps5ws.si4project/soft_ps5ws.sip_xc
index 2f44ca7..fc42b93 100644
Binary files a/si4/ps5ws.si4project/soft_ps5ws.sip_xc and b/si4/ps5ws.si4project/soft_ps5ws.sip_xc differ
diff --git a/si4/ps5ws.si4project/soft_ps5ws.sip_xf b/si4/ps5ws.si4project/soft_ps5ws.sip_xf
index 57ddca8..5ac518c 100644
Binary files a/si4/ps5ws.si4project/soft_ps5ws.sip_xf and b/si4/ps5ws.si4project/soft_ps5ws.sip_xf differ
diff --git a/si4/ps5ws.si4project/soft_ps5ws.sip_xm b/si4/ps5ws.si4project/soft_ps5ws.sip_xm
index c299849..8951bf7 100644
Binary files a/si4/ps5ws.si4project/soft_ps5ws.sip_xm and b/si4/ps5ws.si4project/soft_ps5ws.sip_xm differ
diff --git a/si4/ps5ws.si4project/soft_ps5ws.sip_xr b/si4/ps5ws.si4project/soft_ps5ws.sip_xr
index b2ffd07..3db5d74 100644
Binary files a/si4/ps5ws.si4project/soft_ps5ws.sip_xr and b/si4/ps5ws.si4project/soft_ps5ws.sip_xr differ
diff --git a/si4/ps5ws.si4project/soft_ps5ws.sip_xsb b/si4/ps5ws.si4project/soft_ps5ws.sip_xsb
index b97f01b..c1ff671 100644
Binary files a/si4/ps5ws.si4project/soft_ps5ws.sip_xsb and b/si4/ps5ws.si4project/soft_ps5ws.sip_xsb differ
diff --git a/si4/ps5ws.si4project/soft_ps5ws.sip_xsd b/si4/ps5ws.si4project/soft_ps5ws.sip_xsd
index bd99620..db7bf5f 100644
Binary files a/si4/ps5ws.si4project/soft_ps5ws.sip_xsd and b/si4/ps5ws.si4project/soft_ps5ws.sip_xsd differ
diff --git a/si4/ps5ws.si4project/soft_ps5ws.siproj b/si4/ps5ws.si4project/soft_ps5ws.siproj
index 077d503..c96ede9 100644
Binary files a/si4/ps5ws.si4project/soft_ps5ws.siproj and b/si4/ps5ws.si4project/soft_ps5ws.siproj differ
diff --git a/source/app/app_config.c b/source/app/app_config.c
index b906984..e43bacb 100644
--- a/source/app/app_config.c
+++ b/source/app/app_config.c
@@ -3,6 +3,7 @@
#include "../bsp/chipid.h"
#include "../msp/eeprom.h"
#include "../clib/clib.h"
+
GlobalParam G;
GlobalRegister R;
@@ -84,17 +85,45 @@ void L3_iap_2_reg(void)
void L3_reg_reset(void)
{
- R.p.adc_ch_status = ADC_status_ch2_Ready | ADC_status_ch3_Ready | ADC_status_ch4_Ready; //修改采集通道
+ U8 i = 0;
+ //R.p.adc_ch_status = ADC_status_ch2_Ready | ADC_status_ch3_Ready | ADC_status_ch4_Ready; //修改采集通道
R.p.slaver_id = D_UART0_485_SLAVER_ID;
- R.p.weight_max = 500; //500kg
- R.p.lmd = 2; //2mv/v
- R.p.adc_blur_mid = 1;
- R.p.adc_blur_avg = 6;
- R.p.adc_blur_shift[0] = 0;
- R.p.adc_blur_shift[1] = 2;
- R.p.adc_blur_shift[2] = 4;
- R.p.adc_blur_threshold[0] = 1600; //g
- R.p.adc_blur_threshold[1] = 700; //g
+ //R.p.weight_max = 500; //500kg
+ //R.p.lmd = 2; //2mv/v
+ //R.p.adc_blur_mid = 1;
+ //R.p.adc_blur_avg = 6;
+ //R.p.adc_blur_shift[0] = 0;
+ //R.p.adc_blur_shift[1] = 2;
+ //R.p.adc_blur_shift[2] = 4;
+ //R.p.adc_blur_threshold[0] = 1600; //g
+ //R.p.adc_blur_threshold[1] = 700; //g
+ R.pen_sta = 0;
+ R.pen_net_sta = 0;
+ R.pen_ele_sta = 0;
+ R.question_sta = 0;
+ R.spee_save = 0;
+ R.oid3_order = 0;
+ R.pack_order = 0;
+ R.frame_order = 0;
+ R.x_axis1 = 0;
+ R.y_axis1 = 0;
+ R.time1 = 0;
+ R.x_axis2 = 0;
+ R.y_axis2 = 0;
+ R.time2 = 0;
+
+ for(i=0;islaver发送逻辑控制
+ //L3_task_tcp_control_handle(&ts_tcp_control);
}
}
//end main
diff --git a/source/app/task_adc.h b/source/app/task_adc.h
index 327b972..18031df 100644
--- a/source/app/task_adc.h
+++ b/source/app/task_adc.h
@@ -97,22 +97,6 @@ typedef struct _s_task_adc_blur_show
}S_TASK_ADC_BLUR_SHOW;
-extern S_TASK_ADC_CHANNEL_SAMPLE ts_adc_channel_samples[D_ADC_CHANNEL_NUM];
-//extern S_TASK_ADC_BLUR_MID ts_adc_blur_mid[D_ADC_CHANNEL_NUM];
-extern S_TASK_ADC_BLUR_AVG ts_adc_blur_avg[D_ADC_CHANNEL_NUM];
-extern S_TASK_ADC_BLUR_SHIFT ts_adc_blur_shift[D_ADC_CHANNEL_NUM];
-extern S_TASK_ADC_BLUR_OUT ts_adc_blur_out[D_ADC_CHANNEL_NUM];
-extern S_TASK_ADC_BLUR_SHOW ts_adc_blur_show;
-
-
-extern void L3_task_adc_init(U8 ch);
-extern void L3_task_show_init(void);
-extern void L3_task_adc_handler(U8 ch);
-extern void L3_task_adc_init_handler(void);
-extern void L3_task_adc_channel_switch_handler(void);
-extern void L3_task_adc_filter_show(S_TASK_ADC_BLUR_SHOW *s);
-
-
#endif // #ifndef _APP_TASK_ADC_H
diff --git a/source/app/task_modbus.c b/source/app/task_modbus.c
index da89416..813fa9d 100644
--- a/source/app/task_modbus.c
+++ b/source/app/task_modbus.c
@@ -1,7 +1,7 @@
#include "task_modbus.h"
#include "../msp/uart0.h"
-#include "../msp/uart2.h"
-#include "../tpc/modbus.h"
+//#include "../msp/uart2.h"
+//#include "../tpc/modbus.h"
#include "../app/app_config.h"
U8 L3_pack_modbus_03(TS_PH4_modbus *pmodbus ,U8 slaverId, U16 reg, U16 num)
@@ -189,7 +189,8 @@ void L3_task_modbus_handler(TP_Handler_X *ph4)
{
U16 acklen = L3_modbus_slaver_ack(ts_modbus,&s_uart0_ack);
L0_uart0_sendArray((U8*)&s_uart0_ack, acklen);
- }
+ }
+ #if 0
else
{
//LED0 ^= 1;
@@ -201,7 +202,8 @@ void L3_task_modbus_handler(TP_Handler_X *ph4)
ph4->yes=0;
L0_uart2_sendArray(s_uart0_rec.buf, s_uart0_rec.num);
}
-
+ #endif
+}
}
void L3_task_modbus_handler2(TP_Handler_X *ph4)
{
diff --git a/source/app/task_register.c b/source/app/task_register.c
index 799f3ec..f715e06 100644
--- a/source/app/task_register.c
+++ b/source/app/task_register.c
@@ -14,6 +14,7 @@
#include "../app/app_config.h"
#include "../bsp/bsp_config.h"
#include "../msp/uart0.h"
+#include "task_w600.h"
//=============================================
@@ -26,7 +27,7 @@ void L3_task_reglisten_init(void)
}
//配置模式任务
-#define D_task_WEIGHT_COUNT 0x50
+#define D_task_WEIGHT_COUNT 0x50
#define D_task_IAP 0x51
void L3_task_reglisten_handle(S_TASK_REGVAL_LISTEN *s)
{
@@ -35,14 +36,16 @@ void L3_task_reglisten_handle(S_TASK_REGVAL_LISTEN *s)
L2_task_go(D_task_WEIGHT_COUNT);
TTSS_Task_step(D_task_WEIGHT_COUNT)
- if(R.zero != 0)
+ if(R.w600_mode == 1)
{
- R.total_zweight = R.rough_weight; //皮重 = 毛重
- R.total_weight = (R.rough_weight > R.total_zweight) ? (R.rough_weight - R.total_zweight) : (0);//净重
- R.zero = 0;
+ L3_gm35_send_str("+++");
+ Lc_delay_ms(1000);
+ //s_task_gm35_flow.mode=W600_AP;
+ L3_task_gm35_flow_init(W600_AP);
+ R.w600_mode = 0;
}
- L2_task_go(D_task_IAP); //延时100ms
+ L2_task_go(D_task_IAP); //延时100ms
TTSS_Task_step(D_task_IAP)
if(R.status_eep_save != 0)
diff --git a/source/app/task_w600.c b/source/app/task_w600.c
index 91884e0..bae8706 100644
--- a/source/app/task_w600.c
+++ b/source/app/task_w600.c
@@ -17,6 +17,10 @@
#include "../msp/uart0.h"
struct _s_task_gm35_gprs_ s_task_gm35_flow;
+TS_tcp_control ts_tcp_control;
+TS_tcp ts_tcp;
+
+
#define LEN_GPRS_TCP_PKG 18
@@ -62,37 +66,134 @@ void L3_gm35_rcv_data(U8* buf,U8 num)
}
}
+U8 wifi_ins[64];
+char *GET_WIFI_INS()
+{
+ //AT+CWJAP_DEF=\"ccsens\",\"ccsens123\"\r\n"
+ Lc_strcpy(wifi_ins,"AT+CWJAP_DEF=\"");
+ Lc_strcpy(wifi_ins+Lc_strlen(wifi_ins),G.st_sid);
+ Lc_strcpy(wifi_ins+Lc_strlen(wifi_ins),"\",\"");
+ Lc_strcpy(wifi_ins+Lc_strlen(wifi_ins),G.st_pwd);
+ Lc_strcpy(wifi_ins+Lc_strlen(wifi_ins),"\"\r\n");
+ return wifi_ins;
+}
+
+
-void L3_uart2_exp_protocol(TS_Handle_0d0a *p)
+void L3_uart2_exp_protocol(struct _s_PC1_0D0A_ *p)
{
if (1 == p->ok )
{
U8 *pPara = p->buf + 1;
s_task_gm35_flow.gprs_last_recv_stmp = s_nos_tick.t_1s;
+ //通用判定
if(Lc_strStartsWith(pPara,"OK"))
{
s_task_gm35_flow.ins_ok = 1;
}
- if(Lc_strStartsWith(pPara,"WIFI GOT IP"))
+ else if(Lc_strStartsWith(pPara,"ERROR"))
{
- s_task_gm35_flow.wifi_ok = 1;
- }
- if(Lc_strStartsWith(pPara,"CONNECT"))
+ s_task_gm35_flow.st_error= 1;
+ }
+ //Station模式判定
+ if(s_task_gm35_flow.mode == W600_ST)
+ {
+ if(Lc_strStartsWith(pPara,"WIFI GOT IP"))
+ {
+ s_task_gm35_flow.st_wifi_ok = 1;
+ }
+ else if(Lc_strStartsWith(pPara,"ALREADY CONNECTED"))
+ {
+ s_task_gm35_flow.st_cip_ok = 1;
+ }
+ }
+ //AP模式判定
+ else if(s_task_gm35_flow.mode == W600_AP)
{
- s_task_gm35_flow.wifi_ok = 1;
+ if(Lc_strStartsWith(pPara,"+IPD,0"))
+ {
+ //解析协议,success
+ //1将id,pwd放入寄存器2.ok=1
+ //失败不处理不设置标志位
+ //buf: [20]+IPD,0,5:#ccsens:ccsens123$ 后面没\0
+ //pPara: +IPD,0,5:#ccsens:ccsens123$
+
+ int j = 0 , len = p->buf[0];
+ p->buf[len+1] = 0;//在+IPD,0,5:#ccsens:ccsens123$后加0
+ for(j=0;jok = 0;
}
}
-
//------------------------------------------------------ gm35 tasks --------------------------------
+
+void L3_task_tcp_init(void)
+{
+ L1_task_init(&ts_tcp.task);
+ L3_task_s_go(ts_tcp,D_task_init);
+ ts_tcp.slaverIndex = 0;
+ ts_tcp.pkglen = 0;
+ ts_tcp.retryTimes = 0;
+ ts_tcp.ackFlag = 0;
+}
+
+void L3_task_tcp_control_init(void)
+{
+ L1_task_init(&ts_tcp_control.task);
+ L3_task_s_go(ts_tcp_control,D_task_init);
+ ts_tcp_control.conn_ok_pool = 0;
+ ts_tcp_control.tcp_send_stmp = 0;
+}
+
void L3_task_gm35_flow_init(U8 mode)
{
L1_task_init(&s_task_gm35_flow.task);
L3_task_s_go(s_task_gm35_flow,D_task_init);
s_task_gm35_flow.mode = mode;
+ s_task_gm35_flow.send = 0;
#if 0
g_at_send_status.send_lock = 0;
@@ -118,25 +219,28 @@ void L3_task_gm35_flow_init(U8 mode)
//------------------------ GM35 Flow Handle -----------------------------------
+#define TTSS_TASK_GM35_MODE 0x01
-#define TTSS_TASK_GM35_FLOW_ATEQV 0x01
-#define TTSS_TASK_GM35_FLOW_ATEQV_WAIT 0x02
+#define TTSS_TASK_GM35_FLOW_ATEQV 0x02
#define TTSS_TASK_GM35_FLOW_ST 0x03
-#define TTSS_TASK_GM35_FLOW_ST_WAIT 0x04
-#define TTSS_TASK_GM35_FLOW_ST_WIFI 0x05
-#define TTSS_TASK_GM35_FLOW_ST_WIFI_WAIT 0x06
-#define TTSS_TASK_GM35_FLOW_ST_CIPMUX0 0x07
-#define TTSS_TASK_GM35_FLOW_ST_CIPMUX0_WAIT 0x08
-#define TTSS_TASK_GM35_FLOW_ST_TCP 0x09
-#define TTSS_TASK_GM35_FLOW_ST_TCP_WAIT 0x0A
-#define TTSS_TASK_GM35_FLOW_ST_CIPMODE1 0x0B
-#define TTSS_TASK_GM35_FLOW_ST_CIPMODE1_WAIT 0x0C
-#define TTSS_TASK_GM35_FLOW_ST_CIPSEND 0x0D
-#define TTSS_TASK_GM35_FLOW_ST_CIPSEND_WAIT 0x0E
-#define TTSS_TASK_GM35_FLOW_ST_DATA 0x0F
+#define TTSS_TASK_GM35_FLOW_ST_WIFI 0x04
+#define TTSS_TASK_GM35_FLOW_ST_CIPMUX0 0x05
+#define TTSS_TASK_GM35_FLOW_ST_TCP 0x06
+#define TTSS_TASK_GM35_FLOW_ST_CIPMODE1 0x07
+#define TTSS_TASK_GM35_FLOW_ST_CIPSEND 0x08
+#define TTSS_TASK_GM35_FLOW_ST_DATA 0x09
+#define TTSS_TASK_GM35_FLOW_ST_CIPMODE0 0x10
#define TTSS_TASK_GM35_FLOW_AP 0x20
-#define TTSS_TASK_GM35_FLOW_AP_WAIT 0x21
+#define TTSS_TASK_GM35_FLOW_AP_WIFI 0x21
+#define TTSS_TASK_GM35_FLOW_AP_CIPMUX1 0x22
+#define TTSS_TASK_GM35_FLOW_AP_SERVER 0x23
+#define TTSS_TASK_GM35_FLOW_TCP_TIME 0x24
+#define TTSS_TASK_GM35_FLOW_AP_DATA 0x25
+#define TTSS_TASK_GM35_FLOW_AP_TCP_CONN_WAIT 0x26
+#define TTSS_TASK_GM35_FLOW_AP_WIFI_DATA_STA_WAIT 0x27
+#define TTSS_TASK_MODE_TRAN 0x28
+#define TTSS_TASK_MODE_SERVER_CLOSE 0x29
#define INS_TIMEOUT 5
@@ -144,138 +248,405 @@ void L3_task_gm35_flow_init(U8 mode)
#define GM35_SEND_HEART_INTERVAL 60
#define GM35_SEND_CIPSTATUS_INTERVAL 5
+
void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
{
TTSS_Task_init()
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ATEQV,D_Tdelay_10s);//上电等待10s
-
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ATEQV)
- L3_gm35_send_str(AT_INS_ATE0);
- s->ins_ok = 0;
- s->ins_stmp = s_nos_tick.t_1s;
- L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ATEQV_WAIT,D_Tdelay_300ms);
+ if(s->send == 0)
+ {//发送
+ L3_gm35_send_str(AT_INS_ATE0);
+ s->ins_ok = 0;
+ s->ins_stmp = s_nos_tick.t_1s;
+ s->send = 1;
+ }
+ else if(s->ins_ok == 1) //等待
+ {
+ s->send = 0;
+ L2_task_go_Tdelay(s->mode == W600_ST ? TTSS_TASK_GM35_FLOW_ST
+ : TTSS_TASK_GM35_FLOW_ST_CIPMODE0,D_Tdelay_3s);
+ }
- TTSS_Task_step(TTSS_TASK_GM35_FLOW_ATEQV_WAIT)
- if(1 == s->ins_ok)
- {
- if(s->mode == W600_ST)
- {
- L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST,0);
- }
- else if(s->mode == W600_AP)
- {
- L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP,0);
- }
+ else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
+ {//超时重发
+ s->send = 0;
}
+ TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST)
+ if(s->send == 0)
+ {//发送
+ L3_gm35_send_str(AT_INS_ST);
+ s->ins_ok = 0;
+ s->ins_stmp = s_nos_tick.t_1s;
+ s->send = 1;
+ }
+ else if(s->ins_ok == 1) //等待
+ {
+ s->send = 0;
+ L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_WIFI,D_Tdelay_3s);
+ }
+
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
- {
- L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ATEQV,0);
+ {//超时重发
+ s->send = 0;
+ }
+ TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_WIFI)
+ if(s->send == 0)
+ {//发送
+ L3_gm35_send_str(GET_WIFI_INS());
+ s->ins_ok = 0;
+ s->st_wifi_ok = 0;
+ s->ins_stmp = s_nos_tick.t_1s;
+ s->send = 1;
+ }
+ else if(1 == s->ins_ok && 1 == s->st_wifi_ok) //等待
+ {
+ s->send = 0;
+ L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPMUX0,D_Tdelay_3s);
}
- TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST)
- L3_gm35_send_str(AT_INS_ST);
- s->ins_ok = 0;
- s->ins_stmp = s_nos_tick.t_1s;
- L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_WAIT,D_Tdelay_300ms);
-
- TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_WAIT)
- if(1 == s->ins_ok)
- {
- L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_WIFI,0);
+ else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
+ {//超时重发
+ s->send = 0;
+ }
+ TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_CIPMUX0)
+ if(s->send == 0)
+ {//发送
+ L3_gm35_send_str(AT_INS_ST_CIPMUX0);
+ s->ins_ok = 0;
+ s->st_wifi_ok = 0;
+ s->ins_stmp = s_nos_tick.t_1s;
+ s->send = 1;
+ }
+ else if(1 == s->ins_ok) //等待
+ {
+ s->send = 0;
+ L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_TCP,D_Tdelay_3s);
}
+
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
+ {//超时重发
+ s->send = 0;
+ }
+ TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_TCP)
+ if(s->send == 0)
+ {//发送
+ L3_gm35_send_str(AT_INS_ST_TCP);
+ s->ins_ok = 0;
+ s->st_cip_ok = 0;
+ s->ins_stmp = s_nos_tick.t_1s;
+ s->send = 1;
+ }
+ else if(1 == s->ins_ok || 1 == s->st_cip_ok) //等待
+ {
+ s->send = 0;
+ L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPMODE1,D_Tdelay_3s);
+ }
+
+ else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
+ {//超时重发
+ s->send = 0;
+ }
+ TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_CIPMODE1)
+ if(s->send == 0)
+ {//发送
+ L3_gm35_send_str(AT_INS_ST_CIPMODE1);
+ s->ins_ok = 0;
+ s->ins_stmp = s_nos_tick.t_1s;
+ s->send = 1;
+ }
+ else if(1 == s->ins_ok) //等待
+ {
+ s->send = 0;
+ L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPSEND,D_Tdelay_3s);
+ }
+
+ else if(1 == s->st_error)
{
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST,0);
}
-
- TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_WIFI)
- L3_gm35_send_str(AT_INS_ST_WIFI);
+ else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
+ {//超时重发
+ s->send = 0;
+ }
+ TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_CIPSEND)
+ L3_gm35_send_str(AT_INS_ST_CIPSEND);
s->ins_ok = 0;
- s->wifi_ok = 0;
+ s->conn_ok = 0;
s->ins_stmp = s_nos_tick.t_1s;
- L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_WIFI_WAIT,D_Tdelay_300ms);
-
- TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_WIFI_WAIT)
- if(1 == s->ins_ok && 1 == s->wifi_ok)
- {
- L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPMUX0,0);
+ L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_DATA,D_Tdelay_300ms);
+ TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_DATA)
+ //L0_uart2_sendstr("abcdefg");
+ s->conn_ok = 1;
+ L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_DATA,D_Tdelay_3s);
+
+
+
+
+
+ TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_CIPMODE0)
+ if(s->send == 0)
+ {//发送
+ L3_gm35_send_str(AT_INS_ST_CIPMODE0);
+ s->ins_ok = 0;
+ s->ins_stmp = s_nos_tick.t_1s;
+ s->send = 1;
}
+ else if(1 == s->ins_ok) //等待
+ {
+ s->send = 0;
+ L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP,D_Tdelay_3s);
+ }
+
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
- {
- L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_WIFI,0);
+ {//超时重发
+ s->send = 0;
+ }
+ TTSS_Task_step(TTSS_TASK_GM35_FLOW_AP)
+ if(s->send == 0)
+ {//发送
+ L3_gm35_send_str(AT_INS_AP);
+ s->ins_ok = 0;
+ s->ins_stmp = s_nos_tick.t_1s;
+ s->send = 1;
+ }
+ else if(1 == s->ins_ok) //等待
+ {
+ s->send = 0;
+ L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP_WIFI,D_Tdelay_3s);
}
- TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_CIPMUX0)
- L3_gm35_send_str(AT_INS_ST_CIPMUX0);
- s->ins_ok = 0;
- s->ins_stmp = s_nos_tick.t_1s;
- L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPMUX0_WAIT,D_Tdelay_300ms);
-
- TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_CIPMUX0_WAIT)
- if(1 == s->ins_ok)
- {
- L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_TCP,0);
+ else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
+ {//超时重发
+ s->send = 0;
+ }
+ TTSS_Task_step(TTSS_TASK_GM35_FLOW_AP_WIFI)
+ if(s->send == 0)
+ {//发送
+ L3_gm35_send_str(AT_INS_AP_WIFI);
+ s->ins_ok = 0;
+ s->ins_stmp = s_nos_tick.t_1s;
+ s->send = 1;
+ }
+ else if(1 == s->ins_ok) //等待
+ {
+ s->send = 0;
+ L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP_CIPMUX1,D_Tdelay_3s);
}
+
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
- {
- L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPMUX0,0);
+ {//超时重发
+ s->send = 0;
+ }
+ TTSS_Task_step(TTSS_TASK_GM35_FLOW_AP_CIPMUX1)
+ if(s->send == 0)
+ {//发送
+ L3_gm35_send_str(AT_INS_AP_CIPMUX1);
+ s->ins_ok = 0;
+ s->ins_stmp = s_nos_tick.t_1s;
+ s->send = 1;
+ }
+ else if(1 == s->ins_ok) //等待
+ {
+ s->send = 0;
+ L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP_SERVER,D_Tdelay_3s);
}
- TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_TCP)
- L3_gm35_send_str(AT_INS_ST_TCP);
- s->ins_ok = 0;
- s->ins_stmp = s_nos_tick.t_1s;
- L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_TCP_WAIT,D_Tdelay_5s);
-
- TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_TCP_WAIT)
- if(1 == s->ins_ok)
- {
- L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPMODE1,0);
+ else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
+ {//超时重发
+ s->send = 0;
+ }
+ TTSS_Task_step(TTSS_TASK_GM35_FLOW_AP_SERVER)
+ if(s->send == 0)
+ {//发送
+ L3_gm35_send_str(AT_INS_AP_SERVER);
+ s->ins_ok = 0;
+ s->ins_stmp = s_nos_tick.t_1s;
+ s->send = 1;
+ }
+ else if(1 == s->ins_ok) //等待
+ {
+ s->send = 0;
+ L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_TCP_TIME,D_Tdelay_3s);
}
+
+ else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
+ {//超时重发
+ s->send = 0;
+ }
+ TTSS_Task_step(TTSS_TASK_GM35_FLOW_TCP_TIME)
+ if(s->send == 0)
+ {//发送
+ L3_gm35_send_str(AT_INS_AP_TCP_TIME);
+ s->ins_ok = 0;
+ s->ins_stmp = s_nos_tick.t_1s;
+ s->send = 1;
+ }
+ else if(1 == s->ins_ok) //等待
+ {
+ s->send = 0;
+ s->ap_tcp_ok = 0;
+ L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP_TCP_CONN_WAIT,D_Tdelay_3s);
+ }
+
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
+ {//超时重发
+ s->send = 0;
+ }
+ TTSS_Task_step(TTSS_TASK_GM35_FLOW_AP_TCP_CONN_WAIT)
+ if(1 == s->ap_tcp_ok)
{
- L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_TCP,0);
+ s->ap_conn_ok = 0;
+ s->ap_tcp_ok = 0;
+ s->ap_rec_ok = 0;
+ s->ins_stmp = s_nos_tick.t_1s;
+ L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP_WIFI_DATA_STA_WAIT,0);
+ }
+ TTSS_Task_step(TTSS_TASK_GM35_FLOW_AP_WIFI_DATA_STA_WAIT)
+ if(1 == s->ap_rec_ok)//收到正确的数据才会ok=1
+ {//ok回复#ok$\r\n
+ L0_uart0_sendstr("ap config ok");
+ L3_gm35_send_str(AT_INS_AP_SEND);//进入发送模式
+ L2_task_go_Tdelay(TTSS_TASK_MODE_TRAN,D_Tdelay_1s);
+ }
+ else if(1 == s->ap_conn_ok)
+ {
+ s->ap_conn_ok = 0;
+ s->ap_tcp_ok = 0;
+ L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP_CIPMUX1,D_Tdelay_300ms);
+ }
+ TTSS_Task_step(TTSS_TASK_MODE_TRAN)
+ if(s->send == 0)
+ {//发送
+ L3_gm35_send_str("#OK$\r\n");
+ s->ins_ok = 0;
+ s->ap_data_ok = 0;
+ s->ins_stmp = s_nos_tick.t_1s;
+ s->send = 1;
+ }
+ else if(1 == s->ap_data_ok) //等待
+ {
+ s->send = 0;
+ s->ap_tcp_ok = 0;
+ L2_task_go_Tdelay(TTSS_TASK_MODE_SERVER_CLOSE,D_Tdelay_3s);
}
- TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_CIPMODE1)
- L3_gm35_send_str(AT_INS_ST_CIPMODE1);
- s->ins_ok = 0;
- s->ins_stmp = s_nos_tick.t_1s;
- L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPMODE1_WAIT,D_Tdelay_300ms);
+ TTSS_Task_step(TTSS_TASK_MODE_SERVER_CLOSE)
+ if(s->send == 0)
+ {//发送
+ L3_gm35_send_str(AT_INS_AP_SERVER_CLOSE);
+ s->ins_ok = 0;
+ s->ins_stmp = s_nos_tick.t_1s;
+ s->send = 1;
+ }
+ else if(1 == s->ins_ok) //等待
+ {
+ s->send = 0;
+ L3_task_gm35_flow_init(W600_ST);
+ }
- TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_CIPMODE1_WAIT)
- if(1 == s->ins_ok)
+ else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
+ {//超时重发
+ s->send = 0;
+ }
+ TTSS_Task_end();
+}
+
+#define D_task_tcp_constructor_modbus_pkg 0x41
+#define D_task_tcp_send_modbus_pkg 0x42
+#define D_task_tcp_wait_modbus_ack 0x43
+#define D_task_tcp_switch_next_slaver 0x44
+
+void L3_task_tcp_handle(TS_tcp *s)
+{
+ TTSS_Task_init();
+ L2_task_go(D_task_tcp_constructor_modbus_pkg);
+
+ TTSS_Task_step(D_task_tcp_constructor_modbus_pkg) //构造包
+ if(R.ccmd_slaver_info[s->slaverIndex].mask > 0)
{
- L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPSEND,0);
+ s->pkglen = L3_pack_ccmodbus(&s->loopPkg,R.ccmd_slaver_info + s->slaverIndex);
+ s->ackFlag = 0;
+ s->retryTimes = 0;
+ L2_task_go(D_task_tcp_send_modbus_pkg);
}
- else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
+ else
{
- L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPMODE1,0);
+ L2_task_go(D_task_tcp_switch_next_slaver);
}
- TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_CIPSEND)
- L3_gm35_send_str(AT_INS_ST_CIPSEND);
- s->ins_ok = 0;
- s->ins_stmp = s_nos_tick.t_1s;
- L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_DATA,D_Tdelay_300ms);
+ TTSS_Task_step(D_task_tcp_send_modbus_pkg) //发送包
+ L3_gm35_send_data((U8*)&s->loopPkg,s->pkglen);
+ s->sendStamp = s_nos_tick.t_1s;
+ if(R.ccmd_slaver_info[s->slaverIndex].mask == 1)
+ {
+ R.ccmd_slaver_info[s->slaverIndex].mask = 0;
+ }
+ L2_task_go(D_task_tcp_wait_modbus_ack);
+
+ TTSS_Task_step(D_task_tcp_wait_modbus_ack) //等待ack
+ if(s_uart2_tcp_rec.ok)
+ {
+ s_uart2_tcp_rec.ok = 0;
+ s_task_gm35_flow.tcp_last_recv_stmp = s_nos_tick.t_1s;
- TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_DATA)
- L0_uart0_uc('A');
- L0_uart2_sendstr("abcdefg");
- L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_DATA,D_Tdelay_5s);
+ s->pAckPkg = (TS_PH3_ccmodbus*)(s_uart2_tcp_rec.sp);
+ L3_gm35_rcv_data((U8*)s->pAckPkg,s->pAckPkg->num + 3);
+ if(s->pAckPkg->slaver == R.ccmd_slaver_info[s->slaverIndex].slaver)
+ {
+ s->ackFlag = 1;
+
+ }
+ }
+ if(s->ackFlag == 1 || s_nos_tick.t_1s - s->sendStamp >= 5) //收到ack或者超时
+ {
+ L2_task_go(D_task_tcp_switch_next_slaver);
+ }
+
+ TTSS_Task_step(D_task_tcp_switch_next_slaver) //切换下一个
+ if(++ s->slaverIndex >= CCMD_SLAVER_INFO_MAX)
+ {
+ s->slaverIndex = 0;
+ }
+ L2_task_go(D_task_tcp_constructor_modbus_pkg);
+
+ TTSS_Task_end();
+}
+#define D_task_tcp_control_01 0x51
+#define D_task_tcp_control_02 0x52
+void L3_task_tcp_control_handle(TS_tcp_control *s)
+{
+ TTSS_Task_init();
+ L2_task_go(D_task_tcp_control_01);
+
+ TTSS_Task_step(D_task_tcp_control_01)
+ if(s->conn_ok_pool != s_task_gm35_flow.conn_ok)
+ {
+ s->conn_ok_pool = s_task_gm35_flow.conn_ok;
+ }
+ L2_task_go(D_task_tcp_control_02);
+ TTSS_Task_step(D_task_tcp_control_02)
+ if(s_task_gm35_flow.conn_ok)
+ {
+ //3s一次发送数据包
+ if(s_nos_tick.t_1s - ts_tcp_control.tcp_send_stmp >= 3)
+ {
+ R.ccmd_slaver_info[0].mask = 1;
+ ts_tcp_control.tcp_send_stmp = s_nos_tick.t_1s;
+ }
+ }
+ L2_task_go(D_task_tcp_control_01);
+
+ TTSS_Task_end();
+}
+/********************************************************/
- TTSS_Task_step(TTSS_TASK_GM35_FLOW_AP)
- L0_uart0_uc('C');
- L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_WAIT,D_Tdelay_10s);
-
- TTSS_Task_end();
-}
diff --git a/source/app/task_w600.h b/source/app/task_w600.h
index 2982a33..e708a9f 100644
--- a/source/app/task_w600.h
+++ b/source/app/task_w600.h
@@ -1,104 +1,159 @@
-////////////////////////////////////////////////////////////////////////////
-///@copyright Copyright (c) 2018, 传控科技 All rights reserved.
-///-------------------------------------------------------------------------
-/// @file bsp_gc6133.c.h
-/// @brief bsp @ driver config
-///-------------------------------------------------------------------------
-/// @version 1.0
-/// @author CC
-/// @date 20180331
-/// @note cc_AS_stc02
-
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef _app_task_w600_H
-#define _app_task_w600_H
-
-#include "../bsp/bsp_config.h"
-#include "../bsp/w600.h"
-#include "../ctask/task.h"
-#include "../tpc/at0d0a.h"
-
-////<<<<<<<<<<<<<<<<<<< GM35模块 AT操作指令 <<<<<<<<<<<<<<<<<<<<<<<<
-#define AT_INS_ATE0 "ATE1\r\n" //模块查询+关闭回显
-#define AT_INS_ST "AT+CWMODE=1\r\n" //进入station模式
-#define AT_INS_ST_WIFI "AT+CWJAP_DEF=\"ccsens\",\"ccsens123\"\r\n" //网络查询指令
-#define AT_INS_ST_CIPMUX0 "AT+CIPMUX=0\r\n" //GPRS操作指令
-#define AT_INS_ST_TCP "AT+CIPSTART=\"TCP\",\"192.168.0.79\",4001\r\n" //连接服务器
-#define AT_INS_ST_CIPMODE1 "AT+CIPMODE=1\r\n" //发送数据
-#define AT_INS_ST_CIPSEND "AT+CIPSEND\r\n" //主动关闭连接
-#define AT_INS_ST_CIPMODE0 "AT+CIPMODE=0\r\n" //查询连接状态
-
-////<<<<<<<<<<<<<<<<<<<_s_task_test_<<<<<<<<<<<<<<<<<<<<<<<<
-enum _s_w600_mode
-{
- W600_ST,W600_AP
-};
-struct _s_task_gm35_gprs_
-{
- TS_task task;
-
- vU8 ins_ok;
- vU8 wifi_ok;
- vU8 mode;
-
- vU8 send_lock;
- vU8 module_ok;
- vU8 sim_ok;
- vU8 net_ok;
- vU8 gprs_ok;
- vU8 conn_ok;
- vU8 status_query_ok;
- vU32 ins_stmp; //指令时间戳
- vU32 gprs_last_recv_stmp; //上次接收指令时间戳
- vU32 tcp_last_recv_stmp; //上次接收数据时间戳
- vU32 tcp_conn_stmp; //断开连接时间戳
- vU32 tcp_close_stmp; //断开连接时间戳
-
- vU32 heart_stmp; //连接成功后,等待发送时间
- vU32 data_stmp;//数据发送时间记录
-
- vU8 sign_flag; //发送登录数据标志
- vU8 ack_flag;//下行数据ack
- vU8 gm35_reboot_times; //gm35重启次数
-};
-
-#define STATUS_GM35_INIT 0
-#define STATUS_GM35_MODULE_OK 1
-#define STATUS_GM35_SIM_OK 2
-#define STATUS_GM35_NET_OK 3
-#define STATUS_GM35_GPRS_OK 4
-#define STATUS_GM35_TCP_OK 5
-#define BUF_SIZE 5
-#define BUF_MAX 32 //注意缓冲区的长度
-
-extern struct _s_task_gm35_gprs_ s_task_gm35_flow;
-
-extern void L3_task_gm35_flow_init(U8 mode);
-extern void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s);
-
-extern void L3_uart2_exp_protocol(TS_Handle_0d0a *p);
-
-
-#endif
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+////////////////////////////////////////////////////////////////////////////
+///@copyright Copyright (c) 2018, 传控科技 All rights reserved.
+///-------------------------------------------------------------------------
+/// @file bsp_gc6133.c.h
+/// @brief bsp @ driver config
+///-------------------------------------------------------------------------
+/// @version 1.0
+/// @author CC
+/// @date 20180331
+/// @note cc_AS_stc02
+
+//////////////////////////////////////////////////////////////////////////////
+
+#ifndef _app_task_w600_H
+#define _app_task_w600_H
+
+#include "../bsp/bsp_config.h"
+#include "../bsp/w600.h"
+#include "../ctask/task.h"
+#include "../tpc/at0d0a.h"
+#include "../tpc/ccmodbus.h"
+
+////<<<<<<<<<<<<<<<<<<< GM35模块 AT操作指令 <<<<<<<<<<<<<<<<<<<<<<<<
+#define AT_INS_ATE0 "ATE0\r\n" //模块查询+关闭回显
+#define AT_INS_ST "AT+CWMODE=1\r\n" //进入station模式
+//#define AT_INS_ST_WIFI "AT+CWJAP_DEF=\"ccsens\",\"ccsens123\"\r\n" //网络查询指令
+#define AT_INS_ST_CIPMUX0 "AT+CIPMUX=0\r\n" //GPRS操作指令
+#define AT_INS_ST_TCP "AT+CIPSTART=\"TCP\",\"test.tall.wiki\",49000\r\n" //连接服务器
+#define AT_INS_ST_CIPMODE1 "AT+CIPMODE=1\r\n" //发送数据
+#define AT_INS_ST_CIPSEND "AT+CIPSEND\r\n" //主动关闭连接
+#define AT_INS_ST_CIPMODE0 "AT+CIPMODE=0\r\n" //查询连接状态
+
+
+#define AT_INS_AP "AT+CWMODE=2\r\n" //进入AP模式
+#define AT_INS_AP_WIFI "AT+CWSAP=\"ccsens_pen\",\"ccsens123\",10,4,4,0\r\n" //设置AP参数
+#define AT_INS_AP_CIPMUX1 "AT+CIPMUX=1\r\n" //开启多连接
+#define AT_INS_AP_SERVER "AT+CIPSERVER=1,1001\r\n" //建立服务器
+#define AT_INS_AP_TCP_TIME "AT+CIPSTO=300\r\n"
+#define AT_INS_AP_SEND "AT+CIPSENDEX=0,6\r\n" //
+#define AT_INS_AP_SERVER_CLOSE "AT+CIPSERVER=0\r\n" //
关闭服务器
+
+////<<<<<<<<<<<<<<<<<<<_s_task_test_<<<<<<<<<<<<<<<<<<<<<<<<
+enum _s_w600_mode
+{
+ W600_ST,W600_AP
+};
+struct _s_task_gm35_gprs_
+{
+ TS_task task;
+ vU8 send;
+
+ vU8 ins_ok;
+ vU8 st_wifi_ok;
+ vU8 st_conn_ok;
+ vU8 ap_conn_ok;
+ vU8 ap_rec_ok;
+ vU8 st_cip_ok;
+ vU8 ap_tcp_ok;
+ vU8 ap_data_ok;
+ vU8 st_error;
+ vU8 mode;
+
+ vU8 send_lock;
+ vU8 module_ok;
+ vU8 sim_ok;
+ vU8 net_ok;
+ vU8 gprs_ok;
+ vU8 conn_ok;
+ vU8 status_query_ok;
+ vU32 ins_stmp; //指令时间戳
+ vU32 gprs_last_recv_stmp; //上次接收指令时间戳
+ vU32 tcp_last_recv_stmp; //上次接收数据时间戳
+ vU32 tcp_conn_stmp; //断开连接时间戳
+ vU32 tcp_close_stmp; //断开连接时间戳
+
+ vU32 heart_stmp; //连接成功后,等待发送时间
+ vU32 data_stmp;//数据发送时间记录
+
+ vU8 sign_flag; //发送登录数据标志
+ vU8 ack_flag;//下行数据ack
+ vU8 gm35_reboot_times; //gm35重启次数
+};
+extern struct _s_task_gm35_gprs_ s_task_gm35_flow;
+
+#define STATUS_GM35_INIT 0
+#define STATUS_GM35_MODULE_OK 1
+#define STATUS_GM35_SIM_OK 2
+#define STATUS_GM35_NET_OK 3
+#define STATUS_GM35_GPRS_OK 4
+#define STATUS_GM35_TCP_OK 5
+#define BUF_SIZE 5
+#define BUF_MAX 32 //注意缓冲区的长度
+typedef struct
+{
+ TS_task task;
+ TS_PH3_ccmodbus loopPkg;
+ TS_PH3_ccmodbus *pAckPkg;
+ U8 slaverIndex;
+ U8 pkglen;
+ U32 sendStamp;
+ U8 retryTimes;
+ U8 ackFlag;
+ U16 treg;
+}TS_tcp;
+
+
+typedef struct
+{
+ TS_task task;
+ vU8 conn_ok_pool;
+ vU32 tcp_send_stmp;
+}TS_tcp_control;
+
+extern TS_tcp_control ts_tcp_control;
+extern struct _s_task_gm35_gprs_ s_task_gm35_flow;
+extern TS_tcp ts_tcp;
+
+#define U485_TIMEOUT 3 //3 x 100ms = 300ms
+extern TS_tcp ts_tcp;
+extern void L3_task_tcp_control_init();
+
+extern void L3_task_tcp_init();
+
+
+extern struct _s_task_gm35_gprs_ s_task_gm35_flow;
+extern void L3_gm35_send_str(U8 *str);
+
+extern void L3_task_gm35_flow_init(U8 mode);
+extern void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s);
+
+extern void L3_uart2_exp_protocol(struct _s_PC1_0D0A_ *p);
+
+
+extern void L3_task_tcp_handle(TS_tcp *s);
+
+extern void L3_task_tcp_control_handle(TS_tcp_control *s);
+
+#endif
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/source/bsp/bsp_config.c b/source/bsp/bsp_config.c
index 80b1a06..7f3dbdb 100644
--- a/source/bsp/bsp_config.c
+++ b/source/bsp/bsp_config.c
@@ -81,4 +81,3 @@ void L0_board_config(void)
//Lp0_Sys_timer_extern_handler = L1_Sys_timer_extern_handler;
}
-
diff --git a/source/clib/clib.c b/source/clib/clib.c
index 2ddf72f..a5cfafe 100644
--- a/source/clib/clib.c
+++ b/source/clib/clib.c
@@ -29,6 +29,17 @@ U8 Lc_strStartsWith(U8 *s1,U8 *s2)
}
+int Lc_strlen(const char *str)
+{
+ int i;
+ i = 0;
+ while((*str++)!='\0')
+ {
+ i++;
+ }
+ return i;
+}
+
U8* Lc_strcpy(U8* dst,const char* str)
{
U8 *p = dst;
@@ -56,6 +67,7 @@ void Lc_delay_nop(U8 i)
}
+
// D_1ms_delay_para
///22m 300
/// 22M 100ns 5个100ns 20ns
@@ -384,13 +396,13 @@ void Lc_encrypt_id1(U8 *enc_dst, U8 *enc_src, U8 enc_key[], U8 src_len)
}
-int Lc_strlen(char *str)
-{
- char *tmp = str;
- while(*tmp++)
- ;
- return tmp - str - 1;
-}
+//int Lc_strlen(char *str)
+//{
+// char *tmp = str;
+// while(*tmp++)
+// ;
+// return tmp - str - 1;
+//}
int Lc_memset(U8 *buf,U8 c,U16 len)
{
diff --git a/source/clib/clib.h b/source/clib/clib.h
index 6ace03c..70f0109 100644
--- a/source/clib/clib.h
+++ b/source/clib/clib.h
@@ -28,6 +28,7 @@ typedef struct
}TS_up_down_p_;
extern U8 Lc_Hex2Char(U8 CharStr);
+extern int Lc_strlen(const char *str);
extern U8* Lc_strcpy(U8* dst,const char* str);
//extern void Lc_int2str(U32 ui_in,UN_TYPE len,UN_TYPE point,char *d);
// input: 123456d
@@ -66,6 +67,7 @@ extern void Lc_sint2str_3(int i_in,char *d);
extern char *Lc_int2a(vS32 value, char *string, UN_TYPE radix);
extern void Lc_int2D(vS16 value, char *string,char bits);
+extern void *Lc_memcpy(void *dest, const void *src, size_t count);
extern char *strstr(const char *str1, const char *str2);
extern unsigned char catch_protocol (const char d_src[],char d_protocol[]) ;
diff --git a/source/msp/UART2.C b/source/msp/UART2.C
index eb52ca7..4e18b00 100644
--- a/source/msp/UART2.C
+++ b/source/msp/UART2.C
@@ -57,7 +57,6 @@ msp/uartx.c 底层代码 和cpu相关 缓存发送也放在里面
#include "uart2.h"
#include "../app/app_config.h"
#include "../msp/time.h"
-#include "../tpc/at0d0a.h"
//#define _USE_485
@@ -65,6 +64,7 @@ static volatile Ts_uart_send_buf idata ts_uart_send_shop;
TP_Handler_X s_uart2_rec;
TS_PH4_modbus s_uart2_ack;
struct _s_PC1_0D0A_ s_uart2_at;
+TS_Handle_PH3 s_uart2_tcp_rec;
void L0_uart2_init(void)
{
diff --git a/source/msp/UART2.h b/source/msp/UART2.h
index c381e2b..32c69ae 100644
--- a/source/msp/UART2.h
+++ b/source/msp/UART2.h
@@ -54,7 +54,10 @@ msp/uartx.c 底层代码 和cpu相关 缓存发送也放在里面
#define _uart2_H
#include "../bsp/bsp_config.h"
+
+#include "../tpc/at0d0a.h"
#include "../tpc/ccmodbus.h"
+
#include "uart_x.h"
#define uNum2 1
@@ -69,7 +72,7 @@ msp/uartx.c 底层代码 和cpu相关 缓存发送也放在里面
void L0_uart2_buf_init(void);
void L0_uart2_sendArray(U8 * buf, U16 len);
-void uart2_Handdle(void) ;
+void uart2_Handdle(void);
#define L0_uart2_uc(X) L0_uartN_uc(uNum2,X)
#define L0_uart2_us(X) L0_uartN_us(uNum2,X)
#define L0_uart2_ul(X) L0_uartN_ul(uNum2,X)
@@ -80,7 +83,8 @@ void uart2_Handdle(void) ;
#define L0_uart2_sendstr(buf) L0_uartN_sendstr(uNum2,buf)
extern TP_Handler_X s_uart2_rec;
extern TS_PH4_modbus s_uart2_ack;
-extern struct _s_PC1_0D0A_ s_uart2_at;
+extern TS_Handle_0d0a s_uart2_at;
+extern TS_Handle_PH3 s_uart2_tcp_rec;
#endif //#ifndef _uart2_H
diff --git a/source/tpc/at0d0a.c b/source/tpc/at0d0a.c
index ce0d80e..7a5f7a7 100644
--- a/source/tpc/at0d0a.c
+++ b/source/tpc/at0d0a.c
@@ -1,6 +1,7 @@
#include "at0d0a.h"
#include "../clib/clib.h"
+//#include
void L1_s2b_0d0a(struct _s_PC1_0D0A_ *p)// reentrant
{
if(p->head == 0)
diff --git a/source/tpc/ccmodbus.c b/source/tpc/ccmodbus.c
index e3408a9..688b01c 100644
--- a/source/tpc/ccmodbus.c
+++ b/source/tpc/ccmodbus.c
@@ -88,13 +88,67 @@ U8 L3_pack_ccmodbus_10(TS_PH3_ccmodbus *pmodbus ,U8 slaverId, U16 reg, U16 num,
return bufsize + bytes + 2 + 2;
}
#endif
+U8 L3_pack_ccmodbus_03(TS_PH3_ccmodbus *pmodbus ,U8 slaverId, U16 reg, U16 num)
+{
+ U8 bufsize = 4;
+ pmodbus->slaver = slaverId;
+ pmodbus->oper = MODBUS_OPER_READ;
+ pmodbus->buf[0] = reg >> 8 & 0xFF;
+ pmodbus->buf[1] = reg >> 0 & 0xFF;
+ pmodbus->buf[2] = num >> 8 * 0xFF;
+ pmodbus->buf[3] = num >> 0 & 0xFF;
+ crc16(pmodbus->crc,&pmodbus->slaver,2 + bufsize);
+ pmodbus->buf[bufsize] = pmodbus->crc[0];
+ pmodbus->buf[bufsize + 1] = pmodbus->crc[1];
+
+ return bufsize + 2 + 2;
+}
+U8 L3_pack_ccmodbus_06(TS_PH3_ccmodbus *pmodbus ,U8 slaverId, U16 reg, U8 *buf)
+{
+ U8 bufsize = 4;
+ pmodbus->slaver = slaverId;
+ pmodbus->oper = MODBUS_OPER_WRITE;
+ pmodbus->buf[0] = reg >> 8 & 0xFF;
+ pmodbus->buf[1] = reg >> 0 & 0xFF;
+ pmodbus->buf[2] = buf[0];
+ pmodbus->buf[3] = buf[1];
+ crc16(pmodbus->crc,&pmodbus->slaver,2 + bufsize);
+ pmodbus->buf[bufsize] = pmodbus->crc[0];
+ pmodbus->buf[bufsize + 1] = pmodbus->crc[1];
+
+ return bufsize + 2 + 2;
+}
+
+U8 L3_pack_ccmodbus_10(TS_PH3_ccmodbus *pmodbus ,U8 slaverId, U16 reg, U16 num, U8 bytes, U8 *buf)
+{
+ U8 bufsize = 5,i = 0;
+ pmodbus->slaver = slaverId;
+ pmodbus->oper = MODBUS_OPER_WRITE_M;
+ pmodbus->buf[0] = reg >> 8 & 0xFF;
+ pmodbus->buf[1] = reg >> 0 & 0xFF;
+ pmodbus->buf[2] = num >> 8 * 0xFF;
+ pmodbus->buf[3] = num >> 0 & 0xFF;
+ pmodbus->buf[4] = bytes;
+
+ for(i=0;ibuf[5+i] = buf[i];
+ }
+ crc16(pmodbus->crc,&pmodbus->slaver,2 + bufsize + bytes);
+ pmodbus->buf[bufsize + bytes] = pmodbus->crc[0];
+ pmodbus->buf[bufsize + bytes + 1] = pmodbus->crc[1];
+
+ return bufsize + bytes + 2 + 2;
+}
+
+#if 0
U8 L3_pack_ccmodbus(TS_PH3_ccmodbus *pccmodbus, MD_SLAVER_INFO *slaver_info)
{
pccmodbus->filter1 = D_CMD_Filter1_ff;
pccmodbus->filter2 = D_CMD_Filter2_fe;
pccmodbus->num = L3_pack_modbus((TS_PH4_modbus*)&pccmodbus->slaver, slaver_info);
-#if 0
+
switch(slaver_info->oper)
{
case MODBUS_OPER_READ:
@@ -110,9 +164,10 @@ U8 L3_pack_ccmodbus(TS_PH3_ccmodbus *pccmodbus, MD_SLAVER_INFO *slaver_info)
break;
}
pccmodbus->num = pkglen;
-#endif
+
return pccmodbus->num + 3;
}
+#endif
U16 L3_ccmodbus_slaver_ack(TS_PH3_ccmodbus *pccmodbus,TS_PH3_ccmodbus *pModbusAck)
{
@@ -175,6 +230,29 @@ void L1_s2b_PH3(struct _tp_handler_x *p)// reentrant
}
}
+U8 L3_pack_ccmodbus(TS_PH3_ccmodbus *pccmodbus, CCMD_SLAVER_INFO *slaver_info)
+{
+ U8 pkglen = 0;
+ pccmodbus->filter1 = D_CMD_Filter1_ff;
+ pccmodbus->filter2 = D_CMD_Filter2_fe;
+ switch(slaver_info->oper)
+ {
+ case MODBUS_OPER_READ:
+ pkglen = L3_pack_ccmodbus_03(pccmodbus,slaver_info->slaver,slaver_info->reg,slaver_info->regnum);
+ break;
+ case MODBUS_OPER_WRITE:
+ pkglen = L3_pack_ccmodbus_06(pccmodbus,slaver_info->slaver,slaver_info->reg,slaver_info->buf);
+ break;
+ case MODBUS_OPER_WRITE_M:
+ pkglen = L3_pack_ccmodbus_10(pccmodbus,slaver_info->slaver,slaver_info->reg,slaver_info->regnum,slaver_info->bytes,slaver_info->buf);
+ break;
+
+ default:
+ break;
+ }
+ pccmodbus->num = pkglen;
+ return pkglen + 3;
+}
/******************************************************************************
diff --git a/source/tpc/ccmodbus.h b/source/tpc/ccmodbus.h
index 234355f..1e59882 100644
--- a/source/tpc/ccmodbus.h
+++ b/source/tpc/ccmodbus.h
@@ -77,7 +77,23 @@ typedef struct
vU8 crc[2]; //crc16
}TS_PH3_ccmodbus;
-#if 0
+
+
+typedef struct
+{//8byte
+ vU8 cashe[2];
+ vU8 reg;
+ vU8 max; //接收到的数目的最大值
+ vU8 head_0;
+ vU8 head_1;
+ vU8 head; //接收标志头标志
+ vU8 ok; //接收协议ok标志
+ vU8 num;
+ vU8 *sp;
+ TS_PH3_ccmodbus ts_ccmodbus;
+ vU8 crc[2];
+}TS_Handle_PH3;
+
typedef struct
{
U16 slaver;
@@ -88,11 +104,12 @@ typedef struct
U8 *buf;
U16 mask;
}CCMD_SLAVER_INFO;
-#endif
+
+
extern U8 L3_pack_ccmodbus(TS_PH3_ccmodbus *pccmodbus, MD_SLAVER_INFO *slaver_info);
extern U16 L3_ccmodbus_slaver_ack(TS_PH3_ccmodbus *pccmodbus,TS_PH3_ccmodbus *pModbusAck);
extern void L3_ccmodbus_master_handler(TS_PH3_ccmodbus *pmodbus,MD_SLAVER_INFO *p_slaver_info);
extern void L1_s2b_PH3(struct _tp_handler_x *p);// reentrant;
-#endif /* end __TPC_CCMODBUS_H_ */
\ No newline at end of file
+#endif /* end __TPC_CCMODBUS_H_ */