Browse Source

feature:1.tcp服务完成

pcb_v2
Zhangwen 4 months ago
parent
commit
0e9a61bdf4
  1. 5
      keilp/cc_as_stc02_ps5ws.uvprojx
  2. 19
      source/app/task_game.c
  3. 2
      source/app/task_game.h
  4. 40
      source/app/task_w600.c
  5. 22
      source/app/task_w600.h
  6. 86
      source/app/task_w600_ptc.c
  7. 102
      source/app/task_w600_ptc.h
  8. 61
      source/msp/msp_adc.c

5
keilp/cc_as_stc02_ps5ws.uvprojx

@ -403,6 +403,11 @@
<FileType>1</FileType>
<FilePath>..\source\msp\msp_adc.c</FilePath>
</File>
<File>
<FileName>task_game.c</FileName>
<FileType>1</FileType>
<FilePath>..\source\app\task_game.c</FilePath>
</File>
</Files>
</Group>
<Group>

19
source/app/task_game.c

@ -17,6 +17,7 @@
#include "../msp/uart0.h"
#include "../msp/uart3.h"
#include "../bsp/bsp_WT2605B.h"
#include "../app/task_w600.h"
// 系统不识别的码:无效码 0x3FFF,0x0000
@ -29,6 +30,7 @@
S_TASK_GAME _s_task_game;
#define GAME_OID_ZBT 0x3133
#define GAME_OID_SHERT 0x3142
#define GAME_OID_ZMG 0x3152
@ -129,6 +131,7 @@ void L3_task_game_init(void)
#define D_task_GAME_SWITCH 0x51
#define D_task_GAME_PLAY 0x52
#define D_task_GAME_COMPLETED 0x53
#define D_task_GAME_NET_SUBMIT 0x54
void L3_task_game_handler(S_TASK_GAME *s)
@ -256,6 +259,7 @@ void L3_task_game_handler(S_TASK_GAME *s)
L0_uart0_sendstr("It's completed.");
// 游戏完成
L2_WT2605B_Broadcast(&audio_game_complete);
L2_task_go_Tdelay(D_task_GAME_NET_SUBMIT,D_Tdelay_300ms);
}
else
{
@ -267,8 +271,21 @@ void L3_task_game_handler(S_TASK_GAME *s)
{
L2_WT2605B_Broadcast(s->game_info[s->game_info_index].game_supported_oid[s->game_point_index].point_audio);
}
L2_task_go_Tdelay(D_task_READ_OID,D_Tdelay_300ms);
}
TTSS_Task_step(D_task_GAME_NET_SUBMIT)
U8 seconds = s_nos_tick.t_1s - s->start_seconds;
_s_task_w600_para.Send_Submit_Flag = 1;
_s_task_w600_para.submittaskpkg.Plan_ID[0] = _s_task_w600_para.queryackpkg.Plan_ID[0];
_s_task_w600_para.submittaskpkg.Plan_ID[1] = _s_task_w600_para.queryackpkg.Plan_ID[1];
_s_task_w600_para.submittaskpkg.Game_ID[0] = s->game_info[s->game_info_index].game_oid >> 8 & 0xFF;
_s_task_w600_para.submittaskpkg.Game_ID[1] = s->game_info[s->game_info_index].game_oid >> 0 & 0xFF;
_s_task_w600_para.submittaskpkg.Second[0] = seconds >> 8 & 0xFF;
_s_task_w600_para.submittaskpkg.Second[1] = seconds >> 0 & 0xFF;
_s_task_w600_para.submittaskpkg.Error_Time[0] = 0;
_s_task_w600_para.submittaskpkg.Error_Time[1] = _s_task_game.eeror_times;
_s_task_w600_para.submittaskpkg.Score[0] = 0;
_s_task_w600_para.submittaskpkg.Score[1] = 0;
L2_task_go_Tdelay(D_task_READ_OID,D_Tdelay_300ms);
TTSS_Task_end();

2
source/app/task_game.h

@ -54,6 +54,8 @@ typedef struct _s_task_game
}S_TASK_GAME;
extern S_TASK_GAME _s_task_game;
extern void L3_task_game_init(void);

40
source/app/task_w600.c

@ -51,6 +51,14 @@ void L3_uart2_wifi_parse(void)
ts_uart[uNum2].r.ok = 0;
Lc_buf_copy_uc(wifi_rev_buf, ts_uart[uNum2].r.buf, ts_uart[uNum2].r.num);
wifi_rev_buf[ts_uart[uNum2].r.num] = 0;
if (_s_task_w600_para.st_cip_ok == 1)
{
if (wifi_rev_buf,ts_uart[uNum2].r.num)
{
_s_task_w600_para.Recieve_QueryAck_Flag = 1;
}
return;
}
tmp_num = 0;
while(*ptr != 0)
{
@ -118,6 +126,12 @@ void L3_task_W600_flow_init(U8 mode)
_s_task_w600_para.mode = mode;
_s_task_w600_para.send = 0;
_s_task_w600_para.conn_ok = 0;
_s_task_w600_para.Send_Query_Flag = 1;
_s_task_w600_para.Recieve_QueryAck_Flag = 0;
_s_task_w600_para.Send_Submit_Flag = 0;
_s_task_w600_para.queryackpkg.Plan_ID[0] = 0;
_s_task_w600_para.queryackpkg.Plan_ID[1] = 0;
}
//------------------------ GM35 Flow Handle -----------------------------------
@ -155,6 +169,8 @@ void L3_task_W600_flow_init(U8 mode)
#define TTSS_TASK_GM35_FLOW_ST_SAMRTCSTOP 0x34
#define TTSS_TASK_GM35_FLOW_ST_SAMRTCSTOPPED 0x35
#define TTSS_TASK_GM35_SEND_TPC 0x35
#define INS_TIMEOUT 5
#define GM35_SEND_DATA_INTERVAL 300
@ -326,7 +342,27 @@ void L2_task_W600_flow_handle(struct _s_task_W600_Para *s)
s->send = 0;
}
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_DATA)
L2_task_go(TTSS_TASK_GM35_FLOW_ST_DATA);
if (s->Send_Query_Flag == 1)
{
U8 num = constructor_QueryTaskPkg();
s->Send_Query_Flag = 0;
L0_uart2_sendArray(&_s_task_w600_para.querytaskpkg,num);
}
else if (s->Send_Submit_Flag == 1)
{
U8 num = constructor_SubmitTaskPkg();
s->Send_Submit_Flag = 0;
L0_uart2_sendArray(&_s_task_w600_para.submittaskpkg,num);
}
else if (s->Recieve_QueryAck_Flag == 1)
{
s->Recieve_QueryAck_Flag = 0;
// 根据_s_task_w600_para.queryackpkg.Game_ID[2] 找见响应音频
// L2_WT2605B_Broadcast(s->game_info[i].game_audio);
}
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_DATA,D_Tdelay_100ms);
/*******************************************s->mode = W600_SC(按键进入)********************************************** */
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_SMARTCONFIG)
@ -383,3 +419,5 @@ void L2_task_W600_flow_handle(struct _s_task_W600_Para *s)

22
source/app/task_w600.h

@ -20,6 +20,8 @@
#include "../tpc/at0d0a.h"
#include "../tpc/ccmodbus.h"
#include "../msp/msp_eeprom.h"
#include "../app/task_w600_tpc.h"
////<<<<<<<<<<<<<<<<<<< GM35模块 AT操作指令 <<<<<<<<<<<<<<<<<<<<<<<<
#define AT_INS_ATE1 "ATE1\r\n" //模块查询+打开回显
@ -47,6 +49,10 @@
#define AT_INS_AP_SEND "AT+CIPSENDEX=0,6\r\n" //
#define AT_INS_AP_SERVER_CLOSE "AT+CIPSERVER=0\r\n" //关闭服务器 2-1
#define AT_INS_AP_CLOSE "AT+CWQAP\r\n" //断开AP连接
////<<<<<<<<<<<<<<<<<<<_s_task_test_<<<<<<<<<<<<<<<<<<<<<<<<
enum _s_w600_mode
{
@ -90,6 +96,22 @@ struct _s_task_W600_Para
vU8 gm35_reboot_times; //gm35重启次数
vU8 smartc_ok; //smartconfig是否成功
//任务请求
QueryTaskPkg querytaskpkg;
//请求响应
QueryAckPkg queryackpkg;
//成绩提交
SubmitTaskPkg submittaskpkg;
// 发送请求标志位 1发送请求 0不发送请求
U8 Send_Query_Flag;
// 接收到响应标志 0未接收 1接收
U8 Recieve_QueryAck_Flag;
// 发送提交标志 1发送提交 0不发送提交
U8 Send_Submit_Flag;
};
extern struct _s_task_W600_Para _s_task_w600_para;

86
source/app/task_w600_ptc.c

@ -0,0 +1,86 @@
#include "../app/task_w600_ptc.h"
#include "../app/task_w600.h"
U8 constructor_QueryTaskPkg()
{
_s_task_w600_para.querytaskpkg.filter[0] = 0xAA;
_s_task_w600_para.querytaskpkg.filter[1] = 0xBB;
_s_task_w600_para.querytaskpkg.num = 0x07;
_s_task_w600_para.querytaskpkg.cmd = 0xA1;
_s_task_w600_para.querytaskpkg.did[0] = G.mcu_id[3];
_s_task_w600_para.querytaskpkg.did[1] = G.mcu_id[4];
_s_task_w600_para.querytaskpkg.did[2] = G.mcu_id[5];
_s_task_w600_para.querytaskpkg.did[3] = G.mcu_id[6];
_s_task_w600_para.querytaskpkg.crc[0] = 0xCC;
_s_task_w600_para.querytaskpkg.crc[1] = 0xDD;
//CRC
// crc16(_s_task_w600_para.crc, &_s_task_w600_para.cmder, num - 2);
return _s_task_w600_para.querytaskpkg.num + 3;
}
U8 constructor_SubmitTaskPkg()
{
_s_task_w600_para.submittaskpkg.filter[0] = 0xAA;
_s_task_w600_para.submittaskpkg.filter[1] = 0xBB;
_s_task_w600_para.submittaskpkg.num = 0x11;
_s_task_w600_para.submittaskpkg.cmd = 0xA3;
_s_task_w600_para.submittaskpkg.did[0] = G.mcu_id[3];
_s_task_w600_para.submittaskpkg.did[1] = G.mcu_id[4];
_s_task_w600_para.submittaskpkg.did[2] = G.mcu_id[5];
_s_task_w600_para.submittaskpkg.did[3] = G.mcu_id[6];
// 其他属性在游戏完成时赋值
_s_task_w600_para.submittaskpkg.cmd[0] = 0xCC;
_s_task_w600_para.submittaskpkg.crc[1] = 0xDD;
//CRC
// crc16(_s_task_w600_para.crc, &_s_task_w600_para.cmder, num - 2);
return _s_task_w600_para.submittaskpkg.num + 3;
}
U8 parse_QueryAckPkg(U8* d,U8 num)
{
if (num != 0x0F)
{
return 0;
}
_s_task_w600_para.queryackpkg.filter[0] = d[0];
_s_task_w600_para.queryackpkg.filter[1] = d[1];
if ( _s_task_w600_para.queryackpkg.filter[0] != 0xAA ||
_s_task_w600_para.queryackpkg.filter[1] != 0xBB )
{
return 0;
}
_s_task_w600_para.queryackpkg.num = d[2];
_s_task_w600_para.queryackpkg.cmd = d[3];
_s_task_w600_para.queryackpkg.did[0] = d[4];
_s_task_w600_para.queryackpkg.did[1] = d[5];
_s_task_w600_para.queryackpkg.did[2] = d[6];
_s_task_w600_para.queryackpkg.did[3] = d[7];
_s_task_w600_para.queryackpkg.Plan_ID[0] = d[8];
_s_task_w600_para.queryackpkg.Plan_ID[1] = d[9];
_s_task_w600_para.queryackpkg.Game_ID[0] = d[10];
_s_task_w600_para.queryackpkg.Game_ID[1] = d[11];
_s_task_w600_para.queryackpkg.Tranning_Status = d[12];
// 其他属性在游戏完成时赋值
_s_task_w600_para.queryackpkg.crc[0] = d[13];
_s_task_w600_para.queryackpkg.crc[1] = d[14];
if ( _s_task_w600_para.queryackpkg.crc[0] != 0xCC ||
_s_task_w600_para.queryackpkg.crc[1] != 0xDD )
{
return 0;
}
//CRC
// crc16(_s_task_w600_para.crc, &_s_task_w600_para.cmder, num - 2);
return 1;
}

102
source/app/task_w600_ptc.h

@ -0,0 +1,102 @@
////////////////////////////////////////////////////////////////////////////
///@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_TPC_H
#define _app_task_w600_TPC_H
#include "../clib/type.h"
typedef struct {
//起始码
U8 filter[2];
//长度
U8 num;
//Cmd
U8 cmd;
//设备ID
U8 did[4];
//校验
U8 crc[2];
}QueryTaskPkg;
typedef struct {
//起始码
U8 filter[2];
//长度
U8 num;
//Cmd
U8 cmd;
//设备ID
U8 did[4];
//训练方案编号
U8 Plan_ID[2];
//游戏ID
U8 Game_ID[2];
//训练完成情况
U8 Tranning_Status; //0正常训练;1今日训练完成;2今日无训练任务
//校验
U8 crc[2];
}QueryAckPkg;
typedef struct {
//起始码
U8 filter[2];
//长度
U8 num;
//Cmd
U8 cmd;
//设备ID
U8 did[4];
//训练方案编号
U8 Plan_ID[2];
//游戏ID
U8 Game_ID[2];
//游戏时长
U8 Second[2];
//错误次数
U8 Error_Time[2];
//得分
U8 Score[2];
//校验
U8 crc[2];
}SubmitTaskPkg;
extern U8 constructor_QueryTaskPkg(void);
extern U8 constructor_SubmitTaskPkg(void);
extern U8 parse_QueryAckPkg(void);
#endif

61
source/msp/msp_adc.c

@ -1,33 +1,6 @@
#include "../msp/msp_adc.h"
#include "../msp/uart0.h"
/*********
1 MCU ADC 1ms, MCU ADC ADC
2 ADC ,
19.1.1 ADC ADC_CONTRPWM ADC
B7 B6 B5 B4 B3 B2 B1 B0
ADC_CONTR BCH ADC_POWER ADC_START ADC_FLAG ADC_EPWMT ADC_CHS[3:0]
ADC_POWERADC
0
ADC 1 ADC
ADC
1 MCU ADC 1ms, MCU ADC ADC
2 ADC ,
ADC_STARTADC 1 ADC
0使 ADC 0 A/D
1 ADC
ADC_FLAGADC ADC 1
CPU
> > > > >
12 800K
22M / 64=
*********/
#include <stdio.h>
void L0_ADC_init(void)
{
@ -92,6 +65,38 @@ U16 L1_ADC_Read(u8 CHA)
return adc_data;
}
//平均值滤波
U16 ADC_Average_Filter(U8 N)
{
U16 sum = 0;
U16 Aver = 0;
U8 i;
U16 arr[10] = 0;
FP32 Variance = 0;
// 平均值
for(i = 0; i < N; i++)
{
arr[i] = L1_ADC_Read(12);
sum += L1_ADC_Read(12);
}
Aver = sum/N;
for (i = 0; i < N; i++)
{
L0_uart0_ushex(arr[i]);
L0_uart0_0d0a();
}
// 方差
for(i = 0; i < N; i++)
{
Variance += (arr[i] - Aver) * (arr[i] - Aver);
}
Variance /= N;
// printf("%.7f", Variance);
return Aver;
}
#if 0
U16 L1_ADC_Read(u8 CHA)

Loading…
Cancel
Save