Browse Source

feature:1.测试 key+oid+led+音频;2.添加task_game.c任务

master
Zhangwen 4 months ago
parent
commit
70daaa16b8
  1. 8
      .vscode/settings.json
  2. 5
      keilp/cc_as_stc02_ps5ws.uvprojx
  3. 152
      si4/keywords.txt
  4. BIN
      si4/ps5ws.si4project/soft_ps5ws.sip_sym
  5. BIN
      si4/ps5ws.si4project/soft_ps5ws.sip_xab
  6. BIN
      si4/ps5ws.si4project/soft_ps5ws.sip_xad
  7. BIN
      si4/ps5ws.si4project/soft_ps5ws.sip_xc
  8. BIN
      si4/ps5ws.si4project/soft_ps5ws.sip_xf
  9. BIN
      si4/ps5ws.si4project/soft_ps5ws.sip_xm
  10. BIN
      si4/ps5ws.si4project/soft_ps5ws.sip_xr
  11. BIN
      si4/ps5ws.si4project/soft_ps5ws.sip_xsb
  12. BIN
      si4/ps5ws.si4project/soft_ps5ws.sip_xsd
  13. BIN
      si4/ps5ws.si4project/soft_ps5ws.siproj
  14. 22
      si4/ps5ws.si4project/soft_ps5ws.siproj_settings.xml
  15. 9
      source/app/app_config.c
  16. 17
      source/app/app_config.h
  17. 17
      source/app/app_task_speech.c
  18. 31
      source/app/app_task_speech.h
  19. 84
      source/app/main.c
  20. 2
      source/app/main.h
  21. BIN
      source/app/source.lnk
  22. 145
      source/app/task_game.c
  23. 41
      source/app/task_game.h
  24. 253
      source/app/task_key.c
  25. 2
      source/app/task_register.c
  26. 2
      source/app/task_w600.c
  27. 12
      source/app/task_w600.h
  28. 21
      source/asp/asp_oid.c
  29. 12
      source/bsp/bsp_config.c
  30. 4
      source/bsp/bsp_config.h
  31. 184
      source/bsp/bsp_oid.c
  32. 113
      source/bsp/bsp_oid.h
  33. 4
      source/bsp/rs485.h
  34. 2
      source/msp/UART0.C

8
.vscode/settings.json

@ -19,6 +19,12 @@
"clib.h": "c", "clib.h": "c",
"uart0.h": "c", "uart0.h": "c",
"stdio.h": "c", "stdio.h": "c",
"uart3.h": "c" "uart3.h": "c",
"app_task_speech.h": "c",
"app_task_tcp_control.h": "c",
"task_key.h": "c",
"task_game.h": "c",
"app_config.h": "c",
"type_traits": "c"
} }
} }

5
keilp/cc_as_stc02_ps5ws.uvprojx

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

152
si4/keywords.txt

@ -1,152 +0,0 @@
#define, Keyword
#elif, Directive
#else, Directive
#endif, Directive
#if, Directive
#ifdef, Directive
#ifndef, Directive
#include, Keyword
#pragma, Keyword
#undef, Keyword
(, Delimiter
), Delimiter
",", Delimiter
;, Delimiter
abstract, Keyword
__abstract, Keyword
alignas, Keyword
alignof, Keyword
asm, Keyword
__asm, Keyword
assert, Debug
Assert, Debug
async, Keyword
auto, Keyword
bool, Keyword
break, Control
case, Control
catch, Control
cdecl, Keyword
__cdecl, Keyword
char, Keyword
class, Control
coclass, Control
const, Keyword
constexpr, Keyword
const_cast, Keyword
continue, Control
cout, Keyword
decltype, Keyword
default, Control
__delegate, Keyword
delete, Control
do, Control
double, Keyword
DWORD, Keyword
dynamic_cast, Keyword
each, Control
else, Control
enum, Control
__event, Keyword
except, Control
__except, Control
exception, Keyword
explicit, Keyword
export, Keyword
extern, Keyword
FALSE, Boolean
false, Boolean
FAR, Keyword
far, Keyword
final, Keyword
__finally, Control
float, Keyword
for, Control
fortran, Keyword
for_each, Control
friend, Keyword
__gc, Keyword
goto, Control
HUGE, Keyword
huge, Keyword
if, Control
inline, Keyword
INT, Keyword
int, Keyword
int16_t, Keyword
int32_t, Keyword
int64_t, Keyword
int8_t, Keyword
interface, Control
LONG, Keyword
long, Keyword
mutable, Keyword
namespace, Control
near, Keyword
NEAR, Keyword
new, Control
noexcept, Keyword
NULL, Null Value
nullptr, Null Value
__nullptr, Null Value
operator, Keyword
override, Keyword
pascal, Keyword
PASCAL, Keyword
private, Keyword
__property, Keyword
protected, Keyword
public, Keyword
ref, Keyword
REGISTER, Keyword
register, Keyword
reinterpret_cast, Keyword
return, Control
sealed, Keyword
short, Keyword
SHORT, Keyword
signed, Keyword
sizeof, Keyword
static, Keyword
static_cast, Keyword
struct, Control
__super, Keyword
switch, Control
template, Control
this, Keyword
thread_local, Keyword
throw, Control
TRUE, Boolean
true, Boolean
try, Control
__try, Control
TTSS_step01, Highlight
TTSS_Task_end, Highlight
TTSS_Task_init, Highlight
TTSS_Task_step, Highlight
TTSS_step01, Highlight
TTSS_step02,Highlight
TTSS_step03,Highlight
TTSS_step04,Highlight
TTSS_step05,Highlight
TTSS_step06,Highlight
TTSS_step07,Highlight
TTSS_Task_step, Highlight
typedef, Control
typeid, Keyword
typename, Keyword
UINT, Keyword
union, Control
unsigned, Keyword
using, Keyword
virtual, Keyword
VOID, Keyword
void, Keyword
volatile, Keyword
wchar_t, Keyword
while, Control
WORD, Keyword
{, Delimiter
[, Delimiter
], Delimiter
}, Delimiter

BIN
si4/ps5ws.si4project/soft_ps5ws.sip_sym

Binary file not shown.

BIN
si4/ps5ws.si4project/soft_ps5ws.sip_xab

Binary file not shown.

BIN
si4/ps5ws.si4project/soft_ps5ws.sip_xad

Binary file not shown.

BIN
si4/ps5ws.si4project/soft_ps5ws.sip_xc

Binary file not shown.

BIN
si4/ps5ws.si4project/soft_ps5ws.sip_xf

Binary file not shown.

BIN
si4/ps5ws.si4project/soft_ps5ws.sip_xm

Binary file not shown.

BIN
si4/ps5ws.si4project/soft_ps5ws.sip_xr

Binary file not shown.

BIN
si4/ps5ws.si4project/soft_ps5ws.sip_xsb

Binary file not shown.

BIN
si4/ps5ws.si4project/soft_ps5ws.sip_xsd

Binary file not shown.

BIN
si4/ps5ws.si4project/soft_ps5ws.siproj

Binary file not shown.

22
si4/ps5ws.si4project/soft_ps5ws.siproj_settings.xml

@ -1,22 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<ProjectSettings
AppVer="4.00.0093"
AppVerMinReader="4.00.0034"
GlobalConfiguration="1"
GlobalWorkspace="0"
LocalsInDb="0"
IndexMembers="1"
IndexFragments="1"
UseMasterFileList="0"
SourceDir="..\..\source"
BackupDir="%PROJECT_DATA_DIR%\Backup"
MasterFileList="%PROJECT_SOURCE_DIR%\%PROJECT_NAME%_filelist.txt"
IsImportProject="0"
>
<Imports>
<ImportedLibs/>
</Imports>
<ParseConditions>
<Defines/>
</ParseConditions>
</ProjectSettings>

9
source/app/app_config.c

@ -109,9 +109,12 @@ void L3_reg_reset(void)
R.pen_ele_sta = 0; R.pen_ele_sta = 0;
R.question_sta = 0; R.question_sta = 0;
R.spee_order = 0; R.spee_order = 0;
//R.oid3_order = 0;
//R.pack_order = 0; R.oid.type = 0;
//R.frame_order = 0; R.oid.dat = 0;
R.game.type = 0;
R.game.dat = 0;
for(i=0;i<CCMD_SLAVER_INFO_MAX;i++) for(i=0;i<CCMD_SLAVER_INFO_MAX;i++)
{ {

17
source/app/app_config.h

@ -47,6 +47,23 @@ typedef struct global_register
//U16 frame_order;//帧序号 //U16 frame_order;//帧序号
//U16 pack_mask;//包标志 //U16 pack_mask;//包标志
//Ts_OID_frame_xy_ points[POINT_LEN]; //Ts_OID_frame_xy_ points[POINT_LEN];
struct {
//oid type
U8 type;
//oid code
U8 dat;
}oid;
struct {
//oid type
U8 type;
//oid code
U8 dat;
}game;
}GlobalRegister; }GlobalRegister;
extern GlobalRegister R; extern GlobalRegister R;

17
source/app/app_task_speech.c

@ -12,6 +12,21 @@
TS_TASK_SPEECH ts_speech; TS_TASK_SPEECH ts_speech;
TS_SPEECH_AUDIO audio_wellcome = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x31,0x8F,0xEF};
TS_SPEECH_AUDIO audio_up = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x32,0x90,0xEF};
TS_SPEECH_AUDIO audio_down = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x33,0x91,0xEF};
TS_SPEECH_AUDIO audio_zmg = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x34,0x92,0xEF};
TS_SPEECH_AUDIO audio_zbt = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x35,0x93,0xEF};
TS_SPEECH_AUDIO audio_SchulteGrid = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x36,0x94,0xEF};
TS_SPEECH_AUDIO audio_select = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x37,0x95,0xEF};
TS_SPEECH_AUDIO audio_begin = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x38,0x96,0xEF};
TS_SPEECH_AUDIO audio_tip = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x39,0x97,0xEF};
TS_SPEECH_AUDIO audio_powerdown = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x3A,0x98,0xEF};
TS_SPEECH_AUDIO audio_zmg_again = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x3B,0x99,0xEF};
TS_SPEECH_AUDIO audio_zmg_success = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x3C,0x9A,0xEF};
void L3_task_speech_init(void) void L3_task_speech_init(void)
{ {
@ -89,8 +104,6 @@ U8 *hexBytes2AsciiBytes(U8 asciiBytes[],U8 hexBytes[],U8 hexBytesLen)
return sum; return sum;
} }
U8 L3_pack_speech_A3(TS_SPEECH *pspeech , U8 start ,U8 num ,U8 title ,U8 end)//tcp传来的buf U8 L3_pack_speech_A3(TS_SPEECH *pspeech , U8 start ,U8 num ,U8 title ,U8 end)//tcp传来的buf
{ {
int name; int name;

31
source/app/app_task_speech.h

@ -5,7 +5,6 @@
#include "../ctask/task.h" #include "../ctask/task.h"
#define CC_SPEECH_INFO_MAX 1 #define CC_SPEECH_INFO_MAX 1
#define D_s_TS_speech_max 16 #define D_s_TS_speech_max 16
@ -15,7 +14,17 @@ enum SPEECH_OPER
}; };
typedef struct typedef struct
{ {
vU8 start;
vU8 num;
vU8 cmd;
vU8 file[4];
vU8 crc;
vU8 end;
}TS_SPEECH_AUDIO;
typedef struct
{
vU8 start; vU8 start;
vU8 num; vU8 num;
vU8 oper; vU8 oper;
@ -25,7 +34,6 @@ typedef struct
vU8 end; vU8 end;
}TS_SPEECH; }TS_SPEECH;
typedef struct typedef struct
{ {
U16 start; U16 start;
@ -47,9 +55,22 @@ typedef struct
CCMD_SPEECH_INFO ccmd_speech_info[CC_SPEECH_INFO_MAX]; CCMD_SPEECH_INFO ccmd_speech_info[CC_SPEECH_INFO_MAX];
}TS_TASK_SPEECH; }TS_TASK_SPEECH;
extern TS_TASK_SPEECH ts_speech; extern TS_TASK_SPEECH ts_speech;
extern TS_SPEECH_AUDIO audio_wellcome;
extern TS_SPEECH_AUDIO audio_up;
extern TS_SPEECH_AUDIO audio_down;
extern TS_SPEECH_AUDIO audio_zmg;
extern TS_SPEECH_AUDIO audio_zbt;
extern TS_SPEECH_AUDIO audio_SchulteGrid;
extern TS_SPEECH_AUDIO audio_select;
extern TS_SPEECH_AUDIO audio_begin;
extern TS_SPEECH_AUDIO audio_tip;
extern TS_SPEECH_AUDIO audio_powerdown;
extern TS_SPEECH_AUDIO audio_zmg_again;
extern TS_SPEECH_AUDIO audio_zmg_success;
extern void L3_task_speech_init(void); extern void L3_task_speech_init(void);
extern void L3_task_speech_handle(TS_TASK_SPEECH *s); 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_A3(TS_SPEECH *pspeech , U8 start ,U8 num ,U8 title ,U8 end);//tcp传来的buf;//tcp传来的buf
@ -57,7 +78,5 @@ extern U8 L3_pack_speech(TS_SPEECH *pspeech, CCMD_SPEECH_INFO *speech_info);
extern U8 *hexBytes2AsciiBytes(U8 asciiBytes[],U8 hexBytes[],U8 hexBytesLen); extern U8 *hexBytes2AsciiBytes(U8 asciiBytes[],U8 hexBytes[],U8 hexBytesLen);
extern U8 Fun_SC_Check(U8 *p1, unsigned short int len); extern U8 Fun_SC_Check(U8 *p1, unsigned short int len);
#endif #endif

84
source/app/main.c

@ -15,9 +15,9 @@ void L0_main_init(void)
//Lc_delay_ms(100); //Lc_delay_ms(100);
L1_tick_init(); L1_tick_init();
//P53口初始化 推挽输出 // P53口初始化 推挽输出
L0_PW_3V3_INIT(); L0_PW_3V3_INIT();
// 控制3v3输出 // 控制3v3输出(OID,WIFI)
L0_PW_3V3_ON(); L0_PW_3V3_ON();
//开启全局中断 //开启全局中断
@ -30,22 +30,26 @@ void L0_main_init(void)
{L1_Oid_readoid();} {L1_Oid_readoid();}
#endif #endif
//系统时钟初始化 //系统时钟初始化
L0_timer0_Init();
// L0_key_init(); // 定时器初始化
L0_timer0_Init();
//G初始化 //G初始化
L3_param_init(); L3_param_init();
//R初始化 //R初始化
L3_reg_init(); L3_reg_init();
//485初始化 //485初始化
L2_485_init(); L2_485_init();
//游戏任务初始化
L3_task_game_init();
//寄存器监听任务初始化 //寄存器监听任务初始化
//L3_task_reglisten_init(); //L3_task_reglisten_init();
//w600任务初始化 //w600任务初始化
// L3_task_gm35_flow_init(W600_ST); // L3_task_gm35_flow_init(W600_ST);
//按键任务初始化 //按键任务初始化
// L0_key_init(); L0_key_init();
//笔头任务初始化 //笔头任务初始化
L1_oid_init(); L1_oid_init();
//语音模块初始化 //语音模块初始化
@ -60,28 +64,24 @@ void L0_main_init(void)
//=============================================== //===============================================
void main(void) void main(void)
{ {
int i; int i;
// U8 code open[9] = {0x7E,0x07,0xA3,0x43,0x30,0x30,0x39,0x86,0xEF}; u8 voice_30[6] = {0x7E,0x04,0xAE,0x1E,0xD0,0xEF};
// U8 buletooth[7] = {0x7E,0x05,0xED,0x00,0x00,0xF2,0xEF};
U8 broadcast_first[7] = {0x7E,0x05,0xA2,0x00,0x01,0xA8,0xEF};
U8 broadcast_second[7] = {0x7E,0x05,0xA2,0x00,0x02,0xA9,0xEF};
U8 broadcast_third[7] = {0x7E,0x05,0xA2,0x00,0x03,0xAA,0xEF};
U8 broadcast_fourth[7] = {0x7E,0x05,0xA2,0x00,0x04,0xAB,0xEF};
//初始化 //初始化
L0_main_init(); L0_main_init();
//获取mcu id //获取mcu id
L0_id_get_rom(G.mcu_id); L0_id_get_rom(G.mcu_id);
//打印版本信息 L0_uart0_sendstr("MCU_ID = ");
L0_uart0_0d0a();
L0_uart0_sendArrayHex(G.mcu_id,7);
L0_uart0_0d0a();
//打印程序版本信息
L0_uart0_sendArray("v1.0",4); L0_uart0_sendArray("v1.0",4);
L0_uart0_0d0a(); L0_uart0_0d0a();
L0_uart0_sendstr("KEY1-TEST");
Lc_delay_ms(3000); Lc_delay_ms(3000);
L0_uart3_sendArray((U8 *)&voice_30,6);
// // 控制3v3输出 Lc_delay_ms(1000);
// L0_PW_3V3_ON(); L0_uart3_sendArray((U8 *)&audio_up,9);
while(1) while(1)
{ {
@ -90,19 +90,10 @@ void main(void)
if(1 == s_nos_tick.t1s_heartbeat)//1s if(1 == s_nos_tick.t1s_heartbeat)//1s
{ {
s_nos_tick.t1s_heartbeat = 0;//置0清空 s_nos_tick.t1s_heartbeat = 0;//置0清空
D_print_heartbeat() D_print_heartbeat()
{ L0_uart0_uc('.');
L0_uart0_uc('.');
if(i == 5)
{
i = 0;
L0_uart3_sendArray((U8 *)&broadcast_first , 7);
}
i++;
}
} }
#if 0
// 串口2的 接收数据 测试 // 串口2的 接收数据 测试
// if(ts_uart[uNum2].r.ok == 1) // if(ts_uart[uNum2].r.ok == 1)
// { // {
@ -115,7 +106,7 @@ void main(void)
{ {
ts_uart[uNum3].r.ok = 0; ts_uart[uNum3].r.ok = 0;
L0_uart0_uc('@'); L0_uart0_uc('@');
// L0_uart0_sendArray(ts_uart[uNum3].r.buf, D_recv3_max); L0_uart0_sendArray(ts_uart[uNum3].r.buf, D_recv3_max);
} }
@ -128,9 +119,9 @@ void main(void)
// s_uart1_rec.buf= 传感器数据 // s_uart1_rec.buf= 传感器数据
/// ff 08 xh xl yh yl zh zl /// ff 08 xh xl yh yl zh zl
/// s_uart1_rec.ok =1; /// s_uart1_rec.ok =1;
} }
/// L2_sd_save(); /// L2_sd_save();
#endif
///////////////////////////////////////// /////////////////////////////////////////
#if 0 #if 0
if(s_uart0_rec.ok) if(s_uart0_rec.ok)
@ -154,16 +145,18 @@ void main(void)
} }
// 7E 04 AE 1E XX EF // 7E 04 AE 1E XX EF
#endif #endif
// 游戏处理
L3_task_game_handler(&_s_task_game);
//笔头数据采集 //笔头数据采集
L3_task_oid_handle(&ts_task_oid); L3_task_oid_handle(&ts_task_oid);
//WIFI //WIFI
// L3_uart2_exp_protocol(&s_uart2_at); // L3_uart2_exp_protocol(&s_uart2_at);
// L2_task_gm35_flow_handle(&s_task_gm35_flow); L2_task_gm35_flow_handle(&s_task_gm35_flow);
//寄存器值监控 //寄存器值监控
//L3_task_reglisten_handle(&s_task_reglisten); L3_task_reglisten_handle(&s_task_reglisten);
//输出,响应485协议 //输出,响应485协议
//L3_task_modbus_handler(&s_uart0_rec); //L3_task_modbus_handler(&s_uart0_rec);
@ -175,7 +168,7 @@ void main(void)
//按键处理 //按键处理
L3_task_key_handle(&s_task_key_handle); L3_task_key_handle(&s_task_key_handle);
//L3_task_modbus_handler2(&s_uart2_rec); //L3_task_modbus_handler2(&s_uart2_rec);
#if 1 #if 1
//tcp发送 //tcp发送
@ -184,15 +177,6 @@ void main(void)
//tcp master->slaver发送逻辑控制 //tcp master->slaver发送逻辑控制
// L3_task_tcp_control_handle(&ts_tcp_control); // L3_task_tcp_control_handle(&ts_tcp_control);
#endif #endif
} }
//end main }
//end main

2
source/app/main.h

@ -64,6 +64,8 @@
#include "../app/app_task_tcp.h" #include "../app/app_task_tcp.h"
#include "../app/app_task_tcp_control.h" #include "../app/app_task_tcp_control.h"
#include "../app/app_task_speech.h" #include "../app/app_task_speech.h"
#include "../app/task_game.h"
#include "../asp/asp_oid.h" #include "../asp/asp_oid.h"
#include "../ctask/tick.h" #include "../ctask/tick.h"

BIN
source/app/source.lnk

Binary file not shown.

145
source/app/task_game.c

@ -0,0 +1,145 @@
////////////////////////////////////////////////////////////////////////////
///@copyright Copyright (c) 2018, 传控科技 All rights reserved.
///-------------------------------------------------------------------------
/// @file bsp_drv.c
/// @brief bsp @ driver config
///-------------------------------------------------------------------------
/// @version 1.0
/// @author CC
/// @date 20180331
/// @note cc_AS_stc02
//////////////////////////////////////////////////////////////////////////////
#include "task_game.h"
#include "../bsp/bsp_oid.h"
#include "app_task_speech.h"
#include "../app/app_config.h"
#include "../bsp/bsp_config.h"
#include "../msp/uart0.h"
#include "../msp/uart3.h"
S_TASK_GAME _s_task_game;
//=============================================
void L3_task_game_init(void)
{
L1_task_init(&_s_task_game.task);
L3_task_s_go(_s_task_game,D_task_init);
}
#define D_task_GAME_SELECT 0x60
#define D_task_GAME_ZMG 0x61
#define D_task_GAME_ZBT 0x62
#define D_task_GAME_SchulteGrid 0x63
void L3_task_game_handler(S_TASK_GAME *s)
{
TTSS_Task_init()
L2_task_go(D_task_GAME_SELECT);
TTSS_Task_step(D_task_GAME_SELECT)
if(R.game.type == 0x51)
// if(R.game.type == 0xDA)
{
L0_uart0_uc('A');
if (R.game.dat == 0x42)
// if (R.game.dat == 0xC1)
{
R.game.type = 0;
R.game.dat = 0;
L0_uart0_uc('z');
L0_uart3_sendArray((U8 *)&audio_zmg,9);
Lc_delay_ms(1000);
L2_task_go_Tdelay(D_task_GAME_ZMG, 0);
}
if (R.game.dat == 0xC2)
{
L0_uart3_sendArray((U8 *)&audio_zbt,9);
Lc_delay_ms(1000);
L2_task_go_Tdelay(D_task_GAME_ZBT, 0);
}
if (R.game.dat == 0xC3)
{
L0_uart3_sendArray((U8 *)&audio_SchulteGrid,9);
Lc_delay_ms(1000);
L2_task_go_Tdelay(D_task_GAME_SchulteGrid, 0);
}
}
else if (R.game.type)
{
R.game.type = 0;
R.game.dat = 0;
L0_uart3_sendArray((U8 *)&audio_select,9);
Lc_delay_ms(1000);
L2_task_go_Tdelay(D_task_GAME_SELECT, 0);
}
TTSS_Task_step(D_task_GAME_ZMG)
if (R.game.dat == 0x85)
{
R.game.dat = 0;
L0_uart3_sendArray((U8 *)&audio_begin,9);
Lc_delay_ms(1000);
}
else
{
L0_uart3_sendArray((U8 *)&audio_zmg_again,9);
Lc_delay_ms(1000);
}
TTSS_Task_end();
}
#if 0
//NFC协议:60 20 00 07 10 02 04 00 99 83 33 4E 36
//起始帧:60
//设备ID:20
//数据长度:00 07
//命令:10
//数据:02 04 00 99 83 33 4E
//校验:36 从起始帧到数据字段 [60 20 00 07 10 02 04 00 99 83 33 4E] 的所有字节的依次异或值
void parse_nfc_pkg()
{
TPC_NFC *p = (TPC_NFC *) ts_uart[uNum3].r.buf;
p->ocr = p->buf[p->num[0] << 8 | p->num[1]];
if(p->head == 0x60 && 1 /*count_ocr() */)
{
U16 num = (U16)p->num[0] << 8 | p->num[1];
//只读取0x10的协议
if(p->cmd == 0x10 && num == 0x07){
//1.判定NFC卡号是否符合规则
//2.保存NFC卡号到寄存器
R.nfc.nfc_no[0] = p->buf[num-2];
R.nfc.nfc_no[1] = p->buf[num-1];
//3.设定授权标志
R.auth_flag |= 0x01;
//4.打印日志
print_nfc_pkg(p);
}
}
}
void print_nfc_pkg(TPC_NFC *p)
{
L0_uart0_sendstr("\r\n--------- Recv NFC --------\r\n");
L0_uart0_sendstr("id : ");
L0_uart0_uchex(p->slaveId);
L0_uart0_0d0a();
L0_uart0_sendstr("num: ");
L0_uart0_uchex(p->num[0]);
L0_uart0_uchex(p->num[1]);
L0_uart0_0d0a();
L0_uart0_sendstr("cmd: ");
L0_uart0_uchex(p->cmd);
L0_uart0_0d0a();
L0_uart0_sendstr("no : ");
L0_uart0_sendArrayHex(p->buf, (U16)p->num[0] << 8 | p->num[1]);
L0_uart0_0d0a();
L0_uart0_sendstr("ocr: ");
L0_uart0_uchex(p->buf[(U16)p->num[0] << 8 | p->num[1]]);
L0_uart0_0d0a();
}
#endif

41
source/app/task_game.h

@ -0,0 +1,41 @@
////////////////////////////////////////////////////////////////////////////
///@copyright Copyright (c) 2018, 传控科技 All rights reserved.
///-------------------------------------------------------------------------
/// @file bsp_drv.h
/// @brief bsp @ driver config
///-------------------------------------------------------------------------
/// @version 1.0
/// @author CC
/// @date 20180331
/// @note cc_AS_stc02
//////////////////////////////////////////////////////////////////////////////
#ifndef _APP_TASK_GAME_H
#define _APP_TASK_GAME_H
#include "../ctask/task.h"
#include "../clib/clib.h"
typedef struct _s_task_game
{
TS_task task;
}S_TASK_GAME;
// typedef struct _tpc_nfc_
// {
// U8 head;
// U8 slaveId;
// U8 num[2];
// U8 cmd;
// U8 buf[TPC_NFC_DAT_MAX];
// U8 ocr;
// }TPC_GAME;
extern S_TASK_GAME _s_task_game;
extern void L3_task_game_init(void);
extern void L3_task_game_handler(S_TASK_GAME *s);
// extern void parse_game_pkg();
// extern void print_game_pkg(TPC_NFC *p);
#endif // #ifndef

253
source/app/task_key.c

@ -11,6 +11,9 @@
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
#include "task_key.h" #include "task_key.h"
#include "../clib/clib.h" #include "../clib/clib.h"
#include "../msp/uart3.h"
#include "../msp/uart0.h"
#include "app_task_speech.h"
struct _s_task_key_ s_task_key_handle; struct _s_task_key_ s_task_key_handle;
@ -26,6 +29,13 @@ void L0_key_init(void)
//EX1 = 1; //EX1 = 1;
L1_task_init(&s_task_key_handle.task); L1_task_init(&s_task_key_handle.task);
L3_task_s_go(s_task_key_handle,D_task_init); L3_task_s_go(s_task_key_handle,D_task_init);
s_task_key_handle.key1_ok = 0;
s_task_key_handle.key2_ok = 0;
s_task_key_handle.key3_ok = 0;
s_task_key_handle.time1= 0;
s_task_key_handle.time2 = 0;
s_task_key_handle.time3 = 0;
} }
#if 0 #if 0
void INT0_isrHanddle(void) D_SERVE_INT0 void INT0_isrHanddle(void) D_SERVE_INT0
@ -72,153 +82,158 @@ void INT1_isrHanddle(void) D_SERVE_INT1
void L3_task_key_handle(struct _s_task_key_ *p) void L3_task_key_handle(struct _s_task_key_ *p)
{ {
if(key1 == 0)
{
//Lc_delay_ms(10);//按键防抖
if(key1 == 0) 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)
{ {
p->key1_ok = 1;
if(p->time1 >= 180) while(!key1)
{ {
// L0_uart0_uc('#'); p->time1++;
// L0_uart0_uchex(p->time1); // 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}; if(p->key1_ok == 1)
LED3 = 1; {
Lc_delay_ms(100); if(p->time1 >= 10)
LED3 = 0; {
LED3 = ~LED3; // L0_uart0_uchex(p->time1);
L3_gm35_send_data((U8 *)&front,14); // //LED1 = ~LED1;
// LED4 = ~LED4;
L0_uart0_sendstr("zmg");
L0_uart0_0d0a();
L0_uart3_sendArray((U8 *)&audio_zmg,9);
LED1 = ~LED1;
}
else
{
// L0_uart0_uc('A');
// // 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 #if 0
U8 i; U8 i;
U8 mu[9]; U8 mu[9];
U8 music[9] = {0x7E,0x07,0xA3,0x43,0x30,0x30,0x39,0x86,0xEF}; 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 FF FE 0B 14 10 00 03 00 01 02 00 00 54 F3
//7E 07 A3 43 30 30 39 86 EF //7E 07 A3 43 30 30 39 86 EF
for(i = 0;i<9;i++) for(i = 0;i<9;i++)
{ {
mu[i] = music[i] & 0xFF; mu[i] = music[i] & 0xFF;
}
L0_uart3_sendArray((U8 *)&mu, 9);
L0_uart0_sendArray((U8 *)&mu, 9);
#endif
} }
p->key1_ok = 0; L0_uart3_sendArray((U8 *)&mu, 9);
p->time1=0; L0_uart0_sendArray((U8 *)&mu, 9);
#endif
}
p->key1_ok = 0;
p->time1 = 0;
} }
if(key2 == 0)
{
//Lc_delay_ms(10);//按键防抖
if(key2 == 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) p->key2_ok = 1;
{ while(!key2)
//LED1 = ~LED1;
}
else
{ {
p->time2++;
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
} }
p->key2_ok = 0; }
p->time2=0;
} }
#if 0 if(p->key2_ok == 1) //if(p->key2_ok) 这里的p->key2_ok总是被赋值为0xFB,原因未知
if(p->key2_ok)
{ {
if(p->time2>=180) L0_uart0_sendstr("p->key2_ok = ");
{ L0_uart0_uchex(p->key2_ok);
LED1 = ~LED1; L0_uart0_0d0a();
if(p->time2>=10)
{
L0_uart0_sendstr("zbt");
L0_uart0_0d0a();
L0_uart3_sendArray((U8 *)&audio_zbt,9);
LED2 = ~LED2;
} }
else else
{ {
LED2 = ~LED2; // 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
} }
p->key2_ok = 0; p->key2_ok = 0;
p->time2=0; p->time2 = 0;
} }
#endif #if 0
if(key3 == 0) if(p->key2_ok)
{ {
//Lc_delay_ms(10);//按键防抖 if(p->time2>=180)
if(key3 == 0) {
{ LED1 = ~LED1;
p->key3_ok = 1; }
else
{
LED2 = ~LED2;
}
p->key2_ok = 0;
p->time2=0;
}
#endif
if(key3 == 0)
{
//Lc_delay_ms(10);//按键防抖
if(key3 == 0)
{
p->key3_ok = 1;
while(!key3) while(!key3)
{ {
p->time3++; p->time3++;
} }
} }
} }
if(p->key3_ok) if(p->key3_ok == 1) //if(p->key3_ok) 这里的p->key3_ok总是被赋值为0x12,原因未知
{ {
if(p->time3>=180) if(p->time3>=10)
{ {
LED3 = ~LED3; L0_uart0_sendstr("SchulteGrid");
LED2 = ~LED2; L0_uart0_0d0a();
LED1 = ~LED1; L0_uart3_sendArray((U8 *)&audio_SchulteGrid,9);
LED4 = ~LED4; // LED3 = ~LED3;
Lc_delay_ms(100); // LED2 = ~LED2;
// LED1 = 0; // LED1 = ~LED1;
L3_gm35_send_str("+++"); // LED4 = ~LED4;
Lc_delay_ms(1000); // Lc_delay_ms(100);
//s_task_gm35_flow.mode=W600_AP; // // LED1 = 0;
L3_task_gm35_flow_init(W600_AP); // L3_gm35_send_str("+++");
//G.w600_mode = 0; // Lc_delay_ms(1000);
// //s_task_gm35_flow.mode=W600_AP;
// L3_task_gm35_flow_init(W600_AP);
// //G.w600_mode = 0;
} }
else else
{ {
//LED2 = ~LED2; //LED2 = ~LED2;
} }
p->key3_ok = 0; p->key3_ok = 0;
p->time3=0; p->time3 = 0;
} }
} }

2
source/app/task_register.c

@ -27,7 +27,7 @@ void L3_task_reglisten_init(void)
} }
//配置模式任务 //配置模式任务
#define D_task_WEIGHT_COUNT 0x50 #define D_task_WEIGHT_COUNT 0x50
#define D_task_IAP 0x51 #define D_task_IAP 0x51
void L3_task_reglisten_handle(S_TASK_REGVAL_LISTEN *s) void L3_task_reglisten_handle(S_TASK_REGVAL_LISTEN *s)
{ {

2
source/app/task_w600.c

@ -244,13 +244,11 @@ void L3_task_gm35_flow_init(U8 mode)
#define TTSS_TASK_MODE_CONFIG_WAIT 0x2A #define TTSS_TASK_MODE_CONFIG_WAIT 0x2A
#define TTSS_TASK_MODE_SERVER_CLOSE 0x2B #define TTSS_TASK_MODE_SERVER_CLOSE 0x2B
#define INS_TIMEOUT 5 #define INS_TIMEOUT 5
#define GM35_SEND_DATA_INTERVAL 300 #define GM35_SEND_DATA_INTERVAL 300
#define GM35_SEND_HEART_INTERVAL 60 #define GM35_SEND_HEART_INTERVAL 60
#define GM35_SEND_CIPSTATUS_INTERVAL 5 #define GM35_SEND_CIPSTATUS_INTERVAL 5
void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s) void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
{ {
TTSS_Task_init() TTSS_Task_init()

12
source/app/task_w600.h

@ -23,13 +23,15 @@
////<<<<<<<<<<<<<<<<<<< GM35模块 AT操作指令 <<<<<<<<<<<<<<<<<<<<<<<< ////<<<<<<<<<<<<<<<<<<< GM35模块 AT操作指令 <<<<<<<<<<<<<<<<<<<<<<<<
#define AT_INS_ATE0 "ATE0\r\n" //模块查询+关闭回显 #define AT_INS_ATE0 "ATE0\r\n" //模块查询+关闭回显
#define AT_INS_ST "AT+CWMODE=1\r\n" //进入station模式 #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_WIFI "AT+CWJAP_DEF=\"ccsens\",\"ccsens123\"\r\n" //
#define AT_INS_ST_CIPMUX0 "AT+CIPMUX=0\r\n" //GPRS操作指令 #define AT_INS_ST_CIPMUX0 "AT+CIPMUX=0\r\n" //
#define AT_INS_ST_TCP "AT+CIPSTART=\"TCP\",\"www.tall.wiki\",8195\r\n" //连接服务器 #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_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_CIPMODE1 "AT+CIPMODE=1\r\n" //
#define AT_INS_ST_CIPSEND "AT+CIPSEND\r\n" //主动关闭连接 #define AT_INS_ST_CIPSEND "AT+CIPSEND\r\n" //
#define AT_INS_ST_CIPMODE0 "AT+CIPMODE=0\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 "AT+CWMODE=2\r\n" //进入AP模式

21
source/asp/asp_oid.c

@ -285,4 +285,25 @@ void L1_oid_debug(u8 *para)
ET0 = 1; ET0 = 1;
} }
//oid协议:
// 00 47 A0 00 00 00 4E 86 (MSB)
// 00 45 40 00 00 00 4E 86 (MSB)
// 00 4A A0 00 00 00 4E 86 (MSB)
//type部分 63-60 0000 (type)
//保留部分 59-54 00 0000
//angle部分 53–45 0 0000 0000b (angle)
//保留部分 44 0
//小数部分 43–36 1111 0010b (Y decimal)
//小数部分 35–28 0111 0100b (X decimal)
//整数部分 27–14 00 0000 0000 0100b (Y integer)
//整数部分 13–0 00 0000 0000 0100b (X integer)
void parse_oid_pkg()
{
}

12
source/bsp/bsp_config.c

@ -70,8 +70,12 @@ void L0_board_config(void)
D_stdIO_P0(BITN0); D_stdIO_P0(BITN0);
D_stdIO_P0(BITN1); D_stdIO_P0(BITN1);
D_stdIO_P1(BITN6); D_stdIO_P1(BITN6);
D_stdIO_P3(BITN2);
D_stdIO_P3(BITN3); // D_stdIO_P3(BITN2);
D_HighR_P3(BITN2);
D_HighR_P3(BITN3);
D_stdIO_P3(BITN4); D_stdIO_P3(BITN4);
D_stdIO_P3(BITN5); D_stdIO_P3(BITN5);
D_stdIO_P3(BITN6); D_stdIO_P3(BITN6);
@ -81,7 +85,9 @@ void L0_board_config(void)
//D_HighI_P5(BITN5); //D_HighI_P5(BITN5);
D_stdIO_P0(BITN2); D_stdIO_P0(BITN2);
D_OpenD_P5(BITN5); D_OpenD_P5(BITN5);
D_OpenD_P4(BITN0);
D_HighR_P4(BITN0);
D_HighI_P3(BITN4); D_HighI_P3(BITN4);
D_HighI_P5(BITN0); D_HighI_P5(BITN0);
D_HighI_P0(BITN5); D_HighI_P0(BITN5);

4
source/bsp/bsp_config.h

@ -147,8 +147,8 @@
#define D_UART0_485_TYPE TYPE_485_NONE //UART0启用485 #define D_UART0_485_TYPE TYPE_485_NONE //UART0启用485
#define D_UART0_485_SLAVER_ID_BROADCAST 0xFF //485从机总是响应0xFF消息 #define D_UART0_485_SLAVER_ID_BROADCAST 0xFF //485从机总是响应0xFF消息
#define D_UART0_485_SLAVER_ID 0x01 //板卡作为485从机 slaverId #define D_UART0_485_SLAVER_ID 0x01 //板卡作为485从机 slaverId
#define D_UART0_485_TX() P32 = 1; // #define D_UART0_485_TX() P32 = 1;
#define D_UART0_485_RX() P32 = 0; // #define D_UART0_485_RX() P32 = 0;
#define D_UART2_485_TYPE TYPE_485_NONE //UART2不启用485 #define D_UART2_485_TYPE TYPE_485_NONE //UART2不启用485
#define D_UART3_485_TYPE TYPE_485_NONE //UART2不启用485 #define D_UART3_485_TYPE TYPE_485_NONE //UART2不启用485
#define D_UART4_485_TYPE TYPE_485_NONE //UART2不启用485 #define D_UART4_485_TYPE TYPE_485_NONE //UART2不启用485

184
source/bsp/bsp_oid.c

@ -1,9 +1,12 @@
#include "bsp_oid.h" #include "bsp_oid.h"
#include "intrins.h" #include "intrins.h"
#include "../msp/uart0.h" #include "../msp/uart0.h"
#include "../msp/uart3.h"
#include <stdio.h> #include <stdio.h>
#include "../ctask/task.h" #include "../ctask/task.h"
#include "../ctask/tick.h" #include "../ctask/tick.h"
#include "../app/app_task_speech.h"
/****************************************************************************************************** /******************************************************************************************************
@ -13,7 +16,8 @@ AppDevice eAppDevice = ePointRead_2000A;
///volatile uint32_t RecvData[3]; ///volatile uint32_t RecvData[3];
Ts_OID_ ts_oid; Ts_OID_ ts_oid;
uint8_t TransCmd[7]; uint8_t TransCmd[7];
///#define MAIN_Fosc 11059260L ///#define MAIN_Fosc 11059260L
#if 0 #if 0
#define MAIN_Fosc (12459260L/4) #define MAIN_Fosc (12459260L/4)
@ -106,7 +110,7 @@ uint16_t L0_oid_RecvAck16(void)
uint16_t AckValue; uint16_t AckValue;
AckValue = 0; AckValue = 0;
/// ///
LD_Oid_SDIO_OUT(); LD_Oid_SDIO_OUT();
delay_us(D_DELAY_10US); delay_us(D_DELAY_10US);
LD_Oid_SCK_HIGH(); LD_Oid_SCK_HIGH();
LD_Oid_SDIO_LOW(); LD_Oid_SDIO_LOW();
@ -158,53 +162,20 @@ void L0_oid_Recv64(void)
LD_Oid_SCK_HIGH(); LD_Oid_SCK_HIGH();
delay_us(D_DELAY_10US); delay_us(D_DELAY_10US);
LD_Oid_SCK_LOW(); LD_Oid_SCK_LOW();
#if 0
if(OID_DET)
{
if(i < 32)
{
RecvData[0] += 1;
}
if(i>=32 && i<64)
{
RecvData[1] += 1;
}
}
if(i < 31)
{
RecvData[0] <<= 1;
}
if( i >31 && i < 63)
{
RecvData[1] <<= 1;
}
#endif
///#else
ts_oid.rec.d[i/8] <<= 1; ts_oid.rec.d[i/8] <<= 1;
if(OID_DET) if(OID_DET)
{ {
ts_oid.rec.d[i/8] |= 1; ts_oid.rec.d[i/8] |= 1;
// RecvData[1] += 1;
} }
else else
{ {
ts_oid.rec.d[i/8] &= 0xfe; ts_oid.rec.d[i/8] &= 0xfe;
} }
// RecvData[1] <<= 1;
delay_us(D_DELAY_10US); delay_us(D_DELAY_10US);
} }
ts_oid.time = D_sys_now; ts_oid.time = D_sys_now;
delay_us(D_DELAY_ROD_80US); delay_us(D_DELAY_ROD_80US);
@ -283,7 +254,6 @@ uint32_t L1_oidReadRegister (uint16_t Data1)
if(!OID_DET) if(!OID_DET)
{ {
L0_oid_Recv64(); L0_oid_Recv64();
/// uxReturn = RecvData[1]; /// uxReturn = RecvData[1];
uxReturn = ts_oid.rec.d32[1]; uxReturn = ts_oid.rec.d32[1];
uxReturn &= 0xFFFF; uxReturn &= 0xFFFF;
@ -403,64 +373,110 @@ vU16 Lc_dec_us100(vU16 pint,u8 pdec)
} }
void L2_oid_ParseF1(void) void L2_oid_ParseF1(void) //解析
{ {
/// static uint8_t ucLogNum = 0;
uint16_t u16i = 0; uint16_t u16i = 0;
uint32_t u32t[2] = 0; uint32_t u32t[2] = 0;
/// L1_print_rcv("\r\n F1="); // L1_print_rcv("\r\n F1=");
ts_oid.oid_type = ts_oid.rec.d[0]; ts_oid.oid_type = ts_oid.rec.d[0];
R.game.type = ts_oid.rec.d[6];
R.game.dat = ts_oid.rec.d[7];
L0_uart0_sendstr("R.game.type = ");
L0_uart0_uchex(R.game.type);
L0_uart0_0d0a();
L0_uart0_sendstr("R.game.dat = ");
L0_uart0_uchex(R.game.dat);
L0_uart0_0d0a();
// R.oid.type = ts_oid.rec.d[6];
// R.oid.dat = ts_oid.rec.d[7];
// d[7]
L0_uart0_sendstr("ts_oid.rec.d[0] = "); L0_uart0_sendstr("ts_oid.rec.d[0] = ");
L0_uart0_uchex(ts_oid.rec.d[0]); L0_uart0_uchex(ts_oid.rec.d[0]);
L0_uart0_0d0a(); L0_uart0_0d0a();
L0_uart0_sendstr("ts_oid.rec.d[1] = "); L0_uart0_sendstr("ts_oid.rec.d[1] = ");
L0_uart0_uchex(ts_oid.rec.d[1]); L0_uart0_uchex(ts_oid.rec.d[1]);
L0_uart0_0d0a(); L0_uart0_0d0a();
L0_uart0_sendstr("ts_oid.rec.d[2] = "); L0_uart0_sendstr("ts_oid.rec.d[2] = ");
L0_uart0_uchex(ts_oid.rec.d[2]); L0_uart0_uchex(ts_oid.rec.d[2]);
L0_uart0_0d0a(); L0_uart0_0d0a();
L0_uart0_sendstr("ts_oid.rec.d[3] = "); L0_uart0_sendstr("ts_oid.rec.d[3] = ");
L0_uart0_uchex(ts_oid.rec.d[3]); L0_uart0_uchex(ts_oid.rec.d[3]);
L0_uart0_0d0a();
L0_uart0_sendstr("ts_oid.rec.d[4] = ");
L0_uart0_uchex(ts_oid.rec.d[4]);
L0_uart0_0d0a(); L0_uart0_0d0a();
L0_uart0_sendstr("ts_oid.rec.d[5] = ");
///////// L0_uart0_uchex(ts_oid.rec.d[5]);
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_0d0a();
L0_uart0_sendstr("ts_oid.rec.d16[2] = "); L0_uart0_sendstr("ts_oid.rec.d[6] = ");
L0_uart0_ushex(ts_oid.rec.d16[2]); L0_uart0_uchex(ts_oid.rec.d[6]);
L0_uart0_0d0a(); L0_uart0_0d0a();
L0_uart0_sendstr("ts_oid.rec.d16[3] = "); L0_uart0_sendstr("ts_oid.rec.d[7] = ");
L0_uart0_ushex(ts_oid.rec.d16[3]); L0_uart0_uchex(ts_oid.rec.d[7]);
L0_uart0_0d0a(); L0_uart0_0d0a();
// // d16
// ///////// // L0_uart0_sendstr("ts_oid.rec.d16[0] = ");
// L0_uart0_ushex(ts_oid.rec.d16[0]);
L0_uart0_sendstr("ts_oid.rec.d32[0] = "); // L0_uart0_0d0a();
L0_uart0_ulhex(ts_oid.rec.d32[0]); // L0_uart0_sendstr("ts_oid.rec.d16[1] = ");
L0_uart0_0d0a(); // L0_uart0_ushex(ts_oid.rec.d16[1]);
L0_uart0_sendstr("ts_oid.rec.d32[1] = "); // L0_uart0_0d0a();
L0_uart0_ulhex(ts_oid.rec.d32[1]); // L0_uart0_sendstr("ts_oid.rec.d16[2] = ");
L0_uart0_0d0a(); // L0_uart0_ushex(ts_oid.rec.d16[2]);
// ///////// // L0_uart0_0d0a();
// L0_uart0_sendstr("ts_oid.rec.d16[3] = ");
L0_uart0_sendstr("ts_oid.oid_type = "); // L0_uart0_ushex(ts_oid.rec.d16[3]);
L0_uart0_uchex(ts_oid.oid_type); // L0_uart0_0d0a();
L0_uart0_0d0a(); // // d32
// L0_uart0_sendstr("ts_oid.rec.d32[0] = ");
// L0_uart0_ulhex(ts_oid.rec.d32[0]);
if(1)// if(ts_oid.rec.d[0] == 0x60) // 4 // L0_uart0_0d0a();
// L0_uart0_sendstr("ts_oid.rec.d32[1] = ");
// L0_uart0_ulhex(ts_oid.rec.d32[1]);
// L0_uart0_0d0a();
// // oid_type
// L0_uart0_sendstr("ts_oid.oid_type = ");
// L0_uart0_uchex(ts_oid.oid_type);
// L0_uart0_0d0a();
if(ts_oid.rec.d[0] == 0x00) // 4
{/// Bit43~Bit0:x,y 轴的坐标数据,x 坐标和 y 坐标都是由整数和小数部分 {/// Bit43~Bit0:x,y 轴的坐标数据,x 坐标和 y 坐标都是由整数和小数部分
///组成,整数部分 14bit,小数部分 8bit ///组成,整数部分 14bit,小数部分 8bit
G.pen_t = 0; G.pen_t = 0;
ts_oid.last_time = s_nos_tick.t_1s; ts_oid.last_time = s_nos_tick.t_1s;
ts_oid.Xint = ts_oid.rec.d16[3] & 0x3fff; ts_oid.Xint = ts_oid.rec.d16[3] & 0x3fff;
#if 0
// 测试oid,led,喇叭联动
if(ts_oid.rec.d16[3] == 0x4E85)
{
L0_uart3_sendArray((U8 *)&audio_SchulteGrid,9);
LED1 = ~LED1;
}
if(ts_oid.rec.d16[3] == 0x4E86)
{
L0_uart3_sendArray((U8 *)&audio_up,9);
LED2 = ~LED2;
}
if(ts_oid.rec.d16[3] == 0x4E87)
{
L0_uart3_sendArray((U8 *)&audio_down,9);
LED3 = ~LED3;
}
if(ts_oid.rec.d16[3] == 0x4E88)
{
L0_uart3_sendArray((U8 *)&audio_zmg,9);
LED4 = ~LED4;
}
#endif
if(ts_oid.Xint < 300)///取决于图片 fixme: cc if(ts_oid.Xint < 300)///取决于图片 fixme: cc //0E87 --- 3719
{ {
ts_oid.oid_x = 1; ts_oid.oid_x = 1;
@ -547,19 +563,17 @@ void L2_oid_ParseF1(void)
//// 普通码(bit61=0) //// 普通码(bit61=0)
//// Bit60:码是否有效(1:无效码;0:有效码) //// Bit60:码是否有效(1:无效码;0:有效码)
//// Bit59~Bit28:保留 //// Bit59~Bit28:保留
/// Bit27~Bit0:有效数据 /// Bit27~Bit0:有效数据
/// G.oid_p = 1; /// G.oid_p = 1;
ts_oid.oid_p = 1; ts_oid.oid_p = 1;
ts_oid.gCode = ts_oid.rec.d32[1]&0x0fFFffFF; ts_oid.gCode = ts_oid.rec.d32[1]&0x0fFFffFF;
///R.oid3_order = (int)ts_oid.gCode *100; /// R.oid3_order = (int)ts_oid.gCode *100;
printf(" %ld %x ",ts_oid.gCode,(int)ts_oid.gCode);
printf(" %ld %x ",ts_oid.gCode,(int)ts_oid.gCode);
L0_uart0_ulhex(ts_oid.gCode); L0_uart0_ulhex(ts_oid.gCode);
}else }
else
{ {
ts_oid.oid_type = 0; ts_oid.oid_type = 0;
L0_uart0_uc(','); L0_uart0_uc(',');
@ -704,10 +718,10 @@ void L1_Oid_readoid(void)
{ {
if(!OID_DET) if(!OID_DET)
{ {
LED1 = ~LED1; // LED1 = ~LED1;
ts_oid.pre_x = ts_oid.X100; ts_oid.pre_x = ts_oid.X100;
ts_oid.pre_y = ts_oid.Y100; ts_oid.pre_y = ts_oid.Y100;
L0_oid_Recv64(); L0_oid_Recv64(); //ts_oid.rec.d[i/8] <<= 1;
L2_oid_ParseF1(); L2_oid_ParseF1();
//L2_oid_status(); //L2_oid_status();
L1_print_rcv("\r\n "); L1_print_rcv("\r\n ");
@ -729,7 +743,7 @@ void L1_Oid_readoid(void)
{ {
G.pen_up = 1; G.pen_up = 1;
G.pen_t =1; G.pen_t =1;
//L0_uart2_sendstr("789"); L0_uart0_sendstr("789");
} }
/// delay_us(100); /// delay_us(100);
} }

113
source/bsp/bsp_oid.h

@ -1,8 +1,8 @@
#ifndef __OPTICALDATA__ #ifndef __OPTICALDATA__
#define __OPTICALDATA__ #define __OPTICALDATA__
#include "bsp_config.h" #include "bsp_config.h"
#include "../app/app_config.h" #include "../app/app_config.h"
/****************************************************************************************************** /******************************************************************************************************
@ -35,15 +35,15 @@
#define LD_Oid_SDIO_INIT() D_HighR_P5(BITN0) #define LD_Oid_SDIO_INIT() D_HighR_P5(BITN0)
#define LD_Oid_SDIO_LOW() D_P50_OFF() #define LD_Oid_SDIO_LOW() D_P50_OFF()
#define LD_Oid_SDIO_HIGH() D_P50_ON() #define LD_Oid_SDIO_HIGH() D_P50_ON()
#define LD_Oid_SDIO_IN() D_HighR_P5(BITN0)//高阻输入 #define LD_Oid_SDIO_IN() D_HighR_P5(BITN0)//高阻输入
#define LD_Oid_SDIO_OUT() D_HighI_P5(BITN0)//推挽输出 #define LD_Oid_SDIO_OUT() D_HighI_P5(BITN0)//推挽输出
#define LD_Oid_SDIO_AT() D_P50_AT() #define LD_Oid_SDIO_AT() D_P50_AT()
#define LD_Oid_DIO_INIT(); LD_Oid_SCK_INIT();LD_Oid_SDIO_INIT(); #define LD_Oid_DIO_INIT(); LD_Oid_SCK_INIT();LD_Oid_SDIO_INIT();
#define OID_DET P50 #define OID_DET P50
@ -54,52 +54,50 @@
////20211229依据53xx和54xx系列操作 ////20211229依据53xx和54xx系列操作
#define USERCMD_20FPS 0x24 #define USERCMD_20FPS 0x24
#define USERCMD_30FPS 0x25 #define USERCMD_30FPS 0x25
#define USERCMD_40FPS 0x26 #define USERCMD_40FPS 0x26
#define USERCMD_50FPS 0x27 #define USERCMD_50FPS 0x27
#define USERCMD_80FPS 0x3C #define USERCMD_80FPS 0x3C
#define USERCMD_80FPS_EXIT 0x3B #define USERCMD_80FPS_EXIT 0x3B
#define USERCMD_DECODE_SHUT 0x4D #define USERCMD_DECODE_SHUT 0x4D
#define USERCMD_LIANCHUAN 0x40 #define USERCMD_LIANCHUAN 0x40
#define USERCMD_SUSPEND 0x57 #define USERCMD_SUSPEND 0x57
#define USERCMD_EN_ANGLE 0x10 #define USERCMD_EN_ANGLE 0x10
#define USERCMD_EN_POSITION 0x35 #define USERCMD_EN_POSITION 0x35
#define USERCMD_SW_POSITION 0x43 #define USERCMD_SW_POSITION 0x43
#define USERCMD_DATA_FORMAT_2 0x2C #define USERCMD_DATA_FORMAT_2 0x2C
#define USERCMD_LOU_GUANG 0xD7 #define USERCMD_LOU_GUANG 0xD7
#define USERCMD_POWER_DOWN 0x56 #define USERCMD_POWER_DOWN 0x56
#define OIDCMD_POWER_ON 0x0000FFF8
#define OIDCMD_POWER_OFF 0x0000FFF7
#define OIDCMD_POWER_ON 0x0000FFF8
#define OIDCMD_POWER_OFF 0x0000FFF7
/****************************************************************************************************** /******************************************************************************************************
OID版本 OID版本
*******************************************************************************************************/ *******************************************************************************************************/
#define OID_VER_D 0x1169 #define OID_VER_D 0x1169
#define OID_VER_REG 0x1670 #define OID_VER_REG 0x1670
#define OID_VER_F 0x1168 #define OID_VER_F 0x1168
#define REG_READOID_SET 0xD40 #define REG_READOID_SET 0xD40
#define REG_EN_DECODE 0xD63 #define REG_EN_DECODE 0xD63
#define REG_ROM008 0xDA5 #define REG_ROM008 0xDA5
#define REG_ROM009 0xDA6 #define REG_ROM009 0xDA6
#define ROM_009 0x09 #define ROM_009 0x09
#define ROM_008 0x00 #define ROM_008 0x00
/****************************************************************************************************** /******************************************************************************************************
Dataformat 2 Dataformat 2
*******************************************************************************************************/ *******************************************************************************************************/
#define CHECK_INVALID_DF2 0x40000000 #define CHECK_INVALID_DF2 0x40000000
#define CHECK_OID_VERSION_DF2 0xFC000000 #define CHECK_OID_VERSION_DF2 0xFC000000
#define OID_2_GENERAL_DF2 0x00000000 #define OID_2_GENERAL_DF2 0x00000000
#define OID_3_GENERAL_DF2 0x08000000 #define OID_3_GENERAL_DF2 0x08000000
#define OID_3_POSITION_DF2 0x04000000 #define OID_3_POSITION_DF2 0x04000000
#define OID_3S_GENERAL_DF2 0x10000000 #define OID_3S_GENERAL_DF2 0x10000000
#define OID_3S_POSITION_DF2 0x0C000000 #define OID_3S_POSITION_DF2 0x0C000000
#define OID_35_GENERAL_DF2 0x14000000 #define OID_35_GENERAL_DF2 0x14000000
#define OID_4_GENERAL_DF2 0x1C000000 #define OID_4_GENERAL_DF2 0x1C000000
#define OID_4_POSITION_DF2 0x18000000 #define OID_4_POSITION_DF2 0x18000000
#define OID_4C_POSITION_DF2 0x20000000 #define OID_4C_POSITION_DF2 0x20000000
/****************************************************************************************************** /******************************************************************************************************
*******************************************************************************************************/ *******************************************************************************************************/
@ -140,21 +138,22 @@ uint8_t L1_oid_CheckVersionAndInit(AppDevice eAppDevice);
typedef struct _ts_OID typedef struct _ts_OID
{//8byte {
/// u8 d[8];
U_U64 rec; U_U64 rec;
U8 oid_type; //类型63–60 0110b
U16 angle; // 53–45 Angle 53,52 51 50 49,48 47 46 45 // Data format of OID
U8 Ydec; //小数部分43–36 1111 0010b (Y decimal) U8 oid_type; //oid类型 :63–60 0110b
U8 Xdec; //小数部分35–28 0111 0100b (X decimal) U16 angle; //Angle :53–45
vU16 Yint; //整数部分 27–14 00 0000 0000 0100b (Y integer) U8 Ydec; //小数部分(Y decimal) :43–36 1111 0010b
vU16 Xint; //整数部分 13–0 00 0000 0000 0100b (X integer) U8 Xdec; //小数部分(X decimal) :35–28 0111 0100b
vU16 Yint; //整数部分(Y integer) :27–14 00 0000 0000 0100b
vU16 Xint; //整数部分(X integer) :13–0 00 0000 0000 0100b
vU16 Y100,X100;///放大100倍的输出 vU16 Y100,X100; ///放大100倍的输出
vU32 gCode; // vU32 gCode; //
vU32 time; vU32 time;
vU32 last_time; vU32 last_time;
vU32 overtime; vU32 overtime;

4
source/bsp/rs485.h

@ -7,8 +7,8 @@
//485_RE P33 //485_RE P33
//485_DE P32 //485_DE P32
#define D_485_TX() P32 = 1;// >750us // #define D_485_TX() P32 = 1;// >750us
#define D_485_RX() P32 = 0; // #define D_485_RX() P32 = 0;
extern void L2_485_init(void); extern void L2_485_init(void);
#endif #endif

2
source/msp/UART0.C

@ -43,7 +43,7 @@ void L0_uart0_buf_init(void)
D_uart0_ES_INT(1); D_uart0_ES_INT(1);
//默认处于接收状态 //默认处于接收状态
D_UART0_485_RX() // D_UART0_485_RX()
} }
/************************************************* /*************************************************

Loading…
Cancel
Save