diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..1d72d42
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,11 @@
+{
+ "files.associations": {
+ "UART0.C": "cpp",
+ "msp_uart0.C": "cpp",
+ "msp_uart2.C": "cpp",
+ "asp_oid.h": "c",
+ "msp_uart2.h": "c",
+ "task_w600.h": "c",
+ "UART2.C": "cpp"
+ }
+}
\ No newline at end of file
diff --git a/keilp/cc_as_stc02_ps5ws.uvprojx b/keilp/cc_as_stc02_ps5ws.uvprojx
index 69341ff..8aceae2 100644
--- a/keilp/cc_as_stc02_ps5ws.uvprojx
+++ b/keilp/cc_as_stc02_ps5ws.uvprojx
@@ -123,6 +123,47 @@
0
16
+
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 1
+
+
+ 0
+ 1
+ 0
+ 1
+ 1
+ 1
+ 0
+ 1
+ 1
+ 1
+
+ 0
+ -1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -362,6 +403,11 @@
1
..\source\app\app_task_tcp.c
+
+ app_task_speech.c
+ 1
+ ..\source\app\app_task_speech.c
+
@@ -425,7 +471,7 @@
msp_uart3.c
1
- ..\source\msp\nouse\msp_uart3.c
+ ..\source\msp\msp_uart3.c
@@ -494,6 +540,9 @@
+
+ New Group
+
diff --git a/si4/ps5ws.si4project/soft_ps5ws.sip_sym b/si4/ps5ws.si4project/soft_ps5ws.sip_sym
index 606a81c..6d98ce2 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 cf2857c..b27a913 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 b7cef3c..9f1ad26 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 763fdeb..f652f17 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 c8f5940..3949cdd 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 87a6aa3..8163cdb 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 37940e2..c5e630f 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 8e6dd37..101383e 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 2dd9b56..3a5eac2 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 4878576..71776e9 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 d6264ec..9b00a90 100644
--- a/source/app/app_config.c
+++ b/source/app/app_config.c
@@ -8,7 +8,7 @@
GlobalParam G;
GlobalRegister R;
-WR_Buf wr_buf;
+//WR_Buf wr_buf;
void L3_param_init(void)
{
@@ -26,7 +26,7 @@ void L3_param_init(void)
Lc_strcpy(G.ap_sid,"cc_pen_ap");
//ap模式pwd
Lc_strcpy(G.ap_pwd,"ccsens123");
-
+
#if 0
wr_buf.wIndex = wr_buf.rIndex = 0;
wr_buf.maxsize = sizeof(wr_buf.buf)/sizeof(PenPoint);
@@ -108,7 +108,7 @@ void L3_reg_reset(void)
R.pen_net_sta = 0;
R.pen_ele_sta = 0;
R.question_sta = 0;
-
+ R.spee_order = 0;
//R.oid3_order = 0;
//R.pack_order = 0;
//R.frame_order = 0;
@@ -138,21 +138,13 @@ void L3_reg_reset(void)
G.ccmd_slaver_info[1].mask = 0;
G.ccmd_slaver_info[1].extra_num = 0;
//普通码
- G.ccmd_slaver_info[3].slaver = SLAVER_TCP_SERVER_ID;
- G.ccmd_slaver_info[3].oper = MODBUS_OPER_WRITE_M;
- G.ccmd_slaver_info[3].reg = 0x05;
- G.ccmd_slaver_info[3].regnum = 0x00;//基础数量,程序每次应动态添加点数
- G.ccmd_slaver_info[3].bytes = 0;
- G.ccmd_slaver_info[3].buf = (U8*)&R.oid3_order;
- G.ccmd_slaver_info[3].mask = 0;
- G.ccmd_slaver_info[3].extra_num = 2;
-
G.modbusstmp = 0;
G.authed = 0;
G.flowStartVal = 1;
G.pen_up = 0;
G.datapkg = 0;
G.pen_t = 1;
+
}
diff --git a/source/app/app_config.h b/source/app/app_config.h
index a667af1..fe221f2 100644
--- a/source/app/app_config.h
+++ b/source/app/app_config.h
@@ -7,7 +7,7 @@
#include "../tpc/modbus.h"
//#include "../asp/asp_oid.h"
-
+#define SERVER_ID 0x01
#define APP_VERSION 0x10
#define SLAVER_TCP_SERVER_ID 0x14
#define APP_VERSION_HEX 0x11 //高4位主版本,低4位次版本
@@ -103,6 +103,7 @@ typedef struct global_param
extern GlobalParam G;
//STEP 2 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<pkg = (TS_PH3_ccmodbus*)(s_uart2_tcp_rec.sp);
+ if(s->pkg->slaver == SERVER_ID)
+ {
+ L3_ccmodbus_slaver_ack(s->pkg,s->ack);
+ s->ccmd_speech_info[0].start = START_CODE;
+ s->ccmd_speech_info[0].num = 0x07;
+ s->ccmd_speech_info[0].oper = SPEECH_NAME_PLAY;
+ s->ccmd_speech_info[0].title = 0x43;
+ //ts_speech.ccmd_speech_info[0].buf = (U8*)&R.spee_order;
+ s->ccmd_speech_info[0].end = END_CODE;
+ //Lc_buf_copy_uc((U8 *)&s->ccmd_speech_info[0].buf,(U8 *)&R.spee_order,(U16)2);
+ //L0_uart0_sendArray((U8 *)&R.spee_order,2); //00 04
+ s->slaverIndex = 0;
+ s->pkglen = L3_pack_speech(&s->speech_pkg , &s->ccmd_speech_info + s->slaverIndex);
+ L2_task_go(D_task_speech_send);
+ }
+ }
+ else
+ {
+ L2_task_go(D_task_wait_tcp_order);
+ }
+ TTSS_Task_step(D_task_speech_send)
+ {
+ L0_uart3_sendArray((U8 *)&s->speech_pkg, s->pkglen);
+ //L0_uart0_sendArray((U8*)&s->speech_pkg,s->pkglen);
+ }
+ L2_task_go(D_task_wait_tcp_order);
+ TTSS_Task_end();
+}
+
+U8 ascTable[] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
+
+U8 *hexBytes2AsciiBytes(U8 asciiBytes[],U8 hexBytes[],U8 hexBytesLen)
+{
+ U8 i = 0;
+ for(i=0;i> 4 & 0x0F];
+ asciiBytes[i*2 + 1] = ascTable[hexBytes[i] >> 0 & 0x0F];
+
+ }
+ return asciiBytes;
+}
+
+ U8 Fun_SC_Check(U8 *p1, unsigned short int len)
+{
+ U8 sum = 0;
+ for(;len > 0; len--)
+ {
+ sum += *p1++;
+ }
+
+ return sum;
+}
+
+
+
+U8 L3_pack_speech_A3(TS_SPEECH *pspeech , U8 start ,U8 num ,U8 title ,U8 end)//tcp传来的buf
+{
+ int name;
+ U8 tcp_buf[6];
+ U8 str_buf[6];
+ U8 bufsize = 9;
+ pspeech->start = start;
+ pspeech->num = num;
+ pspeech->oper = SPEECH_NAME_PLAY;
+ pspeech->title = title;
+ Lc_buf_copy_uc((U8 *)&tcp_buf,(U8 *)&R.spee_order,(U16)2);
+ hexBytes2AsciiBytes(str_buf,tcp_buf,2);
+ name = getIndexOfSigns(str_buf[2])*16+getIndexOfSigns(str_buf[3])*1;
+ pspeech->buf[0] = (U8)(name/100) ;
+ pspeech->buf[1] = (U8)((name%100)/10);
+ pspeech->buf[2] = (U8)(name%10);
+ //L0_uart0_sendArray((U8*)&tcp_buf,3);
+ Lc_hex2ascii((U8 *)&pspeech->buf,(U8 *)&pspeech->buf,3);
+ pspeech->crc = Fun_SC_Check(&pspeech->num,6); //累加和校验
+ pspeech->end = end;
+ return bufsize;
+}
+
+U8 L3_pack_speech(TS_SPEECH *pspeech, CCMD_SPEECH_INFO
*speech_info)
{
- U8 i;
- L1_task_init(&ts_speech.task);
- L3_task_s_go(ts_speech,D_task_init);
- for(i=0;ioper)
{
- ts_speech.cc_speech_info[i].mask = 0;
- }
- ts_speech.cc_speech_info[0].oper = SPEECH_NAME_PLAY;
- ts_speech.cc_speech_info[0].mask = 0;
-}
-void L3_task_speech_handle(TS_tcp *s)
-{
-
-}
-
-U8 L3_pack_speech_A3(TS_SPEECH *pspeech , U8 *tcp_buf ,U8 *buf)//tcp传来的buf
-{
- long name;
- U8 bufsize = 9;
- pspeech->start = START_CODE;
- pspeech->num = 0x07;
- pspeech->oper = SPEECH_NAME_PLAY;
- pspeech->title = 0x43;
- name = hexToDec(&tcp_buf);
- tcp_buf[0] = (int)(name/100);
- tcp_buf[1] = (int)((name%100)/10);
- tcp_buf[2] = (int)(name%10);
- Lc_hex2ascii(&tcp_buf,&pspeech->buf,3);
- pspeech->crc = (pspeech->num + pspeech->oper + pspeech->buf[0] + pspeech->buf[1] + pspeech->buf[2] + pspeech->buf[3])>> 0 & 0xFF//累加和校验
- pspeech->end = END_CODE;
-
- return bufsize;
-}
-U8 L3_pack_ccmodbus(TS_SPEECH *pspeech , CC_SPEECH_INFO *speech_info)
-{
- U16 pkglen = 0;
- switch(speech_info->oper)
- {
- case SPEECH_NAME_PLAY:
- pkglen = L3_pack_ccmodbus_03(pspeech,tcp_buf,speech_info->buf);
- break;
- default:
- break;
- }
- pccmodbus->num = pkglen;
- return pkglen + 3;
-}
-
+ case SPEECH_NAME_PLAY:
+ pkglen = L3_pack_speech_A3(pspeech,speech_info->start,speech_info->num,speech_info->title,speech_info->end);
+ break;
+ default:
+ break;
+ }
+ return pkglen;
+}
+
diff --git a/source/app/app_task_speech.h b/source/app/app_task_speech.h
index db8dab6..8853098 100644
--- a/source/app/app_task_speech.h
+++ b/source/app/app_task_speech.h
@@ -1,11 +1,17 @@
#ifndef _APP_TASK_SPEECH_H
#define _APP_TASK_SPEECH_H
+
+#include "../tpc/ccmodbus.h"
+#include "../ctask/task.h"
+
+
+
#define CC_SPEECH_INFO_MAX 1
-#define D_s_TS_speech_max 32
+#define D_s_TS_speech_max 16
enum SPEECH_OPER
{
- SPEECH_NAME_PLAY 0xA3;
+ SPEECH_NAME_PLAY = 0xA3,
};
typedef struct
@@ -14,32 +20,42 @@ typedef struct
vU8 num;
vU8 oper;
vU8 title;
- vU8 buf[D_s_TS_speech_max - 3];
+ vU8 buf[3];
vU8 crc;
vU8 end;
}TS_SPEECH;
+
typedef struct
{
- U16 slaver;
+ U16 start;
+ U16 num;
U16 oper;
- U16 reg;
- U16 regnum;
- U16 bytes;
- U8 *buf;
- U16 mask;
-}CC_SPEECH_INFO;
+ U16 title;
+ //U8 buf[2];
+ U16 end;
+}CCMD_SPEECH_INFO;
typedef struct
{
TS_task task;
U16 slaverIndex;
U16 pkglen;
- CC_SPEECH_INFO cc_speech_info[CC_SPEECH_INFO_MAX];
+ TS_PH3_ccmodbus *pkg;
+ TS_PH3_ccmodbus *ack;
+ TS_SPEECH *speech_pkg;
+ CCMD_SPEECH_INFO ccmd_speech_info[CC_SPEECH_INFO_MAX];
}TS_TASK_SPEECH;
+
extern TS_TASK_SPEECH ts_speech;
+extern void L3_task_speech_init(void);
+extern void L3_task_speech_handle(TS_TASK_SPEECH *s);
+extern U8 L3_pack_speech_A3(TS_SPEECH *pspeech , U8 start ,U8 num ,U8 title ,U8 end);//tcp传来的buf;//tcp传来的buf
+extern U8 L3_pack_speech(TS_SPEECH *pspeech, CCMD_SPEECH_INFO *speech_info);
+extern U8 *hexBytes2AsciiBytes(U8 asciiBytes[],U8 hexBytes[],U8 hexBytesLen);
+extern U8 Fun_SC_Check(U8 *p1, unsigned short int len);
diff --git a/source/app/app_task_tcp.c b/source/app/app_task_tcp.c
index 183420c..9244831 100644
--- a/source/app/app_task_tcp.c
+++ b/source/app/app_task_tcp.c
@@ -39,7 +39,6 @@ void L3_task_tcp_handle(TS_tcp *s)
{
L2_task_go(D_task_tcp_switch_next_slaver);
}
-
TTSS_Task_step(D_task_tcp_send_modbus_pkg) //发送包
if(G.ccmd_slaver_info[s->slaverIndex].mask == 1)
{
@@ -50,68 +49,75 @@ void L3_task_tcp_handle(TS_tcp *s)
s->sendStamp = s_nos_tick.t_1s;
L2_task_go(D_task_tcp_wait_modbus_ack);
}
-
TTSS_Task_step(D_task_tcp_wait_modbus_ack) //等待ack
- if((s->slaverIndex) == 0)
+ //if((s->slaverIndex) == 0x00)
+ switch(s->slaverIndex)
{
- 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;
- s->pAckPkg = (TS_PH3_ccmodbus*)(s_uart2_tcp_rec.sp);
- //L3_gm35_rcv_data((U8*)s->pAckPkg,s->pAckPkg->num);
- if(s->pAckPkg->slaver == G.ccmd_slaver_info[s->slaverIndex].slaver)
+ case 0:
+ if(s_uart2_tcp_rec.ok)
{
- s->ackFlag = 1;
-
- switch(s->slaverIndex)
+ s_uart2_tcp_rec.ok = 0;
+ s_task_gm35_flow.tcp_last_recv_stmp = s_nos_tick.t_1s;
+ s->pAckPkg = (TS_PH3_ccmodbus*)(s_uart2_tcp_rec.sp);
+ //L3_gm35_rcv_data((U8*)s->pAckPkg,s->pAckPkg->num);
+ if(s->pAckPkg->slaver == G.ccmd_slaver_info[s->slaverIndex].slaver)
{
- case 0://如果oper == 90:成功,91 == 不成功
- switch(G.ccmd_slaver_info[s->slaverIndex].oper)
- {
+ s->ackFlag = 1;
+
+ //switch(s->slaverIndex)
+ //{
+ //case 0://如果oper == 90:成功,91 == 不成功
+ switch(s->pAckPkg->oper)
+ {
case 0x90:
- //L0_uart0_sendstr("11111");
G.authed = 1;
break;
case 0x91:
G.authed = 0;
break;
- }
- break;
- case 1:
- break;
- default:
- break;
+ default:
+ break;
+ }
}
- }
- L2_task_go(D_task_tcp_switch_next_slaver);
- }
- else if(s_nos_tick.t_1s - s->sendStamp >= 5) //重发
- {
- if(++s->retryTimes < 3)
- {
- L2_task_go(D_task_tcp_send_modbus_pkg);
- }
- else
- {
L2_task_go(D_task_tcp_switch_next_slaver);
}
- }
+ //#if 0
+ else if(s_nos_tick.t_1s - s->sendStamp >= 5) //重发
+ {
+ if(++s->retryTimes < 3)
+ {
+ L2_task_go(D_task_tcp_send_modbus_pkg);
+ }
+ else
+ {
+ L2_task_go(D_task_tcp_switch_next_slaver);
+ }
+ }
+ //#endif
+ //break;
+ //case 1:
+ break;
+ case 1:
+ L2_task_go(D_task_tcp_switch_next_slaver);
+ break;
+ default:
+ break;
+ //}
}
+ //}
+ //}
- else
- {
- L2_task_go(D_task_tcp_switch_next_slaver);
- }
+ //else
+ //{
+ //L2_task_go(D_task_tcp_switch_next_slaver);
+ //}
//L0_uart0_uc(s->ackFlag);
-
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();
}
diff --git a/source/app/app_task_tcp_control.c b/source/app/app_task_tcp_control.c
index 6b66ab9..a80080e 100644
--- a/source/app/app_task_tcp_control.c
+++ b/source/app/app_task_tcp_control.c
@@ -38,7 +38,7 @@ void L3_task_tcp_control_handle(TS_tcp_control *s)//判定是否抬笔/缓冲区
//发送认证包
G.ccmd_slaver_info[0].mask = 1;
}
- else if(ts_task_oid.can_send)
+ else if(ts_task_oid.can_send && G.authed)
{
ts_task_oid.can_send = 0;
G.ccmd_slaver_info[1].buf = (U8*)&points;
diff --git a/source/app/main.c b/source/app/main.c
index 99a5313..3844e4b 100644
--- a/source/app/main.c
+++ b/source/app/main.c
@@ -69,6 +69,7 @@ stc5ac32s
void L0_main_init(void)
{
+
Lc_delay_ms(200);
//板卡初始化
L0_board_config();
@@ -77,15 +78,15 @@ void L0_main_init(void)
//串口2初始化
L0_uart2_buf_init();
//串口3初始化
- //L0_uart3_buf_init();
+ L0_uart3_buf_init();
//Lc_delay_ms(100);
L1_tick_init();
+ //P53口初始化为 推挽输出
+ L0_PW_3V3_INIT();
-
//开启全局中断
EA = 1;
- L0_uart0_sendstr("\r\nasV1.a");
#if 0
L1_oid_init();
printf(" ok\r\n");
@@ -94,7 +95,7 @@ void L0_main_init(void)
#endif
//系统时钟初始化
L0_timer0_Init();
- //L0_key_init();
+ L0_key_init();
//G初始化
L3_param_init();
//R初始化
@@ -104,14 +105,15 @@ void L0_main_init(void)
//寄存器监听任务初始化
//L3_task_reglisten_init();
-
+
//w600任务初始化
- L3_task_gm35_flow_init(W600_ST);
+ // L3_task_gm35_flow_init(W600_ST);
//按键任务初始化
- //L0_key_init();
+ L0_key_init();
//笔头任务初始化
L1_oid_init();
-
+ //语音模块初始化
+ // L3_task_speech_init();
//tcp轮询任务初始化
L3_task_tcp_init();
L3_task_tcp_control_init();
@@ -122,6 +124,10 @@ void L0_main_init(void)
//===============================================
void main(void)
{
+ //int i;
+ U8 code open[9] = {0x7E,0x07,0xA3,0x43,0x30,0x30,0x39,0x86,0xEF};
+ U8 buletooth[7] = {0x7E,0x05,0xED,0x00,0x00,0xF2,0xEF};
+
//初始化
L0_main_init();
//获取mcu id
@@ -129,10 +135,29 @@ void main(void)
//打印版本信息
L0_uart0_sendArray("v1.0",4);
+ L0_uart0_sendstr("KEY1-TEST");
+
+ Lc_delay_ms(3000);
+ L0_uart3_sendArray((U8 *)&open , 9);
+ // L0_uart3_sendArray((U8 *)&buletooth , 7);
+ // L0_uart0_sendArray((U8 *)&buletooth , 7);
+
+ // 控制wifi_3v3输出
+ L0_PW_3V3_ON();
+
+ #if 0
+ for(i =0;i<100;i++)
+ {
+ //Lc_delay_ms(100);
+ L0_uart3_sendArray((U8 *)&open , 9);
+ Lc_delay_ms(100);
+ }
+ #endif
while(1)
{
-
+
L1_Oid_readoid();
+
if(1 == s_nos_tick.t1s_heartbeat)//1s
{
@@ -141,9 +166,9 @@ void main(void)
D_print_heartbeat()
{///这个地方可以放置心跳的打印信息
///如果其他的打印存在,并且关闭了这个打印的话,这个打印会临时被关闭,下一次打开
-
- L0_uart0_uc('.');
-
+ // L0_uart0_uc('.');
+ // L0_uart2_sendArray((U8 *)&buletooth , 7);
+
}
}
@@ -153,7 +178,7 @@ void main(void)
/// L1_as_readA(0);//读取倾角传感器数据
/// Lc_buf_copy_uc(s_uart1_rec.buf,s_as[0].d,8);
- // s_uart1_rec.buf= 传感器数据
+ // s_uart1_rec.buf= 传感器数据
/// ff 08 xh xl yh yl zh zl
/// s_uart1_rec.ok =1;
}
@@ -171,7 +196,7 @@ void main(void)
switch(s_uart0_rec.buf[1])
{
case 0x0d:
- /// L1_sd_debug(&s_uart0_rec.buf[2]);
+ // L1_sd_debug(&s_uart0_rec.buf[2]);
break;
case 0x00:
L1_oid_debug(&s_uart0_rec.buf[2]);
@@ -180,33 +205,38 @@ void main(void)
break;
}
}
-
+ // 7E 04 AE 1E XX EF
#endif
- //WIFI
- L3_uart2_exp_protocol(&s_uart2_at);
- L2_task_gm35_flow_handle(&s_task_gm35_flow);
-
//笔头数据采集
- L3_task_oid_handle(&ts_task_oid);
+ //L3_task_oid_handle(&ts_task_oid);
+
+ //WIFI
+ // L3_uart2_exp_protocol(&s_uart2_at);
+ // L2_task_gm35_flow_handle(&s_task_gm35_flow);
+
//寄存器值监控
//L3_task_reglisten_handle(&s_task_reglisten);
//输出,响应485协议
//L3_task_modbus_handler(&s_uart0_rec);
+
//语音模块
+ // L3_task_speech_handle(&ts_speech);
//按键处理
- //L3_task_key_handle(&s_task_key_handle);
- //L3_task_modbus_handler2(&s_uart2_rec);
+ L3_task_key_handle(&s_task_key_handle);
+ //L3_task_modbus_handler2(&s_uart2_rec);
+ #if 1
//tcp发送
- L3_task_tcp_handle(&ts_tcp);
+ // L3_task_tcp_handle(&ts_tcp);
//tcp master->slaver发送逻辑控制
- L3_task_tcp_control_handle(&ts_tcp_control);
+ // L3_task_tcp_control_handle(&ts_tcp_control);
+ #endif
}
}
//end main
diff --git a/source/app/main.h b/source/app/main.h
index a4f449c..5a54ca1 100644
--- a/source/app/main.h
+++ b/source/app/main.h
@@ -39,7 +39,7 @@
#include "../msp/msp_uart0.h"
#include "../msp/msp_uart2.h"
-//#include "../msp/msp_uart3.h"
+#include "../msp/msp_uart3.h"
#include "../msp/eeprom.h"
@@ -58,6 +58,7 @@
#include "../app/task_key.h"
#include "../app/app_task_tcp.h"
#include "../app/app_task_tcp_control.h"
+#include "../app/app_task_speech.h"
#include "../asp/asp_oid.h"
#include "../ctask/tick.h"
diff --git a/source/app/task_key.c b/source/app/task_key.c
index e6ba1e3..0d10855 100644
--- a/source/app/task_key.c
+++ b/source/app/task_key.c
@@ -13,20 +13,21 @@
#include "../clib/clib.h"
struct _s_task_key_ s_task_key_handle;
+
void L0_key_init(void)
{
//使能 INT1下降沿中断
- IT0 = 0;
+ //IT0 = 0;
//外部中断允许
- EX0 = 1;
+ //EX0 = 1;
//使能 INT1下降沿中断
- IT1 = 0;
+ //IT1 = 0;
//外部中断允许
- EX1 = 1;
+ //EX1 = 1;
L1_task_init(&s_task_key_handle.task);
L3_task_s_go(s_task_key_handle,D_task_init);
}
-
+#if 0
void INT0_isrHanddle(void) D_SERVE_INT0
{
struct _s_task_key_ *p = &s_task_key_handle;
@@ -67,32 +68,107 @@ void INT1_isrHanddle(void) D_SERVE_INT1
IE1 = 0; //清除INT1中断程序执行过程中的中断请求
EX1 = 1; //开中断
}
-
+#endif
void L3_task_key_handle(struct _s_task_key_ *p)
{
- if(p->key1_ok)
- {
- if(p->time1>=180)
- {
- LED1 = ~LED1;
- }
- else
+
+ if(key1 == 0)
+ {
+ //Lc_delay_ms(10);//按键防抖
+ if(key1 == 0)
+ {
+ p->key1_ok = 1;
+ while(!key1)
+ {
+ p->time1++;
+ // L0_uart0_uchex(p->time1);
+ }
+ }
+ }
+ if(p->key1_ok)
{
- //LED2 = ~LED2;
- U8 i;
- U8 mu[9];
- U16 music[9] = {0x7E,0x07,0xA3,0x43,0x30,0x30,0x39,0x86,0xEF};
- //7E 07 A3 43 30 30 39 86 EF
- for(i = 0;i<9;i++)
+
+ if(p->time1 >= 180)
+ {
+ // L0_uart0_uc('#');
+ // L0_uart0_uchex(p->time1);
+ // //LED1 = ~LED1;
+ // LED4 = ~LED4;
+ }
+ else
+ {
+ U8 front[14] = {0xFF,0xFE,0x0B,0x14,0x10,0x00,0x03,0x00,0x01,0x02,0x00,0x00,0x54,0xF3};
+ LED3 = 1;
+ Lc_delay_ms(100);
+ LED3 = 0;
+ LED3 = ~LED3;
+ L3_gm35_send_data((U8 *)&front,14);
+
+ #if 0
+ U8 i;
+ U8 mu[9];
+ U8 music[9] = {0x7E,0x07,0xA3,0x43,0x30,0x30,0x39,0x86,0xEF};
+ FF FE 0B 14 10 00 03 00 01 02 00 00 54 F3
+ //7E 07 A3 43 30 30 39 86 EF
+ for(i = 0;i<9;i++)
+ {
+ mu[i] = music[i] & 0xFF;
+ }
+ L0_uart3_sendArray((U8 *)&mu, 9);
+ L0_uart0_sendArray((U8 *)&mu, 9);
+
+ #endif
+ }
+ p->key1_ok = 0;
+ p->time1=0;
+ }
+ if(key2 == 0)
+ {
+ //Lc_delay_ms(10);//按键防抖
+ if(key2 == 0)
+ {
+ p->key2_ok = 1;
+ while(!key2)
+ {
+ p->time2++;
+ }
+ }
+ }
+ if(p->key2_ok)
+ {
+ if(p->time2>=180)
+ {
+ //LED1 = ~LED1;
+ }
+ else
{
- mu[i] = music[i]>> 0 & 0xFF;
+
+ U8 back[14] = {0xFF,0xFE,0x0B,0x14,0x10,0x00,0x03,0x00,0x01,0x02,0x00,0x01,0x95,0x33};
+ LED3 = 1;
+ Lc_delay_ms(100);
+ LED3 = 0;
+ LED3 = ~LED3;
+ L3_gm35_send_data((U8 *)&back,14);
+
+ #if 0
+ U8 i;
+ U8 mu[9];
+ U8 music[9] = {0x7E,0x07,0xA3,0x43,0x30,0x30,0x39,0x86,0xEF};
+ //FF FE 0B 14 10 00 03 00 01 02 00 00 54
+ //7E 07 A3 43 30 30 39 86 EF
+ for(i = 0;i<9;i++)
+ {
+ mu[i] = music[i] & 0xFF;
+ }
+ L0_uart3_sendArray((U8 *)&mu, 9);
+ L0_uart0_sendArray((U8 *)&mu, 9);
+
+ #endif
}
- L0_uart3_sendArray((U8 *)&mu, 9);
- L0_uart0_sendArray((U8 *)&mu, 9);
- }
- p->key1_ok = 0;
- p->time1=0;
+ p->key2_ok = 0;
+ p->time2=0;
}
+#if 0
if(p->key2_ok)
{
if(p->time2>=180)
@@ -106,6 +182,7 @@ void L3_task_key_handle(struct _s_task_key_ *p)
p->key2_ok = 0;
p->time2=0;
}
+#endif
if(key3 == 0)
{
//Lc_delay_ms(10);//按键防抖
@@ -122,15 +199,26 @@ void L3_task_key_handle(struct _s_task_key_ *p)
{
if(p->time3>=180)
{
+ LED3 = ~LED3;
+ LED2 = ~LED2;
LED1 = ~LED1;
+ LED4 = ~LED4;
+ Lc_delay_ms(100);
+ // LED1 = 0;
+ L3_gm35_send_str("+++");
+ Lc_delay_ms(1000);
+ //s_task_gm35_flow.mode=W600_AP;
+ L3_task_gm35_flow_init(W600_AP);
+ //G.w600_mode = 0;
}
else
{
- LED2 = ~LED2;
+ //LED2 = ~LED2;
}
p->key3_ok = 0;
p->time3=0;
}
+
}
diff --git a/source/app/task_key.h b/source/app/task_key.h
index 4b14944..3782c09 100644
--- a/source/app/task_key.h
+++ b/source/app/task_key.h
@@ -15,9 +15,9 @@
#include "../bsp/bsp_config.h"
#include "../ctask/task.h"
#include "../msp/msp_uart0.h"
-
#include "../msp/msp_uart3.h"
-
+#include "../app/task_w600.h"
+#include "../clib/type.h"
struct _s_task_key_
{
TS_task task;
diff --git a/source/app/task_w600.c b/source/app/task_w600.c
index 05c4ea8..4269361 100644
--- a/source/app/task_w600.c
+++ b/source/app/task_w600.c
@@ -95,7 +95,16 @@ void L3_uart2_exp_protocol(struct _s_PC1_0D0A_ *p)
else if(Lc_strStartsWith(pPara,"ERROR"))
{
s_task_gm35_flow.st_error= 1;
- }
+ }
+ else if(Lc_strStartsWith(pPara,"no change"))
+ {
+ s_task_gm35_flow.serve_ok= 1;
+ }
+ else if(Lc_strStartsWith(pPara,"CIPMUX and"))
+ {
+ s_task_gm35_flow.ap_serve_ok = 1;
+ }
+
//Station模式判定
if(s_task_gm35_flow.mode == W600_ST)
{
@@ -111,7 +120,7 @@ void L3_uart2_exp_protocol(struct _s_PC1_0D0A_ *p)
//AP模式判定
else if(s_task_gm35_flow.mode == W600_AP)
{
- if(Lc_strStartsWith(pPara,"+IPD,0"))
+ if(Lc_strStartsWith(pPara,"+IPD,"))
{
//解析协议,success
//1将id,pwd放入寄存器2.ok=1
@@ -156,6 +165,10 @@ void L3_uart2_exp_protocol(struct _s_PC1_0D0A_ *p)
{
s_task_gm35_flow.ap_tcp_ok = 1;
}
+ else if(Lc_strStartsWith(pPara,"1,CONNECT"))
+ {
+ s_task_gm35_flow.ap_tcp_ok = 1;
+ }
else if(Lc_strStartsWith(pPara,"SEND OK"))
{
s_task_gm35_flow.ap_data_ok= 1;
@@ -164,6 +177,7 @@ void L3_uart2_exp_protocol(struct _s_PC1_0D0A_ *p)
{
s_task_gm35_flow.ap_conn_ok = 1;
}
+
}
p->ok = 0;
}
@@ -214,17 +228,21 @@ void L3_task_gm35_flow_init(U8 mode)
#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_ST_SERVE 0x11
#define TTSS_TASK_GM35_FLOW_AP 0x20
#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 TTSS_TASK_GM35_FLOW_AP_CIPMUX0 0x24
+
+#define TTSS_TASK_GM35_FLOW_TCP_TIME 0x25
+#define TTSS_TASK_GM35_FLOW_AP_DATA 0x26
+#define TTSS_TASK_GM35_FLOW_AP_TCP_CONN_WAIT 0x27
+#define TTSS_TASK_GM35_FLOW_AP_WIFI_DATA_STA_WAIT 0x28
+#define TTSS_TASK_MODE_TRAN 0x29
+#define TTSS_TASK_MODE_CONFIG_WAIT 0x2A
+#define TTSS_TASK_MODE_SERVER_CLOSE 0x2B
#define INS_TIMEOUT 5
@@ -236,7 +254,7 @@ void L3_task_gm35_flow_init(U8 mode)
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_3s);//上电等待10s
+ L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ATEQV,D_Tdelay_1s);//上电等待10s
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ATEQV)
if(s->send == 0)
{//发送
@@ -245,11 +263,18 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
s->ins_stmp = s_nos_tick.t_1s;
s->send = 1;
}
- else if(s->ins_ok == 1) //等待
+ else if(1 == s->ap_serve_ok) //等待
+ {
+ s->send = 0;
+ s->ap_serve_ok = 0;
+ L3_gm35_send_str(AT_INS_AP_SERVER_CLOSE);
+ }
+ else if(s->serve_ok == 1 || s->ins_ok == 1) //等待
{
s->send = 0;
+ s->serve_ok = 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_GM35_FLOW_ST_SERVE,D_Tdelay_300ms);
}
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
@@ -267,7 +292,7 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
else if(s->ins_ok == 1) //等待
{
s->send = 0;
- L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_WIFI,D_Tdelay_3s);
+ L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_WIFI,D_Tdelay_300ms);
}
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
@@ -286,7 +311,11 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
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);
+ LED2 = 0;
+ LED2 = ~LED2;
+ LED2 = ~LED2;
+ LED2 = ~LED2;
+ L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPMUX0,D_Tdelay_300ms);
}
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
@@ -305,11 +334,12 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
else if(1 == s->ins_ok) //等待
{
s->send = 0;
- L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_TCP,D_Tdelay_3s);
+ L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_TCP,D_Tdelay_300ms);
}
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
{//超时重发
+
s->send = 0;
}
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_TCP)
@@ -324,7 +354,8 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
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);
+ LED3 = 0;
+ L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPMODE1,D_Tdelay_300ms);
}
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
{//超时重发
@@ -341,7 +372,7 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
else if(1 == s->ins_ok) //等待
{
s->send = 0;
- L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPSEND,D_Tdelay_3s);
+ L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPSEND,D_Tdelay_300ms);
}
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
{//超时重发
@@ -355,7 +386,7 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
s->st_error = 0;
s->ins_stmp = s_nos_tick.t_1s;
s->send = 1;
- L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPSEND,D_Tdelay_500ms);//发完之后要等,不然st_error == 0没用 ,没收到error之前也是=0
+ L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPSEND,D_Tdelay_300ms);//发完之后要等,不然st_error == 0没用 ,没收到error之前也是=0
}
else if(1 == s->st_error)
{
@@ -365,7 +396,6 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
else if(0 == s->st_error)
{
s->send = 0;
-
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_DATA,0);
}
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
@@ -381,6 +411,30 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
+ TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_SERVE)
+ 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(s->st_error)
+ {
+ s->send = 0;
+ s->st_error = 0;
+ L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPMODE0,D_Tdelay_300ms);
+ }
+ else if((s->serve_ok == 1 )|| (s->ins_ok == 1)) //等待
+ {
+ s->send = 0;
+ s->serve_ok = 0;
+ L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPMODE0,D_Tdelay_300ms);
+ }
+ else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
+ {//超时重发
+ s->send = 0;
+ }
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_CIPMODE0)
if(s->send == 0)
{//发送
@@ -392,7 +446,27 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
else if(1 == s->ins_ok) //等待
{
s->send = 0;
- L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP,D_Tdelay_3s);
+ L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP,D_Tdelay_300ms);
+ }
+
+ else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
+ {//超时重发
+ s->send = 0;
+ L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP_CIPMUX0,D_Tdelay_300ms);
+ }
+ TTSS_Task_step(TTSS_TASK_GM35_FLOW_AP_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_CIPMODE0,D_Tdelay_300ms);
}
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
@@ -410,7 +484,7 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
else if(1 == s->ins_ok) //等待
{
s->send = 0;
- L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP_WIFI,D_Tdelay_3s);
+ L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP_WIFI,D_Tdelay_300ms);
}
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
@@ -422,13 +496,14 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
{//发送
L3_gm35_send_str(AT_INS_AP_WIFI);
s->ins_ok = 0;
+ s->st_error = 0;
s->ins_stmp = s_nos_tick.t_1s;
s->send = 1;
}
- else if(1 == s->ins_ok) //等待
+ else if((1 == s->ins_ok)||(1 == s->st_error)) //等待
{
s->send = 0;
- L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP_CIPMUX1,D_Tdelay_3s);
+ L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP_CIPMUX1,D_Tdelay_300ms);
}
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
@@ -446,7 +521,7 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
else if(1 == s->ins_ok) //等待
{
s->send = 0;
- L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP_SERVER,D_Tdelay_3s);
+ L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP_SERVER,D_Tdelay_300ms);
}
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
@@ -464,7 +539,7 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
else if(1 == s->ins_ok) //等待
{
s->send = 0;
- L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_TCP_TIME,D_Tdelay_3s);
+ L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_TCP_TIME,D_Tdelay_300ms);
}
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
@@ -475,6 +550,7 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
if(s->send == 0)
{//发送
L3_gm35_send_str(AT_INS_AP_TCP_TIME);
+ LED2 = 0;
s->ins_ok = 0;
s->ins_stmp = s_nos_tick.t_1s;
s->send = 1;
@@ -483,7 +559,7 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
{
s->send = 0;
s->ap_tcp_ok = 0;
- L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP_TCP_CONN_WAIT,D_Tdelay_3s);
+ L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP_TCP_CONN_WAIT,D_Tdelay_300ms);
}
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
@@ -502,9 +578,12 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
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);
+ s->ap_rec_ok = 0;
+ s->rev = 1;
+ s->ins_stmp = s_nos_tick.t_1s;
+ //L0_uart0_sendstr("ap config ok");
+ //L3_gm35_send_str(AT_INS_AP_SEND);//进入发送模式
+ //L2_task_go(TTSS_TASK_MODE_TRAN);
}
else if(1 == s->ap_conn_ok)
{
@@ -512,22 +591,29 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
s->ap_tcp_ok = 0;
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP_CIPMUX1,D_Tdelay_300ms);
}
+ else if((s_nos_tick.t_1s - s->ins_stmp > 3) && (s->rev == 1))
+ {//超时重发
+ s->ap_data_ok = 0;
+ s->rev= 0;
+ L3_gm35_send_str(AT_INS_AP_SEND);
+ L2_task_go_Tdelay(TTSS_TASK_MODE_TRAN,D_Tdelay_100ms);
+ }
TTSS_Task_step(TTSS_TASK_MODE_TRAN)
if(s->send == 0)
{//发送
L3_gm35_send_str("#OK$\r\n");
+ LED2 = 1;
+ s->ap_rec_ok = 0;
s->ins_ok = 0;
- s->ap_data_ok = 0;
- s->ins_stmp = s_nos_tick.t_1s;
s->send = 1;
+ s->ins_stmp = s_nos_tick.t_1s;
}
- else if(1 == s->ap_data_ok) //等待
+ else if(1 == s->ap_data_ok) //等待//此处进入ins_ok,不进入send_ok,因为之前有一个no change OK,在进入AP关闭服务器那里
{
s->send = 0;
s->ap_tcp_ok = 0;
- L2_task_go_Tdelay(TTSS_TASK_MODE_SERVER_CLOSE,D_Tdelay_3s);
+ L2_task_go_Tdelay(TTSS_TASK_MODE_SERVER_CLOSE,D_Tdelay_100ms);
}
-
TTSS_Task_step(TTSS_TASK_MODE_SERVER_CLOSE)
if(s->send == 0)
{//发送
@@ -539,9 +625,10 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
else if(1 == s->ins_ok) //等待
{
s->send = 0;
+ LED1 = 1;
+ LED2 = 1;
L3_task_gm35_flow_init(W600_ST);
}
-
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
{//超时重发
s->send = 0;
diff --git a/source/app/task_w600.h b/source/app/task_w600.h
index 4636483..b62cc5e 100644
--- a/source/app/task_w600.h
+++ b/source/app/task_w600.h
@@ -1,132 +1,135 @@
- ////////////////////////////////////////////////////////////////////////////
-///@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\",\"192.168.0.81\",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" //查询连接状态
-
-
-#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 st_send_ok;
- vU8 ap_tcp_ok;
- vU8 ap_data_ok;
- vU8 st_error;
- vU8 mode;
-
- vU8 send_lock;
- vU8 module_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 //注意缓冲区的长度
-
-
-extern struct _s_task_gm35_gprs_ s_task_gm35_flow;
-
-
-
-
-
-extern struct _s_task_gm35_gprs_ s_task_gm35_flow;
-extern void L3_gm35_send_str(U8 *str);
-extern void L3_gm35_send_data(U8 *buf , U8 len);
-extern void L3_gm35_rcv_data(U8* buf,U8 num);
-
-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);
-
-
-
-#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\",\"www.tall.wiki\",8195\r\n" //连接服务器
+//#define AT_INS_ST_TCP "AT+CIPSTART=\"TCP\",\"192.168.0.81\",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" //查询连接状态
+
+
+#define AT_INS_AP "AT+CWMODE=2\r\n" //进入AP模式
+#define AT_INS_AP_WIFI "AT+CWSAP=\"ccsens_pen\",\"ccsens\",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" //关闭服务器
+#define AT_INS_AP_CLOSE "AT+CWQAP\r\n" //断开AP连接
+////<<<<<<<<<<<<<<<<<<<_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 st_send_ok;
+ vU8 ap_tcp_ok;
+ vU8 ap_data_ok;
+ vU8 st_error;
+ vU8 serve_ok;
+ vU8 ap_serve_ok;
+ vU8 mode;
+ vU8 rev;
+ vU8 send_lock;
+ vU8 module_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 //注意缓冲区的长度
+
+
+extern struct _s_task_gm35_gprs_ s_task_gm35_flow;
+
+
+
+
+
+extern struct _s_task_gm35_gprs_ s_task_gm35_flow;
+extern void L3_gm35_send_str(U8 *str);
+extern void L3_gm35_send_data(U8 *buf , U16 len);
+extern void L3_gm35_rcv_data(U8* buf,U8 num);
+
+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);
+
+
+
+#endif
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/source/asp/asp_oid.c b/source/asp/asp_oid.c
index cefdf51..82e638a 100644
--- a/source/asp/asp_oid.c
+++ b/source/asp/asp_oid.c
@@ -18,9 +18,10 @@ Ts_OID_frame_xy_ points[POINT_LEN+10];
void L3_task_oid_handle(TS_task_oid_ *s)
{
+ // L0_uart0_sendstr("oid_p");
TTSS_Task_init();
- TTSS_Alarm_init(s->tts,1000);
+ TTSS_Alarm_init(s->tts,300);
///(X) = s_nos_tick.t_10ms + delay;
L2_task_go(D_TASK_OID_t1);
TTSS_Task_step(D_TASK_OID_t1)
@@ -99,7 +100,7 @@ void L3_task_oid_handle(TS_task_oid_ *s)
L2_task_go(D_TASK_OID_t1);
}
TTSS_Task_step(TTSS_TASK_OID_WRITE)
- //L0_uart2_sendArray((U8 *)&s->ts_frame,(U16)10);
+ //L0_uart0_sendArray((U8 *)&s->ts_frame,(U16)10);
Lc_buf_copy_uc((U8 *)&oid_buf[s->point],(U8 *)&s->ts_frame,(U16)10);
s->point ++;
L2_task_go(TTSS_TASK_OID_SEND);
@@ -116,18 +117,27 @@ void L3_task_oid_handle(TS_task_oid_ *s)
for(j = 0;jextra;j++)
{
Lc_buf_copy_uc((U8 *)&points[j],(U8 *)&oid_buf[j],(U16)10);
- //L0_uart2_sendArray((U8 *)&points[j],(U16)10);
+ //L0_uart0_sendArray((U8 *)&points[j],(U16)10); // 1
+ //L0_uart0_0d0a();
}
+
+ //L0_uart0_sendstr("points->cd.xy100.x100 = "); // 2
+ //L0_uart0_ushex(points->cd.xy100.x100);
+ //L0_uart0_0d0a();
+ //L0_uart0_sendstr("points->cd.xy100.y100 = ");
+ //L0_uart0_ushex(points->cd.xy100.y100);
+ //L0_uart0_0d0a();
+
//G.ccmd_slaver_info[1].buf = (U8*)&points;
//G.ccmd_slaver_info[1].extra_num = (s->extra)*5;
- //L0_uart2_sendArray((U8 *)&points,(s->extra)*10);
+ //L0_uart0_sendArray((U8 *)&points,(s->extra)*10);
//s->extra = 0;
s->can_send = 1;
- #if 0
+ #if 0//3
for(j = 0;j>>>>>>>>>>>>>>>>>>>>>485 Type
#define TYPE_485_NONE 0
diff --git a/source/bsp/bsp_oid.c b/source/bsp/bsp_oid.c
index 65bf032..eddf4ad 100644
--- a/source/bsp/bsp_oid.c
+++ b/source/bsp/bsp_oid.c
@@ -410,12 +410,56 @@ void L2_oid_ParseF1(void)
uint32_t u32t[2] = 0;
/// L1_print_rcv("\r\n F1=");
ts_oid.oid_type = ts_oid.rec.d[0];
- if(ts_oid.rec.d[0] == 0x60)
+
+ L0_uart0_sendstr("ts_oid.rec.d[0] = ");
+ L0_uart0_uchex(ts_oid.rec.d[0]);
+ L0_uart0_0d0a();
+ L0_uart0_sendstr("ts_oid.rec.d[1] = ");
+ L0_uart0_uchex(ts_oid.rec.d[1]);
+ L0_uart0_0d0a();
+ L0_uart0_sendstr("ts_oid.rec.d[2] = ");
+ L0_uart0_uchex(ts_oid.rec.d[2]);
+ L0_uart0_0d0a();
+ L0_uart0_sendstr("ts_oid.rec.d[3] = ");
+ L0_uart0_uchex(ts_oid.rec.d[3]);
+ L0_uart0_0d0a();
+
+ /////////
+ L0_uart0_sendstr("ts_oid.rec.d16[0] = ");
+ L0_uart0_ushex(ts_oid.rec.d16[0]);
+ L0_uart0_0d0a();
+ L0_uart0_sendstr("ts_oid.rec.d16[1] = ");
+ L0_uart0_ushex(ts_oid.rec.d16[1]);
+ L0_uart0_0d0a();
+ L0_uart0_sendstr("ts_oid.rec.d16[2] = ");
+ L0_uart0_ushex(ts_oid.rec.d16[2]);
+ L0_uart0_0d0a();
+ L0_uart0_sendstr("ts_oid.rec.d16[3] = ");
+ L0_uart0_ushex(ts_oid.rec.d16[3]);
+ L0_uart0_0d0a();
+
+ // /////////
+
+ L0_uart0_sendstr("ts_oid.rec.d32[0] = ");
+ L0_uart0_ulhex(ts_oid.rec.d32[0]);
+ L0_uart0_0d0a();
+ L0_uart0_sendstr("ts_oid.rec.d32[1] = ");
+ L0_uart0_ulhex(ts_oid.rec.d32[1]);
+ L0_uart0_0d0a();
+ // /////////
+
+ L0_uart0_sendstr("ts_oid.oid_type = ");
+ L0_uart0_uchex(ts_oid.oid_type);
+ L0_uart0_0d0a();
+
+
+ if(1)// if(ts_oid.rec.d[0] == 0x60) // 4
{/// Bit43~Bit0:x,y 轴的坐标数据,x 坐标和 y 坐标都是由整数和小数部分
///组成,整数部分 14bit,小数部分 8bit
G.pen_t = 0;
ts_oid.last_time = s_nos_tick.t_1s;
ts_oid.Xint = ts_oid.rec.d16[3]&0x3fff;
+
if(ts_oid.Xint < 300)///取决于图片 fixme: cc
{
ts_oid.oid_x = 1;
@@ -660,13 +704,26 @@ void L1_Oid_readoid(void)
{
if(!OID_DET)
{
-
+ LED1 = ~LED1;
ts_oid.pre_x = ts_oid.X100;
ts_oid.pre_y = ts_oid.Y100;
L0_oid_Recv64();
L2_oid_ParseF1();
//L2_oid_status();
L1_print_rcv("\r\n ");
+ L0_uart0_sendstr("ts_oid.Xint = ");
+ L0_uart0_ushex(ts_oid.Xint);
+ L0_uart0_0d0a();
+ L0_uart0_sendstr("ts_oid.Yint = ");
+ L0_uart0_ushex(ts_oid.Yint);
+ L0_uart0_0d0a();
+ L0_uart0_sendstr("ts_oid.Xdec = ");
+ L0_uart0_ushex(ts_oid.Xdec);
+ L0_uart0_0d0a();
+ L0_uart0_sendstr("ts_oid.Ydec = ");
+ L0_uart0_ushex(ts_oid.Ydec);
+ L0_uart0_0d0a();
+ L0_uart0_sendstr("oid_p");
}
else if((s_nos_tick.t_1s - ts_oid.last_time >= 2)&& (G.pen_t == 0))
{
diff --git a/source/clib/clib.c b/source/clib/clib.c
index b0b4638..bd2ed3d 100644
--- a/source/clib/clib.c
+++ b/source/clib/clib.c
@@ -27,6 +27,29 @@ U8 Lc_strStartsWith(U8 *s1,U8 *s2)
}
return (*s2 == 0);
}
+int Lc_strMidsWith(char *wenben, char *search_word)
+{
+ int i = 0, j = 0, flag = -1;
+ while (i < Lc_strlen(wenben) && j < Lc_strlen(search_word))
+ {
+ if (wenben[i] == search_word[j])
+ { //如果字符相同则两个字符都增加
+ i++;
+ j++;
+ }
+ else
+ {
+ i = i - j + 1; //主串字符回到比较最开始比较的后一个字符
+ j = 0; //字串字符重新开始
+ }
+ if (j == Lc_strlen(search_word))
+ { //如果匹配成功
+ flag = 1; //字串出现
+ break;
+ }
+ }
+ return flag;
+}
int Lc_strlen(const char *str)
@@ -250,11 +273,11 @@ U32 Lc_vU32_avg(U32 *d, U8 n)
return sum / n;
}
//十六进制转换为十进制
-long hexToDec(const char *source)
+int hexToDec(const char *source)
{
- long sum = 0;
+ int sum = 0;
long t = 1;
- int i, len;
+ int i,len;
len = Lc_strlen(source);
for(i=len-1; i>=0; i--)
@@ -264,8 +287,26 @@ long hexToDec(const char *source)
}
return sum;
-}
+}
+long hex2Dec(U8 *source ,U16 len)
+{
+ int i,t,m;
+ long sum=0;
+ for(i=0;i= '0' && ch <= '9')
@@ -283,6 +324,41 @@ int getIndexOfSigns(char ch)
return -1;
}
+
+unsigned char char_to_hex(unsigned char chr)
+{
+ if((chr>='0')&&(chr<='9'))
+ chr = 0x30+(chr-'0');
+ else if((chr>='A')&&(chr<='Z'))//capital
+ chr = 0x41+(chr - 'A');
+ else if((chr>='a')&&(chr<='z'))//little
+ chr = 0x61+(chr-'a');
+ else
+ chr = 0xff;
+ return chr;
+}
+
+unsigned char hex_to_char(unsigned char hex)
+{
+ if((hex>=0x30)&&(hex<=0x39))
+ hex = hex-0x30;
+ else if((hex>=0x41)&&(hex<=0x5A)) // capital
+ hex = 'A' + (hex - 0x41);
+ else if((hex>=0x61)&&(hex<=0x7A)) // little case
+ hex = 'a' + (hex - 0x61);
+ else
+ hex = 0xff;
+ return hex;
+}
+void Lc_hextoasc(U8 *buf,U8 *ascii,U16 len)
+{
+ vU16 t = 0,m = 0;
+ for(t = 0;t < len;t ++)
+ {
+ ascii[m] = char_to_hex(buf[t]);
+ }
+}
+
///// 0 1 (1-0)+1
//// 把buf中的数据从[usStart]到[usEnd] 共 usEnd-usStart+1 的数据转换成ascii
/// 0x11 0x22 ---> 0x31 0x31 0x32 0x32 '1' '1' '2' '2'
@@ -293,12 +369,12 @@ void Lc_hex2ascii(U8 *buf,U8 *ascii,U16 len)
{
#if 1
- ascii[m] = cguHex2Char[D_uc_high(buf[t])][1];
- m ++;
+ //ascii[m] = cguHex2Char[D_uc_high(buf[t])][1];
+ //m ++;
ascii[m] = cguHex2Char[D_uc_low (buf[t])][1];
m ++;
- ascii[m] =0x20;
- m ++;
+ //ascii[m] =0x20;
+ //m ++;
#else
ascii[m] = 0x30+m;
diff --git a/source/clib/clib.h b/source/clib/clib.h
index add9a20..b1c0f3d 100644
--- a/source/clib/clib.h
+++ b/source/clib/clib.h
@@ -30,7 +30,12 @@ typedef struct
extern U8 Lc_Hex2Char(U8 CharStr);
extern int Lc_strlen(const char *str);
extern U8* Lc_strcpy(U8* dst,const char* str);
-extern long hexToDec(const char *source);
+extern int hexToDec(U8 *source );
+extern long hex2Dec(U8 *source ,U16 len);
+extern void HexToStr(BYTE *pbDest, BYTE *pbSrc, int nLen);
+extern int Lc_strMidsWith(char *wenben, char *search_word);
+
+
extern int getIndexOfSigns(char ch);
//extern void Lc_int2str(U32 ui_in,UN_TYPE len,UN_TYPE point,char *d);
diff --git a/source/msp/msp_uart0.C b/source/msp/msp_uart0.C
index 014d7b4..a4d2b14 100644
--- a/source/msp/msp_uart0.C
+++ b/source/msp/msp_uart0.C
@@ -129,8 +129,9 @@ void INTERRUPT_UART(void) D_SERVE_UART
L0_uart0_IntRIClear(); //清除接收中断标志
ts_uart[uNum0].t->reg = SBUF;
//ts_uart[uNum0].tp_handler(ts_uart[uNum0].t);
- L1_s2b_PH4(ts_uart[uNum0].t);
- L0_timer3_restart();
+
+ //L1_s2b_PH4(ts_uart[uNum0].t);
+ //L0_timer3_restart();
}
if(L0_uart0_IntTI()) //如果是U0发送中断
{
diff --git a/source/msp/msp_uart2.C b/source/msp/msp_uart2.C
index 3a6232e..4da63e6 100644
--- a/source/msp/msp_uart2.C
+++ b/source/msp/msp_uart2.C
@@ -149,7 +149,7 @@ void INTERRUPT_uart2(void) interrupt 8 ///D_SERVE_uart2// using 2
//L1_s2b_0d0a(&s_uart2_at);
L1_s2b_gm35(L0_uart2_get());
}
- if(L0_uart2_IntTI()) //如果是U0发送中断
+ if(L0_uart2_IntTI()) //如果是U2发送中断
{
L0_uart2_IntTIClear(); //清除发送中断标志
if(ts_uart[uNum2].p->max != ts_uart[uNum2].p->now)
diff --git a/source/msp/msp_uart3.c b/source/msp/msp_uart3.c
index 3b63afe..d83fcbc 100644
--- a/source/msp/msp_uart3.c
+++ b/source/msp/msp_uart3.c
@@ -88,15 +88,32 @@ void L0_uart3_init(void)
T2H = 0xFF; //设置定时初始值
AUXR |= 0x10; //定时器2开始计时
#endif
+
+#if 0
+
//115200
+ //U16 val = D_BRT_COUNT(1,D_sys_MainFre,D_uart3_BRT);
+
S3CON = 0x10; //8位数据,可变波特率
S3CON |= 0x40; //串口3选择定时器3为波特率发生器
T4T3M |= 0x02; //定时器时钟1T模式
- T3L = 0xD0; //设置定时初始值
- T3H = 0xFF; //设置定时初始值
+ T3L = 0xD0; //设置定时初始值
+ T3H = 0xFF; //设置定时初始值
+ //T3L = val; //设定定时初值
+ //T3H = val >> 8; //设定定时初值
T4T3M |= 0x08; //定时器3开始计时
}
+#endif
+
+// 512000
+ S3CON = 0x10; //8位数据,可变波特率
+ S3CON &= 0xBF; //串口3选择定时器2为波特率发生器
+ AUXR |= 0x04; //定时器时钟1T模式
+ T2L = 0xF5; //设置定时初始值
+ T2H = 0xFF; //设置定时初始值
+ AUXR |= 0x10; //定时器2开始计时
+}
void L0_uart3_buf_init(void)
{
@@ -106,7 +123,7 @@ void L0_uart3_buf_init(void)
ts_uart[uNum3].t = &s_uart3_rec;
ts_uart[uNum3].t->head = 0;
ts_uart[uNum3].t->ok = 0;
- ts_uart[uNum3].tp_handler = L1_s2b_PH4;
+ //ts_uart[uNum3].tp_handler = L1_s2b_PH4;
ts_uart[uNum3].ack = (U8*)&s_uart3_ack;
L0_uart3_init();
//D_uart3_ES_INT_OPEN(); //打开串口中断
@@ -119,16 +136,18 @@ void L0_uart3_buf_init(void)
void L0_uart3_sendArray(U8 * buf, U16 len)
{
-//#if (D_UART3_485_TYPE != TYPE_485_NONE)
-// D_UART3_485_TX() //切换到输出状态
-//#endif
- L0_uartN_sendArray(uNum3,buf,len);
+
+#if (D_UART0_485_TYPE != TYPE_485_NONE)
+ D_UART0_485_TX() //切换到输出状态
+#endif
+ L0_uartN_sendArray(uNum3,buf,len);
+
}
/*************************************************
UART 中断
*************************************************/
-#define D_SERVE_UART3 interrupt 17
+//#define D_SERVE_UART3 interrupt 17
void INTERRUPT_UART3(void) D_SERVE_UART3// using 3
{
NOP(); NOP(); NOP();
@@ -136,33 +155,33 @@ void INTERRUPT_UART3(void) D_SERVE_UART3// using 3
{
L0_uart3_IntRIClear(); //清除接收中断标志
ts_uart[uNum3].t->reg = L0_uartN_get(uNum3);
- ts_uart[uNum3].tp_handler(ts_uart[uNum3].t);
+ //ts_uart[uNum3].tp_handler(ts_uart[uNum3].t);
+ //L1_s2b_PH4(ts_uart[uNum3].t);
//L0_timer4_start();
}
- if(L0_uart3_IntTI())
+ if(L0_uart3_IntTI()) //如果是U0发送中断
{
- if(L0_uart3_IntTI()) //如果是U0发送中断
+ L0_uart3_IntTIClear(); //清除发送中断标志
+ if(ts_uart[uNum3].p->max != ts_uart[uNum3].p->now)
{
- L0_uart3_IntTIClear(); //清除发送中断标志
- if(ts_uart[uNum3].p->max != ts_uart[uNum3].p->now)
- {
- L0_uartN_set(uNum3,ts_uart[uNum3].p->p[ts_uart[uNum3].p->now]);
- ts_uart[uNum3].p->now ++;
- }
- else
- {
- ts_uart[uNum3].p->ok = D_ready;
- ts_uart[uNum3].p->max = 0;
- ts_uart[uNum3].p->now = 0;//可以发送下一个数据
+ S3BUF = ts_uart[uNum3].p->p[ts_uart[uNum3].p->now];
+ //L0_uartN_set(uNum3,ts_uart[uNum3].p->p[ts_uart[uNum3].p->now]);
+ ts_uart[uNum3].p->now ++;
+ }
+ else
+ {
+ ts_uart[uNum3].p->ok = D_ready;
+ ts_uart[uNum3].p->max = 0;
+ ts_uart[uNum3].p->now = 0;//可以发送下一个数据
#if (D_UART3_485_TYPE != TYPE_485_NONE)
D_UART3_485_RX() //切换到接收状态
#endif
}
+
}
- }
- NOP(); NOP(); NOP();
+ NOP(); NOP(); NOP();
}
-
+#if 0
void timer4_isrHanddle(void) D_SERVE_TIMER4
{
struct _tp_handler_x *p = &s_uart3_rec;
@@ -181,5 +200,5 @@ void timer4_isrHanddle(void) D_SERVE_TIMER4
}
L0_timer4_stop();
}
-
+#endif
diff --git a/source/msp/msp_uart_x.h b/source/msp/msp_uart_x.h
index 05d7713..2edd11a 100644
--- a/source/msp/msp_uart_x.h
+++ b/source/msp/msp_uart_x.h
@@ -70,7 +70,7 @@ typedef struct _ts_uart0_send_buf_
vU16 max; /// 当前buf的最大值,也就是需要发送的长度
vU32 over; /// 结束等待标志,over累加到某个值时,结束等待
vU8 ok; /// 发送完成标志
- vU8 buf[D_UART_send_buf_max + 1];
+ vU8 buf[D_UART_send_buf_max + 6];
/// U8 bufhex[D_UART_send_buf_max*3];
/// U8 buf2[D_send_buf2_max];
vU8 buf3[D_UART_send_buf2_max];
diff --git a/source/msp/nouse/msp_uart3.c b/source/msp/nouse/msp_uart3.c
deleted file mode 100644
index 4a05f9d..0000000
--- a/source/msp/nouse/msp_uart3.c
+++ /dev/null
@@ -1,184 +0,0 @@
-//////////////////////////////////////////////////////////////////////////
-/// COPYRIGHT NOTICE
-/// Copyright (c) 2015, 传控科技
-/// All rights reserved.
-///
-/// @file main.c
-/// @brief main app
-///
-///(本文件实现的功能的详述)
-///
-/// @version 1.1 CCsens technology
-/// @author CC
-/// @date 20150102
-///
-///
-/// 修订说明:最初版本
-/// Modified by:
-/// Modified date:
-/// Version:
-/// Descriptions:
-// 20160413 CC-ACC-VH02
-// 连接至 J22 RXD0 TXD0
-//P5_DIR &= ~BITN1; //p5.1输出TXD
-//P5_DIR |= BITN0; //p5.0输入RXD
-//P5_SEL0 &= ~(BITN0 +BITN1); //设置P5.0 P5.1为UART0 RXD TXD
-//P5_SEL1 |= BITN0 +BITN1;
-
-/*****************************************************************************
-update by cc @201700110
-针对多串口 和 单一串口 有区别 每个串口是独立的还是分开的有讲究 程序是复杂的还是软件应用简单是
-个需要平衡的事情.
-
-clib/clib.c:
-公用的函数 和硬件无关
-放置串行模式(串口等其他通讯总线类的输出)输出的函数,
-一些覆盖模式输出的(lcd等固屏输出的)的也可使用
- void Lc_print(void (*L0pf_send_uc)(char ww), char *dat,...)
------------------------------------------------------------------------------------------
-uartcom/Uprotocol2app
- 协议到应用
- 为了适应不同的通讯协议需要不同的uart口来对应 和应用相关
-
-typedef struct _ts_lcm_pro_; 应用协议包的定义? LCM的协议------------
- L3_UARTcom0_exp_protocol 解析应用协议
------------------------------------------------------------------------------------------
-uartcom/urec2protocol: 接收到的数据放入到指向特定协议的缓存中,和协议的格式有关 一般分为 标头式或者标尾式
-公用的串口通讯定义
- struct _s_uart_rec_ 的公共协议包(关键的结构体)的声明------struct _s_uart_rec_
- void L1_uart_2buf(struct _s_uart_rec_ *p)串行数据保存到指向特定协议的缓冲中
---------------------------------------------------------------------------------------------
-msp/uartx.c 底层代码 和cpu相关 缓存发送也放在里面
- L0_UART0_Init
- UART0_IRQHandler
- L0_Usend_uc------UserDef
------------------------------------------------------------------------------------------
-********************************************************************************/
-#include "../msp/msp_uart3.h"
-#include "../msp/time.h"
-#include
-
-static volatile Ts_uart_send_buf idata ts_uart3_send_shop;
-struct _tp_handler_x s_uart3_rec;
-TS_PH4_modbus s_uart3_ack;
-
-void L0_uart3_init(void)
-{
-//#if(MainFre_11M == D_sys_MainFre) //115200bps@11.0592MHz
-// S3CON = 0x10; //8位数据,可变波特率
-// S3CON |= 0x40; //串口3选择定时器3为波特率发生器
-// T4T3M |= 0x02; //定时器3时钟为Fosc,即1T
-// T3L = 0xE8; //设定定时初值
-// T3H = 0xFF; //设定定时初值
-// T4T3M |= 0x08; //启动定时器3
-
-//#elif (MainFre_22M == D_sys_MainFre) //115200bps@22.1184MHz
-// S3CON = 0x10; //8位数据,可变波特率
-// S3CON |= 0x40; //串口3选择定时器3为波特率发生器
-// T4T3M |= 0x02; //定时器3时钟为Fosc,即1T
-// T3L = 0xD0; //设定定时初值
-// T3H = 0xFF; //设定定时初值
-// T4T3M |= 0x08; //启动定时器3
-//#endif
-#if 0
- S3CON = 0x10; //8位数据,可变波特率
- S3CON &= 0xBF; //串口3选择定时器2为波特率发生器
- AUXR |= 0x04; //定时器时钟1T模式
- T2L = 0xD0; //设置定时初始值
- T2H = 0xFF; //设置定时初始值
- AUXR |= 0x10; //定时器2开始计时
-#endif
-//512000
- S3CON = 0x10; //8位数据,可变波特率
- S3CON |= 0x40; //串口3选择定时器3为波特率发生器
- T4T3M &= 0xFD; //定时器时钟12T模式
- T3L = 0xFF; //设置定时初始值
- T3H = 0xFF; //设置定时初始值
- T4T3M |= 0x08; //定时器3开始计时
-}
-
-void L0_uart3_buf_init(void)
-{
- ts_uart[uNum3].p = &ts_uart3_send_shop;
- ts_uart[uNum3].p->now = 0;
- ts_uart[uNum3].p->ok = D_ready;
- ts_uart[uNum3].t = &s_uart3_rec;
- ts_uart[uNum3].t->head = 0;
- ts_uart[uNum3].t->ok = 0;
- ts_uart[uNum3].tp_handler = L1_s2b_PH4;
- ts_uart[uNum3].ack = (U8*)&s_uart3_ack;
- L0_uart3_init();
- //D_uart3_ES_INT_OPEN(); //打开串口中断
- D_uart3_ES_INT(1); //打开串口中断
-
-#if (D_UART3_485_TYPE != TYPE_485_NONE)
- D_UART3_485_RX() //默认处于接收状态
-#endif
-}
-
-void L0_uart3_sendArray(U8 * buf, U16 len)
-{
-//#if (D_UART3_485_TYPE != TYPE_485_NONE)
-// D_UART3_485_TX() //切换到输出状态
-//#endif
- L0_uartN_sendArray(uNum3,buf,len);
-}
-
-/*************************************************
-UART 中断
-*************************************************/
-#define D_SERVE_UART3 interrupt 17
-void INTERRUPT_UART3(void) D_SERVE_UART3// using 3
-{
- NOP(); NOP(); NOP();
- if(L0_uart3_IntRI()) //如果是U0接收中断
- {
- L0_uart3_IntRIClear(); //清除接收中断标志
- ts_uart[uNum3].t->reg = L0_uartN_get(uNum3);
- ts_uart[uNum3].tp_handler(ts_uart[uNum3].t);
- //L0_timer4_start();
- }
- if(L0_uart3_IntTI())
- {
- if(L0_uart3_IntTI()) //如果是U0发送中断
- {
- L0_uart3_IntTIClear(); //清除发送中断标志
- if(ts_uart[uNum3].p->max != ts_uart[uNum3].p->now)
- {
- L0_uartN_set(uNum3,ts_uart[uNum3].p->p[ts_uart[uNum3].p->now]);
- ts_uart[uNum3].p->now ++;
- }
- else
- {
- ts_uart[uNum3].p->ok = D_ready;
- ts_uart[uNum3].p->max = 0;
- ts_uart[uNum3].p->now = 0;//可以发送下一个数据
-#if (D_UART3_485_TYPE != TYPE_485_NONE)
- D_UART3_485_RX() //切换到接收状态
-#endif
- }
- }
- }
- NOP(); NOP(); NOP();
-}
-
-void timer4_isrHanddle(void) D_SERVE_TIMER4
-{
- struct _tp_handler_x *p = &s_uart3_rec;
- if((p->head == 1) && (p->num >= D_s_modbus_min))
- {
- p->head = 0;
- crc16(p->crc,p->buf,p->num - 2); //校验CRC
- if(p->crc[0] == p->buf[p->num-2] && p->crc[1] == p->buf[p->num-1])
- {
- if(p->ok == 0)
- {
- p->ok = 1;
- }
- }
- //LED0 ^= 1;
- }
- L0_timer4_stop();
-}
-
-
diff --git a/source/msp/nouse/msp_uart3.h b/source/msp/nouse/msp_uart3.h
deleted file mode 100644
index fd535d4..0000000
--- a/source/msp/nouse/msp_uart3.h
+++ /dev/null
@@ -1,93 +0,0 @@
-//////////////////////////////////////////////////////////////////////////
-/// COPYRIGHT NOTICE
-/// Copyright (c) 2015, 传控科技
-/// All rights reserved.
-///
-/// @file main.c
-/// @brief main app
-///
-///(本文件实现的功能的详述)
-///
-/// @version 1.1 CCsens technology
-/// @author CC
-/// @date 20150102
-///
-///
-/// 修订说明:最初版本
-/// Modified by:
-/// Modified date:
-/// Version:
-/// Descriptions:
-//////////////////////////////////////////////////////////////////////////
-/*****************************************************************************
-update by cc @201700110
-针对多串口 和 单一串口 有区别 每个串口是独立的还是分开的有讲究 程序是复杂的还是软件应用简单是
-个需要平衡的事情.
-
-clib/clib.c:
-公用的函数 和硬件无关
-放置串行模式(串口等其他通讯总线类的输出)输出的函数,
-一些覆盖模式输出的(lcd等固屏输出的)的也可使用
- void Lc_print(void (*L0pf_send_uc)(char ww), char *dat,...)
------------------------------------------------------------------------------------------
-uartcom/Uprotocol2app
- 协议到应用
- 为了适应不同的通讯协议需要不同的uart口来对应 和应用相关
-
-typedef struct _ts_lcm_pro_; 应用协议包的定义? LCM的协议------------
- L3_UARTcom0_exp_protocol 解析应用协议
------------------------------------------------------------------------------------------
-uartcom/urec2protocol: 接收到的数据放入到指向特定协议的缓存中,和协议的格式有关 一般分为 标头式或者标尾式
-公用的串口通讯定义
- struct _s_uart_rec_ 的公共协议包(关键的结构体)的声明------struct _s_uart_rec_
- void L1_uart_2buf(struct _s_uart_rec_ *p)串行数据保存到指向特定协议的缓冲中
---------------------------------------------------------------------------------------------
-msp/uartx.c 底层代码 和cpu相关 缓存发送也放在里面
- L0_uart3_Init
- uart3_IRQHandler
- L0_Usend_uc------UserDef
------------------------------------------------------------------------------------------
-********************************************************************************/
-
-
-#ifndef _uart3_H
-#define _uart3_H
-
-#include "../bsp/bsp_config.h"
-#include "../tpc/modbus.h"
-#include "msp_uart_x.h"
-
-#define uNum3 2
-
-//#define S4SM0 BITN7
-#define D_uart3_ES_INT(x) (x) ? (BITN_1(IE2,ES3)) : (BITN_0(IE2,ES3))
-//#define D_uart3_ES_INT_CLOSE() BITN_0(IE2,ES3)
-//#define D_uart3_ES_INT_OPEN() BITN_1(IE2,ES3)
-#define L0_uart3_IntRI() (S3CON & S3RI)//BITN_G(SCON,U0RI)
-#define L0_uart3_IntTI() (S3CON & S3TI)//BITN_G(SCON,U0TI)
-#define L0_uart3_IntRIClear(); BITN_0(S3CON,S3RI)
-#define L0_uart3_IntTIClear(); BITN_0(S3CON,S3TI)
-#define L0_uart3_set(x) S3BUF = (x);
-#define L0_uart3_get() (S3BUF)
-
-
-//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
-
-extern void L0_uart3_buf_init(void);
-extern void L0_uart3_sendArray(U8 * buf, U16 len);
-
-#define L0_uart3_uc(X) L0_uartN_uc(uNum3,X)
-#define L0_uart3_us(X) L0_uartN_us(uNum3,X)
-#define L0_uart3_ul(X) L0_uartN_ul(uNum3,X)
-#define L0_uart3_0d0a() L0_uartN_0d0a(uNum3)
-#define L0_uart3_uchex(X) L0_uartN_uchex(uNum3,X)
-#define L0_uart3_ushex(X) L0_uartN_ushex(uNum3,X)
-#define L0_uart3_ulhex(X) L0_uartN_ulhex(uNum3,X)
-#define L0_uart3_sendstr(buf) L0_uartN_sendstr(uNum3,buf)
-#define L1_uart3_uchexArray(buf) L1_uartN_uchexArray(uNum3,buf)
-
-extern TP_Handler_X s_uart3_rec;
-extern TS_PH4_modbus s_uart3_ack;
-
-#endif //#ifndef _uart3_H
-
diff --git a/source/tpc/ccmodbus.h b/source/tpc/ccmodbus.h
index f10ae56..30e1e1e 100644
--- a/source/tpc/ccmodbus.h
+++ b/source/tpc/ccmodbus.h
@@ -109,7 +109,7 @@ typedef struct
extern U8 L3_pack_ccmodbus(TS_PH3_ccmodbus *pccmodbus, CCMD_SLAVER_INFO *slaver_info);
-//extern U16 L3_ccmodbus_slaver_ack(TS_PH3_ccmodbus *pccmodbus,TS_PH3_ccmodbus *pModbusAck);
+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(TS_Handle_PH3 *p);// reentrant;
diff --git a/source/tpc/modbus.h b/source/tpc/modbus.h
index 5389a00..7ea48e6 100644
--- a/source/tpc/modbus.h
+++ b/source/tpc/modbus.h
@@ -101,7 +101,8 @@ typedef struct
}TS_Handle_PH4;
#endif
extern U8 L3_pack_modbus(TS_PH4_modbus *pmodbus, MD_SLAVER_INFO *slaver_info);
-//extern U8 L3_pack_modbusack(TS_PH4_modbus *pmodbus ,U8 slaver, U8 oper, U8 bufsize);
+
+
extern U16 L3_modbus_slaver_ack(TS_PH4_modbus *pmodbus,TS_PH4_modbus *pModbusAck);
extern void L3_modbus_master_handler(TS_PH4_modbus *pmodbus,MD_SLAVER_INFO *p_slaver_info);
extern void L1_s2b_PH4(struct _tp_handler_x *p);
diff --git a/source/tpc/tpc_x.h b/source/tpc/tpc_x.h
index 9440fc6..1f8335d 100644
--- a/source/tpc/tpc_x.h
+++ b/source/tpc/tpc_x.h
@@ -1,4 +1,4 @@
-#ifndef TPC_CONFIG_H
+ #ifndef TPC_CONFIG_H
#define TPC_CONFIG_H
#include "../bsp/bsp_config.h"