Browse Source

edit:修复通道数据出错bug

wulianwei 2 weeks ago
parent
commit
5e0c5ba625
9 changed files with 172 additions and 118 deletions
  1. 99 86
      code/device/lwip.c
  2. 2 0
      code/device/lwip.h
  3. 7 5
      code/device/touch.c
  4. 5 5
      code/hlx/tr_led.c
  5. 34 17
      code/hlx/tr_queue_handler.c
  6. 17 2
      code/hlx/tr_timer.c
  7. 2 0
      code/hlx/tr_timer.h
  8. 2 1
      main.c
  9. 4 2
      nim_config.h

+ 99 - 86
code/device/lwip.c

@@ -16,7 +16,6 @@
 
 #define MAX_SIZE                          4096
 
-
 static err_t tcp_accept_handle(void *arg, struct tcp_pcb *pcb, err_t err);
 static err_t tcp_recv_handle(void *arg, struct tcp_pcb *pcb, struct pbuf *p,
                              err_t err);
@@ -25,14 +24,20 @@ err_t tcp_send_data(struct tcp_pcb *pcb, struct pbuf *p);
 err_t queue_send_data(struct pbuf *p);
 
 static struct udp_pcb *gui_udp_pcb;
-static struct tcp_pcb *tcp_server_pcb ;
+static struct tcp_pcb *tcp_server_pcb;
 static struct tcp_pcb *cur_conn = NULL; // 当前连接
-
+static unsigned int ipAddr = 0;
+void init_ip(void);
 void lwip_device_init(void)
 {
-    unsigned char macArray[6] = MAC_ADDRESS;
     EthernetInit(); //以太网外设配置
-    unsigned int ipAddr = 0;
+    init_ip();
+    //udp_bind(gui_udp_pcb, IP_ADDR_ANY, 3000);
+}
+
+void init_ip(void)
+{
+    unsigned char macArray[6] = MAC_ADDRESS;
     unsigned int retry_count = 0;
     while (ipAddr == 0)
     {
@@ -40,7 +45,7 @@ void lwip_device_init(void)
         ipAddr = lwIPInit(0, macArray, STATIC_IP_ADDRESS, STATIC_NET_MASK, 0,
         IPADDR_USE_STATIC);
 #else
-    ipAddr = lwIPInit(0, macArray, 0, 0, 0, IPADDR_USE_DHCP);
+        ipAddr = lwIPInit(0, macArray, 0, 0, 0, IPADDR_USE_DHCP);
 #endif
         if (retry_count++ > 5)
         {
@@ -48,14 +53,24 @@ void lwip_device_init(void)
             break;
         }
     }
-
     ConsolePrintf("lwIP HostIP:%d.%d.%d.%d\n", (ipAddr >> (0 * 8)) & 0xFF,
                   (ipAddr >> (1 * 8)) & 0xFF, (ipAddr >> (2 * 8)) & 0xFF,
                   (ipAddr >> (3 * 8)) & 0xFF);
+    if (ipAddr != 0)
+    {
+        if (gui_udp_pcb == NULL)
+        {
+            gui_udp_pcb = udp_new();
+            lwip_udp_connect(gui_udp_pcb, UI_IP_ADDRESS, UI_UDP_PORT);
+        }
+        if (tcp_server_pcb == NULL)
+        {
+            tcp_server_pcb = tcp_new();
+            lwip_tcp_init(TCP_SERVER_PORT);
+        }
 
-    gui_udp_pcb = udp_new();
-    udp_bind(gui_udp_pcb, IP_ADDR_ANY, 3000);
-    lwip_udp_connect(gui_udp_pcb, UI_IP_ADDRESS, UI_UDP_PORT);
+
+    }
 }
 
 /**
@@ -66,33 +81,34 @@ err_t lwip_tcp_init(int port)
     err_t err;
     //struct tcp_pcb *pcb;
 
-    tcp_server_pcb  = tcp_new();
-    if (tcp_server_pcb  == NULL) {
-       ConsolePuts("tcp new 空间不足", -1);
-       return ERR_MEM; // 内存不足
+    if (tcp_server_pcb == NULL)
+    {
+        ConsolePuts("tcp new 空间不足", -1);
+        return ERR_MEM; // 内存不足
     }
-    err = tcp_bind(tcp_server_pcb , IP_ADDR_ANY, port);
-    if (err != ERR_OK) {
-       ConsolePuts("tcp 绑定断开失败", -1);
-       return err;
+    err = tcp_bind(tcp_server_pcb, IP_ADDR_ANY, port);
+    if (err != ERR_OK)
+    {
+        ConsolePuts("tcp 绑定断开失败", -1);
+        return err;
     }
-    tcp_server_pcb  = tcp_listen(tcp_server_pcb );
-    if(tcp_server_pcb == NULL)
+    tcp_server_pcb = tcp_listen(tcp_server_pcb);
+    if (tcp_server_pcb == NULL)
     {
         ConsolePuts("tcp 监听失败", -1);
     }
     /* initialize callback arg and accept callback */
-    tcp_arg(tcp_server_pcb , NULL);
-    tcp_accept(tcp_server_pcb , tcp_accept_handle);
+    tcp_arg(tcp_server_pcb, NULL);
+    tcp_accept(tcp_server_pcb, tcp_accept_handle);
     return ERR_OK;
 }
 
 // 连接错误回调(可选)
-static void tcp_server_conn_err(void *arg, err_t err) {
-  ConsolePrintf("TCP 连接错误:%s\n", lwip_strerr(err));
+static void tcp_server_conn_err(void *arg, err_t err)
+{
+    ConsolePrintf("TCP 连接错误:%s\n", lwip_strerr(err));
 }
 
-
 /**
  * 链接监听函数.
  */
@@ -139,7 +155,7 @@ static err_t tcp_recv_handle(void *arg, struct tcp_pcb *pcb, struct pbuf *p,
     }
     cur_conn = pcb;
     //tcp_send_data(pcb ,p);
-    if(p!=NULL)
+    if (p != NULL)
     {
         err_send = queue_send_data(p);
     }
@@ -184,7 +200,8 @@ err_t tcp_send_data(struct tcp_pcb *pcb, struct pbuf *p)
         len = p->len;
         for (i = 0, j = 0; i < len; i++, j++, cnt++)
         {
-            if(cnt>=MAX_SIZE) break;
+            if (cnt >= MAX_SIZE)
+                break;
             mydata[cnt] = data[j];
         }
         p = p->next;
@@ -199,13 +216,13 @@ err_t tcp_send_data(struct tcp_pcb *pcb, struct pbuf *p)
      *send the data in buffer over network with
      * tcp header attached
      */
-    err = tcp_write(pcb, mydata, tot_len , TCP_WRITE_FLAG_COPY);
+    err = tcp_write(pcb, mydata, tot_len, TCP_WRITE_FLAG_COPY);
     return err;
 }
 
 void lwip_tcp_send_gui(unsigned char *data, int len)
 {
-    tcp_write(cur_conn, data, len , TCP_WRITE_FLAG_COPY);
+    tcp_write(cur_conn, data, len, TCP_WRITE_FLAG_COPY);
     tcp_output(cur_conn);
 }
 
@@ -218,10 +235,10 @@ err_t queue_send_data(struct pbuf *p)
     unsigned int len = 0;
     do
     {
-        char* data = (char*) p->payload;
+        char *data = (char*) p->payload;
         len = p->len;
         ConsolePuts("\r\ntcp rec data:\r\n", -1);
-        if(len>0)
+        if (len > 0)
         {
             ConsolePutsHexStr(data, len);
             enqueueFromEthernet(data, len);
@@ -276,8 +293,7 @@ void lwip_udp_sendto(struct udp_pcb *pcb, unsigned int ip, int port,
 
 void lwip_udp_send_gui(unsigned char *data, int len)
 {
-    struct pbuf *pbuf = pbuf_alloc(PBUF_TRANSPORT, len,
-                                          PBUF_REF);
+    struct pbuf *pbuf = pbuf_alloc(PBUF_TRANSPORT, len, PBUF_REF);
     pbuf->payload = data;
     udp_send(gui_udp_pcb, pbuf);
     pbuf_free(pbuf);
@@ -289,18 +305,17 @@ void lwip_udp_send_gui(unsigned char *data, int len)
  */
 void lwip_udp_send_gui_signal(float *data, int flen, char channelFlag)
 {
-    unsigned char head[8]={'T','R',1,3,1,1};
-    int clen = sizeof(float)*flen;
+    unsigned char head[8] = { 'T', 'R', 1, 3, 1, 1 };
+    int clen = sizeof(float) * flen;
     int head_len = sizeof(head);
-    int total_len = head_len+1+clen;
-    head[6] = total_len>>8;
+    int total_len = head_len + 1 + clen;
+    head[6] = total_len >> 8;
     head[7] = total_len;
-    unsigned char* fdata = malloc(total_len);
-    memcpy(fdata,&head,head_len);
+    unsigned char *fdata = malloc(total_len);
+    memcpy(fdata, &head, head_len);
     fdata[head_len] = channelFlag;
-    memcpy(fdata+head_len+1,data,clen);
-    struct pbuf *pbuf = pbuf_alloc(PBUF_TRANSPORT, total_len,
-                                   PBUF_REF);
+    memcpy(fdata + head_len + 1, data, clen);
+    struct pbuf *pbuf = pbuf_alloc(PBUF_TRANSPORT, total_len, PBUF_REF);
     pbuf->payload = fdata;
     udp_send(gui_udp_pcb, pbuf);
     pbuf_free(pbuf);
@@ -311,29 +326,29 @@ void lwip_udp_send_gui_signal(float *data, int flen, char channelFlag)
  * udp 向gui发送数据
  * data 浮点数据指针,  len 数据数量, channelFlag 有效通道
  */
-void lwip_udp_send_gui_signal2(float *data1,float *data2,float *data3,float *data4, char channelFlag, int len)
+void lwip_udp_send_gui_signal2(float *data1, float *data2, float *data3,
+                               float *data4, char channelFlag, int len)
 {
-    unsigned char head[8]={'T','R',1,3,1,1};
-    int clen = sizeof(float)*len*4;
+    unsigned char head[8] = { 'T', 'R', 1, 3, 1, 1 };
+    int clen = sizeof(float) * len * 4;
     int head_len = sizeof(head);
-    int total_len = head_len+1+clen;
-    head[6] = total_len>>8;
+    int total_len = head_len + 1 + clen;
+    head[6] = total_len >> 8;
     head[7] = total_len;
-    unsigned char* const fdata = malloc(total_len);
-    memcpy(fdata,&head,head_len);
+    unsigned char *const fdata = malloc(total_len);
+    memcpy(fdata, &head, head_len);
     fdata[head_len] = channelFlag;
-    unsigned char* cp = fdata+head_len+1;
+    unsigned char *cp = fdata + head_len + 1;
     int i = 0;
-    for(i=0; i<len; i++)
+    for (i = 0; i < len; i++)
     {
-        memcpy(cp+(i*sizeof(float)*4),data1++,sizeof(float));
-        memcpy(cp+(i*sizeof(float)*4)+4,data2++,sizeof(float));
-        memcpy(cp+(i*sizeof(float)*4)+8,data3++,sizeof(float));
-        memcpy(cp+(i*sizeof(float)*4)+12,data4++,sizeof(float));
+        memcpy(cp + (i * sizeof(float) * 4), data1++, sizeof(float));
+        memcpy(cp + (i * sizeof(float) * 4) + 4, data2++, sizeof(float));
+        memcpy(cp + (i * sizeof(float) * 4) + 8, data3++, sizeof(float));
+        memcpy(cp + (i * sizeof(float) * 4) + 12, data4++, sizeof(float));
     }
 
-    struct pbuf *pbuf = pbuf_alloc(PBUF_TRANSPORT, total_len,
-                                   PBUF_REF);
+    struct pbuf *pbuf = pbuf_alloc(PBUF_TRANSPORT, total_len, PBUF_REF);
     pbuf->payload = fdata;
 //    ConsolePuts("signal data:\n", -1);
 //    ConsolePutsHexStr(pbuf->payload, total_len);
@@ -349,17 +364,16 @@ void lwip_udp_send_gui_signal2(float *data1,float *data2,float *data3,float *dat
 void lwip_udp_send_vofa(float *data, int len)
 {
     int i = 0;
-    char tail[4] = {0x00, 0x00, 0x80, 0x7f};
-    int flen = (sizeof(float)+4)*len;
-    unsigned char* fdata = malloc(flen);
-    for(i=0;i<len;i++)
+    char tail[4] = { 0x00, 0x00, 0x80, 0x7f };
+    int flen = (sizeof(float) + 4) * len;
+    unsigned char *fdata = malloc(flen);
+    for (i = 0; i < len; i++)
     {
-        memcpy(fdata+(i*(sizeof(float)+4)),data,sizeof(float));
-        memcpy(fdata+(i*(sizeof(float)+4))+4,tail,sizeof(tail));
+        memcpy(fdata + (i * (sizeof(float) + 4)), data, sizeof(float));
+        memcpy(fdata + (i * (sizeof(float) + 4)) + 4, tail, sizeof(tail));
         data++;
     }
-    struct pbuf *pbuf = pbuf_alloc(PBUF_TRANSPORT, flen,
-                                   PBUF_REF);
+    struct pbuf *pbuf = pbuf_alloc(PBUF_TRANSPORT, flen, PBUF_REF);
     pbuf->payload = fdata;
     ConsolePuts("signal data2:\n", -1);
     ConsolePutsHexStr(pbuf->payload, flen);
@@ -376,19 +390,18 @@ void lwip_udp_send_vofa2(float *data1, float *data2, int len)
 {
     ConsolePuts("lwip send data", -1);
     int i = 0;
-    char tail[4] = {0x00, 0x00, 0x80, 0x7f};
-    int flen = (sizeof(float)*2+4)*len;
-    unsigned char* fdata = malloc(flen);
-    for(i=0;i<len;i++)
+    char tail[4] = { 0x00, 0x00, 0x80, 0x7f };
+    int flen = (sizeof(float) * 2 + 4) * len;
+    unsigned char *fdata = malloc(flen);
+    for (i = 0; i < len; i++)
     {
-        memcpy(fdata+(i*(sizeof(float)*2+4)),data1,sizeof(float));
-        memcpy(fdata+(i*(sizeof(float)*2+4))+4,data2,sizeof(float));
-        memcpy(fdata+(i*(sizeof(float)*2+4))+8,tail,sizeof(tail));
+        memcpy(fdata + (i * (sizeof(float) * 2 + 4)), data1, sizeof(float));
+        memcpy(fdata + (i * (sizeof(float) * 2 + 4)) + 4, data2, sizeof(float));
+        memcpy(fdata + (i * (sizeof(float) * 2 + 4)) + 8, tail, sizeof(tail));
         data1++;
         data2++;
     }
-    struct pbuf *pbuf = pbuf_alloc(PBUF_TRANSPORT, flen,
-                                   PBUF_REF);
+    struct pbuf *pbuf = pbuf_alloc(PBUF_TRANSPORT, flen, PBUF_REF);
 
     pbuf->payload = fdata;
     udp_send(gui_udp_pcb, pbuf);
@@ -400,26 +413,26 @@ void lwip_udp_send_vofa2(float *data1, float *data2, int len)
  * udp 向波形模拟器VOFA发送数据 四通道
  * data1 要发送的通道1数据,data1 要发送的通道2数据,len float数组长度
  */
-void lwip_udp_send_vofa4(float *data1, float *data2,float *data3, float *data4, int len)
+void lwip_udp_send_vofa4(float *data1, float *data2, float *data3, float *data4,
+                         int len)
 {
     int i = 0;
-    char tail[4] = {0x00, 0x00, 0x80, 0x7f};
-    int flen = (sizeof(float)*4+4)*len;
-    unsigned char* fdata = malloc(flen);
-    for(i=0;i<len;i++)
+    char tail[4] = { 0x00, 0x00, 0x80, 0x7f };
+    int flen = (sizeof(float) * 4 + 4) * len;
+    unsigned char *fdata = malloc(flen);
+    for (i = 0; i < len; i++)
     {
-        memcpy(fdata+(i*(sizeof(float)*4+4)),data1,sizeof(float));
-        memcpy(fdata+(i*(sizeof(float)*4+4))+4,data2,sizeof(float));
-        memcpy(fdata+(i*(sizeof(float)*4+4))+8,data3,sizeof(float));
-        memcpy(fdata+(i*(sizeof(float)*4+4))+12,data4,sizeof(float));
-        memcpy(fdata+(i*(sizeof(float)*4+4))+16,tail,sizeof(tail));
+        memcpy(fdata + (i * (sizeof(float) * 4 + 4)), data1, sizeof(float));
+        memcpy(fdata + (i * (sizeof(float) * 4 + 4)) + 4, data2, sizeof(float));
+        memcpy(fdata + (i * (sizeof(float) * 4 + 4)) + 8, data3, sizeof(float));
+        memcpy(fdata + (i * (sizeof(float) * 4 + 4)) + 12, data4,sizeof(float));
+        memcpy(fdata + (i * (sizeof(float) * 4 + 4)) + 16, tail, sizeof(tail));
         data1++;
         data2++;
         data3++;
         data4++;
     }
-    struct pbuf *pbuf = pbuf_alloc(PBUF_TRANSPORT, flen,
-                                   PBUF_REF);
+    struct pbuf *pbuf = pbuf_alloc(PBUF_TRANSPORT, flen, PBUF_REF);
     pbuf->payload = fdata;
 //    ConsolePuts("\nsignal data2:\n", -1);
 //    ConsolePutsHexStr(pbuf->payload, flen);

+ 2 - 0
code/device/lwip.h

@@ -14,6 +14,8 @@
 
 void lwip_device_init(void);
 
+void init_ip(void);
+
 err_t lwip_tcp_init(int port);
 
 void lwip_tcp_send_gui(unsigned char *data, int len);

+ 7 - 5
code/device/touch.c

@@ -6,11 +6,11 @@
  */
 #include "nim_config.h"
 #include "tr_protocol.h"
-extern unsigned int TocuhTime; //触控时间
+extern volatile unsigned int TocuhTime; //触控时间
 
-extern unsigned char TocuhTrigger; //触控触发
+extern volatile unsigned char TocuhTrigger; //触控触发
 
-static char gui_power_status = 0; //gui开机状态,1:开机,0:关机
+static volatile char gui_power_status = 0; //gui开机状态,1:开机,0:关机
 
 void touch_opengui();
 
@@ -32,7 +32,8 @@ void touch_switch(int len)
         ConsolePuts("swith 1", -1);
     }
     else
-    {   TocuhTrigger = 1;
+    {
+        TocuhTrigger = 1;
         TocuhTime = TOUCH_TIME;
         ConsolePuts("swith 0", -1);
     }
@@ -65,8 +66,9 @@ void touch_askgui()
 void touch_opengui()
 {
     ConsolePuts("\n===open gui\n", -1);
-    GPIOPinWrite(SOC_GPIO_0_REGS, 86, GPIO_PIN_HIGH);
+    GPIOPinWrite(SOC_GPIO_0_REGS, 86, GPIO_PIN_HIGH); // GPIO5[5]
     gui_power_status = 1;
+    init_ip();
 }
 //gui断电
 void touch_closegui()

+ 5 - 5
code/hlx/tr_led.c

@@ -21,19 +21,19 @@ void LedInit(void){
    // PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
 
     // 管脚复用配置,配置相应的 GPIO 口功能为普通输入输出口
-    // 底板 LED
-    GPIOBank0Pin0PinMuxSetup();
+    // 核心板 LED2
+    GPIOBank6Pin12PinMuxSetup();
 
     // 设置输出模式
-    GPIODirModeSet(SOC_GPIO_0_REGS, 1, GPIO_DIR_OUTPUT);    // D7  GPIO0[0]
+    GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT);    // LED2  GPIO6[12]
 }
 
 static void LedToggle(void){
     static unsigned char Flag = 0;
     if(Flag == 0){
-        GPIOPinWrite(SOC_GPIO_0_REGS, 1, GPIO_PIN_LOW);    // D7  灭 GPIO0[0]
+        GPIOPinWrite(SOC_GPIO_0_REGS, 109, GPIO_PIN_LOW);    // D7  灭 GPIO0[0]
     }else {
-        GPIOPinWrite(SOC_GPIO_0_REGS, 1, GPIO_PIN_HIGH);   // D7  亮 GPIO0[0]
+        GPIOPinWrite(SOC_GPIO_0_REGS, 109, GPIO_PIN_HIGH);   // D7  亮 GPIO0[0]
     }
     Flag = !Flag;
 }

+ 34 - 17
code/hlx/tr_queue_handler.c

@@ -6,8 +6,7 @@
  */
 #include "tr_queue.h"
 #include <stdio.h>
-#include "device/console.h"
-#include "device/lwip.h"
+#include "nim_config.h"
 #include "algorithm/emg_util.h"
 #include "uartStdio.h"
 #include "usbhspecific.h"
@@ -123,6 +122,11 @@ void handleSign(unsigned char *s, unsigned short sl)
     float *const fd3 = fdata+dataCount*6;;
     float *const fd4 = fdata+dataCount*7;
 
+    float* sd1 = cd1;
+    float* sd2 = cd2;
+    float* sd3 = cd3;;
+    float* sd4 = cd4;
+
     const int FULL = 0x007fffff;
     const float FFULL = (float) FULL;
     struct Frame *fm = NULL;
@@ -134,7 +138,7 @@ void handleSign(unsigned char *s, unsigned short sl)
         *(cd1 + i) = ((float) (origenData1 >> 8) / FFULL) * 5000000+530; //将采集数据转成uV
 
         int origenData2 = fm->d2[0] << 24 | fm->d2[1] << 16 | fm->d2[2] << 8;
-        *(cd2 + i) = ((float) (origenData2 >> 8) / FFULL) * 5000000+570; //将采集数据转成uV
+        *(cd2 + i) = ((float) (origenData2 >> 8) / FFULL) * 5000000+470; //将采集数据转成uV
 
         int origenData3 = fm->d3[0] << 24 | fm->d3[1] << 16 | fm->d3[2] << 8;
         *(cd3 + i) = ((float) (origenData3 >> 8) / FFULL) * 5000000+450; //将采集数据转成uV
@@ -143,28 +147,32 @@ void handleSign(unsigned char *s, unsigned short sl)
         *(cd4 + i) = ((float) (origenData4 >> 8) / FFULL) * 5000000+440; //将采集数据转成uV
 
     }
-    memcpy(fd1, cd1, dataCount);
-    memcpy(fd2, cd2, dataCount);
-    memcpy(fd3, cd3, dataCount);
-    memcpy(fd4, cd4, dataCount);
+//    memcpy(fd1, cd1, dataCount);
+//    memcpy(fd2, cd2, dataCount);
+//    memcpy(fd3, cd3, dataCount);
+//    memcpy(fd4, cd4, dataCount);
     if (fm->sign & 0x01)
     {
         emg_denoised(cd1, dataCount, 1000, fd1);
+        sd1 = fd1;
     }
     if (fm->sign & 0x02)
     {
         emg_denoised(cd2, dataCount, 1000, fd2);
+        sd2 = fd2;
     }
     if (fm->sign & 0x04)
     {
         emg_denoised(cd3, dataCount, 1000, fd3);
+        sd3 = fd3;
     }
     if (fm->sign & 0x08)
     {
         emg_denoised(cd4, dataCount, 1000, fd4);
+        sd4 = fd4;
     }
 
-    lwip_udp_send_gui_signal2(fd1,fd2,fd3,fd4, fm->sign,dataCount);
+    lwip_udp_send_gui_signal2(sd1,sd2,sd3,sd4, fm->sign,dataCount);
     free(fdata);
 }
 
@@ -197,6 +205,11 @@ void handleSign2(unsigned char *s, unsigned short sl)
     float *const fd3 = fdata+dataCount*6;;
     float *const fd4 = fdata+dataCount*7;
 
+    float* sd1 = cd1;
+    float* sd2 = cd2;
+    float* sd3 = cd3;;
+    float* sd4 = cd4;
+
     const int FULL = 0x007fffff;
     const float FFULL = (float) FULL;
     struct Frame *fm = NULL;
@@ -216,38 +229,42 @@ void handleSign2(unsigned char *s, unsigned short sl)
         int origenData4 = fm->d4[0] << 24 | fm->d4[1] << 16 | fm->d4[2] << 8;
         *(cd4 + i) = ((float) (origenData4 >> 8) / FFULL) * 5000000+440; //将采集数据转成mV
     }
-    memcpy(fd1, cd1, dataCount);
-    memcpy(fd2, cd2, dataCount);
-    memcpy(fd3, cd3, dataCount);
-    memcpy(fd4, cd4, dataCount);
+//    memcpy(fd1, cd1, dataCount);
+//    memcpy(fd2, cd2, dataCount);
+//    memcpy(fd3, cd3, dataCount);
+//    memcpy(fd4, cd4, dataCount);
     if (fm->sign & 0x01)
     {
         emg_denoised(cd1, dataCount, 1000, fd1);
+        sd1 = fd1;
     }
     if (fm->sign & 0x02)
     {
         emg_denoised(cd2, dataCount, 1000, fd2);
+        sd2 = fd2;
     }
     if (fm->sign & 0x04)
     {
         emg_denoised(cd3, dataCount, 1000, fd3);
+        sd3 = fd3;
     }
     if (fm->sign & 0x08)
     {
         emg_denoised(cd4, dataCount, 1000, fd4);
+        sd4 = fd4;
     }
-    lwip_udp_send_vofa4(fd1, fd2 , fd3 ,fd4 , dataCount);
+    lwip_udp_send_vofa4(sd1, sd2 , sd3 ,sd4 , dataCount);
     free(fdata);
 
 }
 
 void handleGUI(unsigned char *s, unsigned short sl)
 {
-    ConsolePuts("\n===handleGUI from gui\n", -1);
+    ConsolePuts("\n===handle from gui\n", -1);
     ConsolePutsHexStr(s, sl);
     unsigned char check = 0;
     int a = ProtocolGetOption(s,sl,99,&check);
-    if(a == 1)
+    if(check == 1)
     {
         unsigned char udpAdd[8] = {0};
         trProtocol verPro;
@@ -258,11 +275,11 @@ void handleGUI(unsigned char *s, unsigned short sl)
         ProtocolSetOptionChar(&verPro, 100, 1);
         ProtocolSetPayload(&verPro,sizeof(udpAdd),udpAdd);
         ProtocolPackage(&verPro);
-        ConsolePuts("\n===handleGUI to gui version\n", -1);
+        ConsolePuts("\n===dsp to gui version\n", -1);
         ConsolePutsHexStr(verPro.message, verPro.length);
         lwip_tcp_send_gui(verPro.message,verPro.length);
     }
-    else if(a == 3)
+    else if(check == 3)
     {
         touch_closegui();
     }

+ 17 - 2
code/hlx/tr_timer.c

@@ -9,9 +9,11 @@
 #include "nim_config.h"
 
 // 定时器
-unsigned int TocuhTime = TOUCH_TIME; //触控时间
+unsigned volatile int TocuhTime = TOUCH_TIME; //触控时间
 
-unsigned char TocuhTrigger = 0; //触控触发
+unsigned volatile char TocuhTrigger = 0; //触控触发
+
+unsigned int WatchTime = WATCH_TIME; //触控时间
 
 // 定时器
 static unsigned int BaseTime = 0;
@@ -27,6 +29,11 @@ void BaseTimeIncremental(void)
             TocuhTrigger = 0;
         }
     }
+    if(!(WatchTime--))
+    {
+        WatchTime = WATCH_TIME;
+        ConsolePuts("\n main fun not go out \n", -1);
+    }
 }
 
 unsigned int GetPassedTime(struct TimerStruct * timer)
@@ -67,3 +74,11 @@ void DelayMs(unsigned int ms)
     while(GetPassedTime(&timer) < ms){}
 }
 
+/**
+ * 初始化看门时间
+ */
+void InitWatchTime()
+{
+    WatchTime = WATCH_TIME;
+}
+

+ 2 - 0
code/hlx/tr_timer.h

@@ -23,4 +23,6 @@ void ClearTimer(struct TimerStruct * timer);
 // ÑÓʱº¯Êý
 void DelayMs(unsigned int ms);
 
+void InitWatchTime();
+
 #endif /* USER_INCLUDES_TR_TIMER_H_ */

+ 2 - 1
main.c

@@ -3,6 +3,7 @@
 #include "lwiplib.h"
 #include "lwipopts.h"
 #include "hlx.h"
+#include "tr_timer.h"
 
 
 
@@ -17,6 +18,7 @@ int main()
     DeviceInit();
     for (;;)
     {
+        InitWatchTime();
         touch_task();
         HlxMain();
     }
@@ -50,7 +52,6 @@ void DeviceInit()
     ConsolePuts("\r\n ============NIM DSP START===========.\r\n", -1);
     touch_deivce_init();
     lwip_device_init(); //以太网模块初始化
-    lwip_tcp_init(TCP_SERVER_PORT); //开启本设备TCP服务器
     HlxInit();
 }
 

+ 4 - 2
nim_config.h

@@ -37,15 +37,17 @@
 
 #define TCP_SERVER_PORT                   2000
 
-//#define STATIC_IP_ADDRESS               0xC0A80164  //192.168.1.100
+#define STATIC_IP_ADDRESS               0xC0A80A02  //192.168.10.2
 
 #define STATIC_NET_MASK               0xFFFFFF00  //255.255.255.0
 
-#define UI_IP_ADDRESS               0xC0A80196  //192.168.1.10
+#define UI_IP_ADDRESS               0xC0A80A89  //192.168.10.137
 
 #define UI_UDP_PORT                 8000
 
 #define TOUCH_TIME                  3000    //´ĽżŘĘąźä 3s
 
+#define WATCH_TIME                  10000    //ż´ĂĹĘąźä 10s
+
 
 #endif /* NIM_CONFIG_H_ */