|
|
@@ -25,6 +25,8 @@ void handleGUI(unsigned char *s, unsigned short sl);
|
|
|
void dataForwardedHandle(unsigned char *s, unsigned short sl, unsigned char da)
|
|
|
{
|
|
|
// printf("进入到数据转发!\r\n");
|
|
|
+ ConsolePuts("\n===dataForwardedHandle\n", -1);
|
|
|
+ ConsolePutsHexStr(s, sl);
|
|
|
if (da == F4_ADDRESS)
|
|
|
{
|
|
|
// 执行发送到F4的逻辑
|
|
|
@@ -33,7 +35,7 @@ void dataForwardedHandle(unsigned char *s, unsigned short sl, unsigned char da)
|
|
|
else if (da == GUI_ADDRESS)
|
|
|
{
|
|
|
// 执行发送到GUI的逻辑
|
|
|
- lwip_udp_send_gui(s, sl);
|
|
|
+ lwip_tcp_send_gui(s, sl);
|
|
|
}
|
|
|
else if (da == UART_ADDRESS)
|
|
|
{
|
|
|
@@ -111,78 +113,59 @@ void handleSign(unsigned char *s, unsigned short sl)
|
|
|
}
|
|
|
|
|
|
int dataCount = sl / FRAME_LEN; //每个通道数据量, 每三个字节代表一个采集信号. 大端模式.
|
|
|
-
|
|
|
- float *const cd1 = malloc(sizeof(float) * dataCount);
|
|
|
- float *const cd2 = malloc(sizeof(float) * dataCount);
|
|
|
- float *const cd3 = malloc(sizeof(float) * dataCount);
|
|
|
- float *const cd4 = malloc(sizeof(float) * dataCount);
|
|
|
-
|
|
|
- static float fd1[COUNT_SIZE] = { 0.0 };
|
|
|
- static float fd2[COUNT_SIZE] = { 0.0 };
|
|
|
- static float fd3[COUNT_SIZE] = { 0.0 };
|
|
|
- static float fd4[COUNT_SIZE] = { 0.0 };
|
|
|
- static float fdgui[COUNT_SIZE * 4] = { 0.0 };
|
|
|
+ float *const fdata = malloc(sizeof(float) * dataCount*CHANNEL_COUNT*2);
|
|
|
+ float *const cd1 = fdata+dataCount*0;
|
|
|
+ float *const cd2 = fdata+dataCount*1;
|
|
|
+ float *const cd3 = fdata+dataCount*2;
|
|
|
+ float *const cd4 = fdata+dataCount*3;
|
|
|
+ float *const fd1 = fdata+dataCount*4;
|
|
|
+ float *const fd2 = fdata+dataCount*5;
|
|
|
+ float *const fd3 = fdata+dataCount*6;;
|
|
|
+ float *const fd4 = fdata+dataCount*7;
|
|
|
|
|
|
const int FULL = 0x007fffff;
|
|
|
const float FFULL = (float) FULL;
|
|
|
+ struct Frame *fm = NULL;
|
|
|
int i = 0;
|
|
|
- static int scount = 0;
|
|
|
for (i = 0; i < dataCount; i++)
|
|
|
{
|
|
|
- struct Frame *fm = (struct Frame*) (s + FRAME_LEN * i);
|
|
|
+ fm = (struct Frame*) (s + FRAME_LEN * i);
|
|
|
int origenData1 = fm->d1[0] << 24 | fm->d1[1] << 16 | fm->d1[2] << 8;
|
|
|
- *(cd1 + i) = ((float) (origenData1 >> 8) / FFULL) * 5000; //将采集数据转成mV
|
|
|
+ *(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) * 5000; //将采集数据转成mV
|
|
|
+ *(cd2 + i) = ((float) (origenData2 >> 8) / FFULL) * 5000000+570; //将采集数据转成uV
|
|
|
|
|
|
int origenData3 = fm->d3[0] << 24 | fm->d3[1] << 16 | fm->d3[2] << 8;
|
|
|
- *(cd3 + i) = ((float) (origenData3 >> 8) / FFULL) * 5000; //将采集数据转成mV
|
|
|
+ *(cd3 + i) = ((float) (origenData3 >> 8) / FFULL) * 5000000+450; //将采集数据转成uV
|
|
|
|
|
|
int origenData4 = fm->d4[0] << 24 | fm->d4[1] << 16 | fm->d4[2] << 8;
|
|
|
- *(cd4 + i) = ((float) (origenData4 >> 8) / FFULL) * 5000; //将采集数据转成mV
|
|
|
+ *(cd4 + i) = ((float) (origenData4 >> 8) / FFULL) * 5000000+440; //将采集数据转成uV
|
|
|
|
|
|
- fd1[scount] = *(cd1 + i);
|
|
|
- fd2[scount] = *(cd2 + i);
|
|
|
- fd3[scount] = *(cd3 + i);
|
|
|
- fd4[scount] = *(cd4 + i);
|
|
|
- scount++;
|
|
|
- if (scount == COUNT_SIZE)
|
|
|
- {
|
|
|
- scount = 0;
|
|
|
- if (fm->sign & 0x01)
|
|
|
- {
|
|
|
- emg_denoised(cd1, COUNT_SIZE, 1000, fd1);
|
|
|
- }
|
|
|
- if (fm->sign & 0x02)
|
|
|
- {
|
|
|
- emg_denoised(cd2, COUNT_SIZE, 1000, fd2);
|
|
|
- }
|
|
|
- if (fm->sign & 0x04)
|
|
|
- {
|
|
|
- emg_denoised(cd3, COUNT_SIZE, 1000, fd3);
|
|
|
- }
|
|
|
- if (fm->sign & 0x08)
|
|
|
- {
|
|
|
- emg_denoised(cd4, COUNT_SIZE, 1000, fd4);
|
|
|
- }
|
|
|
- int m = 0;
|
|
|
- for(m = 0; m<COUNT_SIZE; m++)
|
|
|
- {
|
|
|
- fdgui[m*CHANNEL_COUNT] = fd1[m];
|
|
|
- fdgui[m*CHANNEL_COUNT+1] = fd2[m];
|
|
|
- fdgui[m*CHANNEL_COUNT+2] = fd3[m];
|
|
|
- fdgui[m*CHANNEL_COUNT+3] = fd4[m];
|
|
|
- }
|
|
|
- lwip_udp_send_gui_signal(fdgui, COUNT_SIZE*CHANNEL_COUNT, fm->sign);
|
|
|
- }
|
|
|
+ }
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+ if (fm->sign & 0x02)
|
|
|
+ {
|
|
|
+ emg_denoised(cd2, dataCount, 1000, fd2);
|
|
|
+ }
|
|
|
+ if (fm->sign & 0x04)
|
|
|
+ {
|
|
|
+ emg_denoised(cd3, dataCount, 1000, fd3);
|
|
|
+ }
|
|
|
+ if (fm->sign & 0x08)
|
|
|
+ {
|
|
|
+ emg_denoised(cd4, dataCount, 1000, fd4);
|
|
|
}
|
|
|
|
|
|
- free(cd1);
|
|
|
- free(cd2);
|
|
|
- free(cd3);
|
|
|
- free(cd4);
|
|
|
-
|
|
|
+ lwip_udp_send_gui_signal2(fd1,fd2,fd3,fd4, fm->sign,dataCount);
|
|
|
+ free(fdata);
|
|
|
}
|
|
|
|
|
|
void handleSign2(unsigned char *s, unsigned short sl)
|
|
|
@@ -204,85 +187,57 @@ void handleSign2(unsigned char *s, unsigned short sl)
|
|
|
}
|
|
|
|
|
|
int dataCount = sl / FRAME_LEN; //每个通道数据量, 每三个字节代表一个采集信号. 大端模式.
|
|
|
-
|
|
|
- float *const cd1 = malloc(sizeof(float) * dataCount);
|
|
|
- float *const cd2 = malloc(sizeof(float) * dataCount);
|
|
|
- float *const cd3 = malloc(sizeof(float) * dataCount);
|
|
|
- float *const cd4 = malloc(sizeof(float) * dataCount);
|
|
|
- static float fd1[COUNT_SIZE] = { 0.0 };
|
|
|
- static float fd2[COUNT_SIZE] = { 0.0 };
|
|
|
- static float fd3[COUNT_SIZE] = { 0.0 };
|
|
|
- static float fd4[COUNT_SIZE] = { 0.0 };
|
|
|
+ float *const fdata = malloc(sizeof(float) * dataCount*CHANNEL_COUNT*2);
|
|
|
+ float *const cd1 = fdata+dataCount*0;
|
|
|
+ float *const cd2 = fdata+dataCount*1;
|
|
|
+ float *const cd3 = fdata+dataCount*2;
|
|
|
+ float *const cd4 = fdata+dataCount*3;
|
|
|
+ float *const fd1 = fdata+dataCount*4;
|
|
|
+ float *const fd2 = fdata+dataCount*5;
|
|
|
+ float *const fd3 = fdata+dataCount*6;;
|
|
|
+ float *const fd4 = fdata+dataCount*7;
|
|
|
|
|
|
const int FULL = 0x007fffff;
|
|
|
const float FFULL = (float) FULL;
|
|
|
+ struct Frame *fm = NULL;
|
|
|
int i = 0;
|
|
|
- static int scount = 0;
|
|
|
-
|
|
|
for (i = 0; i < dataCount; i++)
|
|
|
{
|
|
|
- struct Frame *fm = (struct Frame*) (s + FRAME_LEN * i);
|
|
|
+ fm = (struct Frame*) (s + FRAME_LEN * i);
|
|
|
int origenData1 = fm->d1[0] << 24 | fm->d1[1] << 16 | fm->d1[2] << 8;
|
|
|
- *(cd1 + i) = ((float) (origenData1 >> 8) / FFULL) * 5000; //将采集数据转成mV
|
|
|
+ *(cd1 + i) = ((float) (origenData1 >> 8) / FFULL) * 5000000+530; //将采集数据转成mV
|
|
|
|
|
|
int origenData2 = fm->d2[0] << 24 | fm->d2[1] << 16 | fm->d2[2] << 8;
|
|
|
- *(cd2 + i) = ((float) (origenData2 >> 8) / FFULL) * 5000; //将采集数据转成mV
|
|
|
+ *(cd2 + i) = ((float) (origenData2 >> 8) / FFULL) * 5000000+470; //将采集数据转成mV
|
|
|
|
|
|
int origenData3 = fm->d3[0] << 24 | fm->d3[1] << 16 | fm->d3[2] << 8;
|
|
|
- *(cd3 + i) = ((float) (origenData3 >> 8) / FFULL) * 5000; //将采集数据转成mV
|
|
|
+ *(cd3 + i) = ((float) (origenData3 >> 8) / FFULL) * 5000000+450; //将采集数据转成mV
|
|
|
|
|
|
int origenData4 = fm->d4[0] << 24 | fm->d4[1] << 16 | fm->d4[2] << 8;
|
|
|
- *(cd4 + i) = ((float) (origenData4 >> 8) / FFULL) * 5000; //将采集数据转成mV
|
|
|
- fd1[scount] = *(cd1 + i);
|
|
|
- fd2[scount] = *(cd2 + i);
|
|
|
- fd3[scount] = *(cd3 + i);
|
|
|
- fd4[scount] = *(cd4 + i);
|
|
|
- scount++;
|
|
|
- if (scount == COUNT_SIZE)
|
|
|
- {
|
|
|
- scount = 0;
|
|
|
- if (fm->sign & 0x01)
|
|
|
- {
|
|
|
- emg_denoised(cd1, COUNT_SIZE, 1000, fd1);
|
|
|
- }
|
|
|
- if (fm->sign & 0x02)
|
|
|
- {
|
|
|
- emg_denoised(cd2, COUNT_SIZE, 1000, fd2);
|
|
|
- }
|
|
|
- if (fm->sign & 0x04)
|
|
|
- {
|
|
|
- emg_denoised(cd3, COUNT_SIZE, 1000, fd3);
|
|
|
- }
|
|
|
- if (fm->sign & 0x08)
|
|
|
- {
|
|
|
- emg_denoised(cd4, COUNT_SIZE, 1000, fd4);
|
|
|
- }
|
|
|
- const int STEP = 100;
|
|
|
- int pos = 0;
|
|
|
- int left = 0;
|
|
|
- do
|
|
|
- {
|
|
|
- int left = COUNT_SIZE - pos;
|
|
|
- if (left <= STEP)
|
|
|
- {
|
|
|
- lwip_udp_send_vofa4(cd1 + pos, cd2 + pos, cd3 + pos,
|
|
|
- cd4 + pos, left);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- lwip_udp_send_vofa4(cd1 + pos, cd2 + pos, cd3 + pos,
|
|
|
- cd4 + pos, STEP);
|
|
|
- pos += STEP;
|
|
|
- }
|
|
|
- }
|
|
|
- while (left > STEP);
|
|
|
- }
|
|
|
+ *(cd4 + i) = ((float) (origenData4 >> 8) / FFULL) * 5000000+440; //将采集数据转成mV
|
|
|
}
|
|
|
-
|
|
|
- free(cd1);
|
|
|
- free(cd2);
|
|
|
- free(cd3);
|
|
|
- free(cd4);
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+ if (fm->sign & 0x02)
|
|
|
+ {
|
|
|
+ emg_denoised(cd2, dataCount, 1000, fd2);
|
|
|
+ }
|
|
|
+ if (fm->sign & 0x04)
|
|
|
+ {
|
|
|
+ emg_denoised(cd3, dataCount, 1000, fd3);
|
|
|
+ }
|
|
|
+ if (fm->sign & 0x08)
|
|
|
+ {
|
|
|
+ emg_denoised(cd4, dataCount, 1000, fd4);
|
|
|
+ }
|
|
|
+ lwip_udp_send_vofa4(fd1, fd2 , fd3 ,fd4 , dataCount);
|
|
|
+ free(fdata);
|
|
|
|
|
|
}
|
|
|
|
|
|
@@ -292,7 +247,7 @@ void handleGUI(unsigned char *s, unsigned short sl)
|
|
|
ConsolePutsHexStr(s, sl);
|
|
|
unsigned char check = 0;
|
|
|
int a = ProtocolGetOption(s,sl,99,&check);
|
|
|
- if(a)
|
|
|
+ if(a == 1)
|
|
|
{
|
|
|
unsigned char udpAdd[8] = {0};
|
|
|
trProtocol verPro;
|
|
|
@@ -300,12 +255,16 @@ void handleGUI(unsigned char *s, unsigned short sl)
|
|
|
ProtocolSetDestAddress(&verPro,3);
|
|
|
ProtocolSetSourceAddress(&verPro,1);
|
|
|
ProtocolSetType(&verPro,2);
|
|
|
- //ProtocolSetOption(&verPro,98,sizeof(udpAdd),udpAdd);
|
|
|
ProtocolSetOptionChar(&verPro, 100, 1);
|
|
|
+ ProtocolSetPayload(&verPro,sizeof(udpAdd),udpAdd);
|
|
|
ProtocolPackage(&verPro);
|
|
|
ConsolePuts("\n===handleGUI to gui version\n", -1);
|
|
|
ConsolePutsHexStr(verPro.message, verPro.length);
|
|
|
lwip_tcp_send_gui(verPro.message,verPro.length);
|
|
|
}
|
|
|
+ else if(a == 3)
|
|
|
+ {
|
|
|
+ touch_closegui();
|
|
|
+ }
|
|
|
}
|
|
|
|