From 6ede45ccdd7b21277eb41f23cdff6291ace7bb9d Mon Sep 17 00:00:00 2001 From: Zhangwen <13970730+mkc46119@user.noreply.gitee.com> Date: Sat, 8 Mar 2025 14:36:14 +0800 Subject: [PATCH] =?UTF-8?q?feature:1.oid=E8=AF=BB=E5=8F=96bsp=E5=B1=82?= =?UTF-8?q?=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/settings.json | 4 +- keilp/cc_as_stc02_ps5ws.uvprojx | 9 +- source/app/app_config.c | 5 +- source/app/main.c | 28 +- source/bsp/bsp_oid.c | 465 ++-------------- source/bsp/bsp_oid.h | 4 + source/bsp/bsp_oid_undelect..h | 183 +++++++ source/bsp/bsp_oid_undelect.c | 903 ++++++++++++++++++++++++++++++++ 8 files changed, 1181 insertions(+), 420 deletions(-) create mode 100644 source/bsp/bsp_oid_undelect..h create mode 100644 source/bsp/bsp_oid_undelect.c diff --git a/.vscode/settings.json b/.vscode/settings.json index b75f5ca..c1febf6 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -80,6 +80,8 @@ "msp_adc.h": "c", "system_error": "c", "*.tcc": "c", - "ctype.h": "c" + "ctype.h": "c", + "time.h": "c", + "task_pen_head.h": "c" } } \ No newline at end of file diff --git a/keilp/cc_as_stc02_ps5ws.uvprojx b/keilp/cc_as_stc02_ps5ws.uvprojx index fc2b632..29bc1aa 100644 --- a/keilp/cc_as_stc02_ps5ws.uvprojx +++ b/keilp/cc_as_stc02_ps5ws.uvprojx @@ -394,9 +394,14 @@ ..\source\app\task_w600.c - task_SmartConfig.c + app_eeprom.c 1 - ..\source\app\task_SmartConfig.c + ..\source\app\app_eeprom.c + + + msp_adc.c + 1 + ..\source\msp\msp_adc.c diff --git a/source/app/app_config.c b/source/app/app_config.c index 67cf09d..f121cd5 100644 --- a/source/app/app_config.c +++ b/source/app/app_config.c @@ -112,7 +112,7 @@ void L3_iap_2_reg(void) void L3_reg_reset(void) { - U8 i = 0; + U8 i = 0; R.app_status = POW_OFF; @@ -164,9 +164,6 @@ void L3_reg_reset(void) G.datapkg = 0; G.pen_t = 1; G.debug = 1; - - - } diff --git a/source/app/main.c b/source/app/main.c index 078269b..49fcab7 100644 --- a/source/app/main.c +++ b/source/app/main.c @@ -36,10 +36,10 @@ void L0_BSP_init(void) // WIFI初始化 L2_Wifi_init(); // OID初始化 - L2_OID_init(); + // L2_OID_init(); LED2 = 0; - // L0_Oid_Init(); + L0_Oid_Init(); } void L0_TASK_init(void) { @@ -93,14 +93,34 @@ void main(void) while(1) { + // OID数据采集 + L1_Oid_readoid(); + if(1 == s_nos_tick.t1s_heartbeat)//1s { s_nos_tick.t1s_heartbeat = 0;//置0清空 - // L0_uart0_uc('.'); + L0_uart0_uc('.'); // L0_uart0_sendstr("ADC = "); - L0_uart0_us(L1_ADC_Read(12)); + // L0_uart0_us(L1_ADC_Read(12)); } + if (ts_oid.ok == 1) + { + ts_oid.ok = 0; + 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"); + } // // 系统状态任务 // L3_task_appstatus_handler(&_s_task_appstatus); // // 系统状态测试任务 diff --git a/source/bsp/bsp_oid.c b/source/bsp/bsp_oid.c index 5a5e0df..87b5c12 100644 --- a/source/bsp/bsp_oid.c +++ b/source/bsp/bsp_oid.c @@ -7,34 +7,24 @@ #include "../ctask/tick.h" #include "../app/app_task_speech.h" #include "../bsp/bsp_WT2605B.h" - - +#include "../bsp/bsp_wifi.h" /****************************************************************************************************** 变量定义 *******************************************************************************************************/ AppDevice eAppDevice = ePointRead_2000A; -///volatile uint32_t RecvData[3]; Ts_OID_ ts_oid; - uint8_t TransCmd[7]; - -///#define MAIN_Fosc 11059260L #if 0 #define MAIN_Fosc (12459260L/4) #define D_DELAY_10US 10 #define D_DELAY_ROD_80US 80 - - #else #define MAIN_Fosc (12459260L/2) #define D_DELAY_10US 20 #define D_DELAY_ROD_80US 160 - - #endif - //======================================================================== // 函数: void delay_ms(uint8_t ms) // 描述: 延时函数。 @@ -52,7 +42,6 @@ void delay_ms(uint8_t ms) while(--i); //10T per loop }while(--ms); } - void delay_us(uint8_t us) { // uint16_t i; @@ -63,11 +52,6 @@ void delay_us(uint8_t us) }while(--us); } -/****************************************************************************************************** -Function: -Input: -Output: -*******************************************************************************************************/ void L0_oid_SendCmd(uint8_t Cmd) { uint8_t i; @@ -110,7 +94,6 @@ uint16_t L0_oid_RecvAck16(void) uint8_t i; uint16_t AckValue; AckValue = 0; -/// LD_Oid_SDIO_OUT(); delay_us(D_DELAY_10US); LD_Oid_SCK_HIGH(); @@ -129,12 +112,10 @@ uint16_t L0_oid_RecvAck16(void) { AckValue +=1; } - if(i < 15) { AckValue <<= 1; } - delay_us(D_DELAY_10US); } delay_us(D_DELAY_ROD_80US); @@ -142,7 +123,6 @@ uint16_t L0_oid_RecvAck16(void) return AckValue; } - void L0_oid_Recv64(void) { uint8_t i; @@ -187,10 +167,7 @@ uint8_t L1_oid_TransCmd(uint8_t Cmd) { uint8_t TxCmd;///,det_busy; uint32_t RxAckCnt = 0; - -// L0_uart0_sendstr("\r\n w cmd="); -/// L0_uart0_uchex(Cmd); -// + while(!OID_DET) { L0_oid_Recv64(); @@ -213,14 +190,12 @@ uint8_t L1_oid_TransCmd(uint8_t Cmd) break; } } - if(RxAckCnt <= D_oid_waitrcv_delay) { TxCmd = (uint8_t)L0_oid_RecvAck16(); TxCmd -= 1; if(TxCmd == Cmd) { - L0_uart0_sendstr("\r\nCmd="); L0_uart0_uchex(Cmd);L0_uart0_uc('-'); L0_uart0_uchex(TxCmd); @@ -231,43 +206,42 @@ uint8_t L1_oid_TransCmd(uint8_t Cmd) uint32_t L1_oidReadRegister (uint16_t Data1) { - uint8_t i,Ret; - uint32_t uxReturn; + uint8_t i,Ret; + uint32_t uxReturn; - TransCmd[0] = 0x74; - TransCmd[1] = 3; - TransCmd[2] = Data1 >> 8; - TransCmd[3] = Data1 & 0x00FF; - TransCmd[4] = (TransCmd[1] + TransCmd[2] + TransCmd[3]) & 0xFF; + TransCmd[0] = 0x74; + TransCmd[1] = 3; + TransCmd[2] = Data1 >> 8; + TransCmd[3] = Data1 & 0x00FF; + TransCmd[4] = (TransCmd[1] + TransCmd[2] + TransCmd[3]) & 0xFF; - for(i=0;i<5;i++) - { + for(i=0;i<5;i++) + { Ret = L1_oid_TransCmd(TransCmd[i]); if(Ret == 0) { return 0x5FFFFFFF; } - } + } - i = 0; - while(1) - { - if(!OID_DET) - { - L0_oid_Recv64(); - /// uxReturn = RecvData[1]; - uxReturn = ts_oid.rec.d32[1]; - uxReturn &= 0xFFFF; - return uxReturn; - } - - delay_us(100); - i += 1; - if(i >= 20) // check 100ms - { - return 0x2FFFFFFF; - } - } + i = 0; + while(1) + { + if(!OID_DET) + { + L0_oid_Recv64(); + //uxReturn = RecvData[1]; + uxReturn = ts_oid.rec.d32[1]; + uxReturn &= 0xFFFF; + return uxReturn; + } + delay_us(100); + i += 1; + if(i >= 20) // check 100ms + { + return 0x2FFFFFFF; + } + } } /****************************************************************************************************** @@ -307,55 +281,8 @@ uint8_t Write_Register(uint16_t Data1,uint16_t Data2) void L1_print_rcv(char *str) { L0_uart0_sendstr(str); - /******** -// Lc_delay_ms(1); - L0_uart0_ulhex(RecvData[0]); -// Lc_delay_ms(1); - L0_uart0_uc(0x09); - L0_uart0_ulhex(RecvData[1]); - - L0_uart0_uc(0x09); - **********/ - -/// L0_uart0_ulhex(ts_oid.rec.d32[1]);L0_uart0_uc(0x09); - /// - -// L0_uart0_sendArrayHex(ts_oid.rec.d,8); - ///L2_oid_ParseF1(); - } -/****************************************************************************************************** -Function: -Input: -Output: - -BYTE0 BYTE1 BYTE2 BYTE3 BYTE4 BYTE5 BYTE6 BYTE7 -666655555555554444444444333333333322222222221111111111 -3210987654321098765432109876543210987654321098765432109876543210 -76543210 76543210 76543210 76543210 - 76543210 76543210 76543210 76543210 -BYTE0 BYTE1 BYTE2 BYTE3 BYTE4 BYTE5 BYTE6 BYTE7 - - -U16[0] U16[1] U16[2] U16[3] -111111 111111 111111 111111 -5432109876543210543210987654321054321098765432105432109876543210 -666655555555554444444444333333333322222222221111111111 -3210987654321098765432109876543210987654321098765432109876543210 -u32[0] u32[1] -3322222222221111111111 3322222222221111111111 -1098765432109876543210987654321010987654321098765432109876543210 -666655555555554444444444333333333322222222221111111111 -3210987654321098765432109876543210987654321098765432109876543210 - -U16 angle; // 53–45 Angle 53,52 51 50 49,48 47 46 45 -U8 Ydec; //小数部分43–36 1111 0010b (Y decimal) -U8 Xdec; //小数部分35–28 0111 0100b (X decimal) -U8 Yint; //整数部分 27–14 00 0000 0000 0100b (Y integer) -U8 Xint; //整数部分 13–0 00 0000 0000 0100b (X integer) - -*******************************************************************************************************/ vU16 Lc_dec_us100(vU16 pint,u8 pdec) { pint *= 100; @@ -365,13 +292,11 @@ vU16 Lc_dec_us100(vU16 pint,u8 pdec) pint -= 100; }else { - } pdec *= 100; pdec /= 128; pint += (vU16)pdec; return pint; - } void L2_oid_ParseF1(void) //解析 @@ -381,20 +306,7 @@ void L2_oid_ParseF1(void) //解析 // L1_print_rcv("\r\n F1="); 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]; - L1_Oid_Rec_PRINT(); - + // L1_Oid_Rec_PRINT(); if(ts_oid.rec.d[0] == 0x00) // 4 {/// Bit43~Bit0:x,y 轴的坐标数据,x 坐标和 y 坐标都是由整数和小数部分 @@ -403,33 +315,9 @@ void L2_oid_ParseF1(void) //解析 ts_oid.last_time = s_nos_tick.t_1s; 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 //0E87 --- 3719 { + L0_uart0_sendstr("ts_oid.Xint < 300"); ts_oid.oid_x = 1; u32t[0] = ts_oid.rec.d32[0]; @@ -440,31 +328,11 @@ void L2_oid_ParseF1(void) //解析 ///36-43 ts_oid.Ydec = (ts_oid.rec.d[2]<<4) | (ts_oid.rec.d[3]>>4); ///28 35 - ts_oid.Xdec = (ts_oid.rec.d[3]<<4) | (ts_oid.rec.d[4]>>4); -#ifdef docsdfads - C0EC58E5 60 4D 24 23 A0 23 80 57 (12800.4500,142.5156) 105 - C0EC58E5 60 4C E4 54 C0 23 40 5A (12800.5900,141.5391) 103 - C0EC58E5 60 4D 44 B5 A0 23 00 5D (12800.7000,140.5859) 106 - C0EC58E5 60 4D 24 AF 30 22 C0 61 (12800.9000,139.5781) 105 - C0EC58E5 60 4D 24 B1 E0 22 80 64 (12800.2300,138.5859) 105 - - A0 23 80 57 (12800.4500,142.5156) 105 - A0 23 80 57 - C0 23 40 5A - A0 23 00 5D - 30 22 C0 61 - E0 22 80 64 - 1010 0000 0010 0011 1000 0000 0101 0111 - 3322 2222 2222 1111 1111 11 - 1098 7654 3210 9876 5432 1098 7654 3210 - -#endif + ts_oid.Xdec = (ts_oid.rec.d[3]<<4) | (ts_oid.rec.d[4]>>4); + u32t[1] >>= 14; ts_oid.Yint = (vU16)u32t[1]; ts_oid.Yint &= 0x3fff; - - - #if 0 if(ts_oid.Xdec&0x80) { @@ -497,12 +365,10 @@ void L2_oid_ParseF1(void) //解析 #endif - //数据存储到寄存器 - - printf(" %hd %hd %hd ", - ts_oid.X100,ts_oid.Y100, - ts_oid.angle); + printf(" 1111111 %hd %hd %hd ", + ts_oid.X100,ts_oid.Y100, + ts_oid.angle); } else { @@ -512,17 +378,9 @@ void L2_oid_ParseF1(void) //解析 } else if(ts_oid.rec.d[0] == 0x40)///手写 { -//// 普通码(bit61=0) -//// Bit60:码是否有效(1:无效码;0:有效码) -//// Bit59~Bit28:保留 -/// Bit27~Bit0:有效数据 -/// G.oid_p = 1; ts_oid.oid_p = 1; ts_oid.gCode = ts_oid.rec.d32[1]&0x0fFFffFF; - -/// R.oid3_order = (int)ts_oid.gCode *100; - - printf(" %ld %x ",ts_oid.gCode,(int)ts_oid.gCode); + printf(" 2222222 %ld %x ",ts_oid.gCode,(int)ts_oid.gCode); L0_uart0_ulhex(ts_oid.gCode); } else @@ -546,7 +404,6 @@ void L2_oid_status(void) //L0_uart2_sendstr("456"); } } - } uint8_t L1_OID_WakeUp(void) @@ -557,7 +414,6 @@ uint8_t L1_OID_WakeUp(void) LD_Oid_SCK_HIGH(); delay_ms(30); LD_Oid_SCK_LOW(); - L0_uart0_sendstr(" 44 "); while(1) @@ -578,7 +434,6 @@ uint8_t L1_OID_WakeUp(void) ///use L0_uart0_sendstr(" ok\r\n"); return 1;//ucCheckVersionAndInit(eAppDevice); - } else { @@ -588,8 +443,6 @@ uint8_t L1_OID_WakeUp(void) } } } - - /****************************************************************************************************** Function: Input: @@ -598,72 +451,21 @@ Output: void L0_Oid_Init(void) { LD_Oid_DIO_INIT(); - /****************************************************************************************************** - 5430C2000A/3000A点读应用初始化设置 - 顺序 命令设置 备注 - 1 single command 0x4D 关闭解码 - 2 REG(0xD40) = 0x00 设置仅读OID码,0X00仅读OID3/OID2,0X10仅读OID3S,0X20仅读OID4 - 3 single command 0x36 关闭手写码侦测 - 4 "REG(0x0DAD) = 4250 //设置AE Target - REG(0x0DB1) = 4000 //设置AE LOW - REG(0x0DAF) = 4000 //设置AE LOW - REG(0x0DB0) = 4500 //设置AE HIGH - REG(0x0DAE) = 4500 //设置AE HIGH - - REG(0x1641) = 0xA0 //设置dot filter - REG(0x0D6A) = 0x3F //此项不要改动 - REG(0x0D2C) = 0x3F //此项不要改动" "初始化,可不下此部分命令,若笔头配合底码识别不佳,可以下此部分命令,设置不同参数尝试。 - - 设置AE Range和dot filter。 - AE_LOW < AE_Target = 2)&& (G.pen_t == 0)) - { - G.pen_up = 1; - G.pen_t =1; - L0_uart0_sendstr("789"); } -/// delay_us(100); + // else if((s_nos_tick.t_1s - ts_oid.last_time >= 5) && (G.pen_t == 0)) + // { + // G.pen_up = 1; + // G.pen_t =1; + // L0_uart0_sendstr("789789aabbcc"); + // } + // else if((G.pen_t == 0)) + // { + // G.pen_up = 1; + // G.pen_t =1; + // L0_uart0_sendstr("789789aabbcc"); + // } } void L1_Oid_Rec_PRINT(void) @@ -754,150 +548,3 @@ void L1_Oid_Rec_PRINT(void) } - -#if 0 - -step1 -if(!OID_DET) -{ - L0_oid_Recv64(); - -step2 - -L2_oid_ParseF1(); -step 3 - 状态 - - - -///#ifdef doc980808 -验证算法的正确性 -unsigned char s[64]= - { - - 1 , // 0 - 1 , // 1 - 1 , // 2 - 1 , // 3 - 1 , // 4 - 1 , // 5 - 1 , // 6 - 1 , // 7 xxxx - - 1 , // 8 - 1 , // 9 - 1 , // 10 - 1 , // 11 - 1 , // 12 - 1 , // 13 - 1 , // 14 - 1 , // 15 xxxx - - 1 , // 16 - 1 , // 17 - 1 , // 18 - 1 , // 19 - 1 , // 20 - 1 , // 21 - 1 , // 22 - 1 , // 23 xxxx - - 1 , // 24 - 1 , // 25 - 1 , // 26 - 1 , // 27 - 1 , // 28 - 1 , // 29 - 1 , // 30 - 1 , // 31 xxxx - - 1 , // 32 - 1 , // 33 - 1 , // 34 - 1 , // 35 - 1 , // 36 - 1 , // 37 - 1 , // 38 - 1 , // 39 xxxx - - 1 , // 40 - 1 , // 41 - 1 , // 42 - 1 , // 43 - 1 , // 44 - 1 , // 45 - 1 , // 46 - 1 , // 47 xxxx - - 1 , // 48 - 1 , // 49 - 1 , // 50 - 1 , // 51 - 1 , // 52 - 1 , // 53 - 1 , // 54 - 1 , // 55 xxxx - - 1 , // 56 - 1 , // 57 - 1 , // 58 - 1 , // 59 - 1 , // 60 - 1 , // 61 - 1 , // 62 - 1 // 63 xxxx - - }; - int x =0; -int i; - - -void t(void) -{RecvData[0] = 0;RecvData[1] = 0; - for(i = 0; i < 64; i++) - { - - - if(s[63-i]) - { - 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; - } - - - } - - for(i = 0; i < 64; i++) - { - ts_oid.d[i/8] <<= 1; - if(s[63-i]) - { - ts_oid.d[i/8] |= 1; - } - else - { - ts_oid.d[i/8] &= 0xfe; - } - } -i =5; - -} - - -#endif - diff --git a/source/bsp/bsp_oid.h b/source/bsp/bsp_oid.h index d5503f0..72eda30 100644 --- a/source/bsp/bsp_oid.h +++ b/source/bsp/bsp_oid.h @@ -163,6 +163,8 @@ typedef struct _ts_OID U8 oid_x; U8 oid_p; + U8 ok; + }Ts_OID_; extern Ts_OID_ ts_oid; @@ -170,6 +172,8 @@ extern Ts_OID_ ts_oid; void L0_Oid_Init(void); +extern void L2_OID_init(); + uint8_t L1_oid_TransCmd(uint8_t Cmd); void L1_print_rcv(char *str); uint32_t L1_oidReadRegister (uint16_t Data1); diff --git a/source/bsp/bsp_oid_undelect..h b/source/bsp/bsp_oid_undelect..h new file mode 100644 index 0000000..d5503f0 --- /dev/null +++ b/source/bsp/bsp_oid_undelect..h @@ -0,0 +1,183 @@ +#ifndef __OPTICALDATA__ +#define __OPTICALDATA__ + +#include "bsp_config.h" +#include "../app/app_config.h" + +/****************************************************************************************************** + 配置参数 +*******************************************************************************************************/ +#define ROM009_HANDWRITE 0 +#define DATA_FORMAT_2 0 +#define OID_4C 0 +#define DEBOUNCE_FUNC 0 +#define LOG_REGISTER 0 + +#if DEBOUNCE_FUNC +#define DEBOUNCE_TIMES 3 // 连续三笔相同,才触发,debounce时,可设置。去抖动时间 +#define DEBOUNCE_RELESE_TIME 20 //5ms * 20 = 100ms,100ms无任何码,认为抬笔。 +#endif +/****************************************************************************************************** + 2-wire GPIO + +#define D_stdIO_P5(n) BITN_0(P5M1,n);BITN_0(P5M0,n); //////00 准双向口 灌电流20mA 拉电流270-150uS +#define D_HighI_P5(n) BITN_0(P5M1,n);BITN_1(P5M0,n); //////01 推挽输出 20mA 加限流 +#define D_HighR_P5(n) BITN_1(P5M1,n);BITN_0(P5M0,n); /////////10 高阻 +#define D_OpenD_P5(n) BITN_1(P5M1,n);BITN_1(P5M0,n); /////11 开漏 open-Drain 内部上拉电阻断开 开漏模式既可以度外部状态也可以对外输出高低电平 +*******************************************************************************************************/ +#define LD_oid_io_init() LD_Oid_SCK_INIT() +////#define LD_Oid_SCK_INIT() D_stdIO_P3(BITN4); + +#define LD_Oid_SCK_LOW() D_P34_OFF(); +#define LD_Oid_SCK_HIGH() D_P34_ON(); + +#define LD_Oid_SCK_INIT(); D_HighI_P3(BITN4);LD_Oid_SCK_LOW(); + + +#define LD_Oid_SDIO_INIT() D_HighR_P5(BITN0) +#define LD_Oid_SDIO_LOW() D_P50_OFF() +#define LD_Oid_SDIO_HIGH() D_P50_ON() +#define LD_Oid_SDIO_IN() D_HighR_P5(BITN0)//高阻输入 +#define LD_Oid_SDIO_OUT() D_HighI_P5(BITN0)//推挽输出 + +#define LD_Oid_SDIO_AT() D_P50_AT() + + +#define LD_Oid_DIO_INIT(); LD_Oid_SCK_INIT();LD_Oid_SDIO_INIT(); + + +#define OID_DET P50 + +/****************************************************************************************************** + OID命令 +*******************************************************************************************************/ + + +////20211229依据53xx和54xx系列操作 +#define USERCMD_20FPS 0x24 +#define USERCMD_30FPS 0x25 +#define USERCMD_40FPS 0x26 +#define USERCMD_50FPS 0x27 +#define USERCMD_80FPS 0x3C +#define USERCMD_80FPS_EXIT 0x3B +#define USERCMD_DECODE_SHUT 0x4D +#define USERCMD_LIANCHUAN 0x40 +#define USERCMD_SUSPEND 0x57 +#define USERCMD_EN_ANGLE 0x10 +#define USERCMD_EN_POSITION 0x35 +#define USERCMD_SW_POSITION 0x43 +#define USERCMD_DATA_FORMAT_2 0x2C +#define USERCMD_LOU_GUANG 0xD7 +#define USERCMD_POWER_DOWN 0x56 + +#define OIDCMD_POWER_ON 0x0000FFF8 +#define OIDCMD_POWER_OFF 0x0000FFF7 +/****************************************************************************************************** + OID版本 +*******************************************************************************************************/ +#define OID_VER_D 0x1169 +#define OID_VER_REG 0x1670 +#define OID_VER_F 0x1168 +#define REG_READOID_SET 0xD40 +#define REG_EN_DECODE 0xD63 +#define REG_ROM008 0xDA5 +#define REG_ROM009 0xDA6 +#define ROM_009 0x09 +#define ROM_008 0x00 +/****************************************************************************************************** + Dataformat 2定义 +*******************************************************************************************************/ +#define CHECK_INVALID_DF2 0x40000000 +#define CHECK_OID_VERSION_DF2 0xFC000000 +#define OID_2_GENERAL_DF2 0x00000000 +#define OID_3_GENERAL_DF2 0x08000000 +#define OID_3_POSITION_DF2 0x04000000 +#define OID_3S_GENERAL_DF2 0x10000000 +#define OID_3S_POSITION_DF2 0x0C000000 +#define OID_35_GENERAL_DF2 0x14000000 +#define OID_4_GENERAL_DF2 0x1C000000 +#define OID_4_POSITION_DF2 0x18000000 +#define OID_4C_POSITION_DF2 0x20000000 +/****************************************************************************************************** + 函数声明 +*******************************************************************************************************/ +typedef enum +{ + eHandWrite = 0, + ePointRead_2000A = 1, + ePointRead_3000A = 2, + ePointRead_LightGuide = 3, + eCar_LightGuide = 4, +}AppDevice; +extern AppDevice eAppDevice; +/***************** + +void OidTaskLoop(void); +uint8_t L1_oid_TransCmd(uint8_t Cmd); +uint8_t WakeUpOID(void); + + +void L1_oid_RecvOptData(void); + +void LogRegister(void); +uint8_t L1_oid_CheckVersionAndInit(AppDevice eAppDevice); + +/*****************************/ +/********************************************************** + Bit Indication +63–60 0110b +59–54 Reserved +53–45 Angle +44 Reserved +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) 变量定义 +******************************************************/ + + + +typedef struct _ts_OID +{ + U_U64 rec; + + // Data format of OID + U8 oid_type; //oid类型 :63–60 0110b + U16 angle; //Angle :53–45 + U8 Ydec; //小数部分(Y decimal) :43–36 1111 0010b + 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倍的输出 + vU32 gCode; // + + vU32 time; + vU32 last_time; + + vU32 overtime; + + + float x,y;//cut + vU16 pre_x,pre_y;//cut + U8 oid_x; + U8 oid_p; + + +}Ts_OID_; +extern Ts_OID_ ts_oid; +///extern volatile uint32_t RecvData[3]; + +void L0_Oid_Init(void); + +uint8_t L1_oid_TransCmd(uint8_t Cmd); +void L1_print_rcv(char *str); +uint32_t L1_oidReadRegister (uint16_t Data1); +void L1_Oid_readoid(void); +uint8_t L1_OID_WakeUp(void); +void L2_oid_ParseF1(void); +void L0_oid_Recv64(void); +void L1_Oid_Rec_PRINT(void); + +#endif // __OPTICALDATA__ + diff --git a/source/bsp/bsp_oid_undelect.c b/source/bsp/bsp_oid_undelect.c new file mode 100644 index 0000000..325cb32 --- /dev/null +++ b/source/bsp/bsp_oid_undelect.c @@ -0,0 +1,903 @@ +#include "bsp_oid.h" +#include "intrins.h" +#include "../msp/uart0.h" +#include "../msp/uart3.h" +#include +#include "../ctask/task.h" +#include "../ctask/tick.h" +#include "../app/app_task_speech.h" +#include "../bsp/bsp_WT2605B.h" + + + +/****************************************************************************************************** + 变量定义 +*******************************************************************************************************/ +AppDevice eAppDevice = ePointRead_2000A; +///volatile uint32_t RecvData[3]; +Ts_OID_ ts_oid; + +uint8_t TransCmd[7]; + +///#define MAIN_Fosc 11059260L +#if 0 +#define MAIN_Fosc (12459260L/4) +#define D_DELAY_10US 10 +#define D_DELAY_ROD_80US 80 + + +#else +#define MAIN_Fosc (12459260L/2) +#define D_DELAY_10US 20 +#define D_DELAY_ROD_80US 160 + + +#endif + + +//======================================================================== +// 函数: void delay_ms(uint8_t ms) +// 描述: 延时函数。 +// 参数: ms,要延时的ms数, 这里只支持1~255ms. 自动适应主时钟. +// 返回: none. +// 版本: VER1.0 +// 日期: 2021-3-9 +// 备注: +//======================================================================== +void delay_ms(uint8_t ms) +{ + uint16_t i; + do{ + i = MAIN_Fosc / 10000L; + while(--i); //10T per loop + }while(--ms); +} + +void delay_us(uint8_t us) +{ +// uint16_t i; + do{ + // i = MAIN_Fosc / 10000000L; + // i = 1;///5 10 150u 1---50us + /// while(--i); //10T per loop + }while(--us); +} + +/****************************************************************************************************** +Function: +Input: +Output: +*******************************************************************************************************/ +void L0_oid_SendCmd(uint8_t Cmd) +{ + uint8_t i; + LD_Oid_SDIO_OUT(); + LD_Oid_SCK_HIGH(); + LD_Oid_SDIO_HIGH(); // Write control bit + delay_us(D_DELAY_10US); + LD_Oid_SCK_LOW(); + delay_us(D_DELAY_10US); + + for(i=0;i<8;i++) + { + LD_Oid_SCK_HIGH(); + if(Cmd & 0x80) + { + LD_Oid_SDIO_HIGH(); + } + else + { + LD_Oid_SDIO_LOW(); + } + delay_us(D_DELAY_10US); + LD_Oid_SCK_LOW(); + + #if 0 + if(i == 7) + { + LD_Oid_SDIO_IN(); + } + #endif + delay_us(D_DELAY_10US); + Cmd <<= 1; + } + delay_us(D_DELAY_ROD_80US); + LD_Oid_SDIO_IN(); +} + +uint16_t L0_oid_RecvAck16(void) +{ + uint8_t i; + uint16_t AckValue; + AckValue = 0; +/// + LD_Oid_SDIO_OUT(); + delay_us(D_DELAY_10US); + LD_Oid_SCK_HIGH(); + LD_Oid_SDIO_LOW(); + delay_us(D_DELAY_10US); + LD_Oid_SCK_LOW(); + delay_us(D_DELAY_10US); + + for(i = 0; i < 16; i++) + { + LD_Oid_SCK_HIGH(); + LD_Oid_SDIO_IN() + delay_us(D_DELAY_10US); + LD_Oid_SCK_LOW(); + if(OID_DET) + { + AckValue +=1; + } + + if(i < 15) + { + AckValue <<= 1; + } + + delay_us(D_DELAY_10US); + } + delay_us(D_DELAY_ROD_80US); + + return AckValue; +} + + +void L0_oid_Recv64(void) +{ + uint8_t i; + Lc_memset8bits(ts_oid.rec.d, 0, 8); + LD_Oid_SDIO_OUT(); + delay_us(D_DELAY_10US); + LD_Oid_SCK_HIGH(); + LD_Oid_SDIO_LOW(); + + delay_us(D_DELAY_10US); + LD_Oid_SCK_LOW(); + + delay_us(D_DELAY_10US); + LD_Oid_SDIO_IN() + + for(i = 0; i < 64; i++) + { + LD_Oid_SCK_HIGH(); + delay_us(D_DELAY_10US); + LD_Oid_SCK_LOW(); + + ts_oid.rec.d[i/8] <<= 1; + + if(OID_DET) + { + ts_oid.rec.d[i/8] |= 1; + } + else + { + ts_oid.rec.d[i/8] &= 0xfe; + } + delay_us(D_DELAY_10US); + } + + ts_oid.time = D_sys_now; + delay_us(D_DELAY_ROD_80US); + + return; +} + +uint8_t L1_oid_TransCmd(uint8_t Cmd) +{ + uint8_t TxCmd;///,det_busy; + uint32_t RxAckCnt = 0; + +// L0_uart0_sendstr("\r\n w cmd="); +/// L0_uart0_uchex(Cmd); +// + while(!OID_DET) + { + L0_oid_Recv64(); + L1_print_rcv("\r\n busy: RD="); + } + TxCmd = Cmd; + L0_oid_SendCmd(TxCmd); + LD_Oid_SCK_LOW(); + delay_us(10); + #define D_oid_waitrcv_delay 100000 + while(OID_DET) + { + /// L1_oid_RecvOptData(); + RxAckCnt ++; + if(RxAckCnt > D_oid_waitrcv_delay) + { + + L0_uart0_sendstr("\r\nno rec"); + L0_uart0_uchex(Cmd); + break; + } + } + + if(RxAckCnt <= D_oid_waitrcv_delay) + { + TxCmd = (uint8_t)L0_oid_RecvAck16(); + TxCmd -= 1; + if(TxCmd == Cmd) + { + + L0_uart0_sendstr("\r\nCmd="); + L0_uart0_uchex(Cmd);L0_uart0_uc('-'); + L0_uart0_uchex(TxCmd); + return 1; + } + } +} + +uint32_t L1_oidReadRegister (uint16_t Data1) +{ + uint8_t i,Ret; + uint32_t uxReturn; + + TransCmd[0] = 0x74; + TransCmd[1] = 3; + TransCmd[2] = Data1 >> 8; + TransCmd[3] = Data1 & 0x00FF; + TransCmd[4] = (TransCmd[1] + TransCmd[2] + TransCmd[3]) & 0xFF; + + for(i=0;i<5;i++) + { + Ret = L1_oid_TransCmd(TransCmd[i]); + if(Ret == 0) + { + return 0x5FFFFFFF; + } + } + + i = 0; + while(1) + { + if(!OID_DET) + { + L0_oid_Recv64(); + /// uxReturn = RecvData[1]; + uxReturn = ts_oid.rec.d32[1]; + uxReturn &= 0xFFFF; + return uxReturn; + } + + delay_us(100); + i += 1; + if(i >= 20) // check 100ms + { + return 0x2FFFFFFF; + } + } +} + +/****************************************************************************************************** +Function: +Input: +Output: +*******************************************************************************************************/ +uint8_t Write_Register(uint16_t Data1,uint16_t Data2) +{ + uint8_t Ret,i; + uint16_t j; + Ret = 1; + + TransCmd[0] = 0X73; + TransCmd[1] = 0x05; + j = Data1>>8; + TransCmd[2] = (uint8_t)j; + j = Data1; + TransCmd[3] = (uint8_t)j; + j = Data2>>8; + TransCmd[4] = (uint8_t)j; + j = Data2; + TransCmd[5] = (uint8_t)j; + TransCmd[6] = (TransCmd[1] + TransCmd[2] + TransCmd[3] + TransCmd[4] + TransCmd[5]); + + for(i=0;i<7;i++) + { + Ret = L1_oid_TransCmd(TransCmd[i]); + if(Ret == 0) + { + break; + } + } + return Ret; +} + +void L1_print_rcv(char *str) +{ + L0_uart0_sendstr(str); + /******** +// Lc_delay_ms(1); + L0_uart0_ulhex(RecvData[0]); +// Lc_delay_ms(1); + L0_uart0_uc(0x09); + L0_uart0_ulhex(RecvData[1]); + + L0_uart0_uc(0x09); + **********/ + +/// L0_uart0_ulhex(ts_oid.rec.d32[1]);L0_uart0_uc(0x09); + /// + +// L0_uart0_sendArrayHex(ts_oid.rec.d,8); + ///L2_oid_ParseF1(); + +} +/****************************************************************************************************** +Function: +Input: +Output: + +BYTE0 BYTE1 BYTE2 BYTE3 BYTE4 BYTE5 BYTE6 BYTE7 +666655555555554444444444333333333322222222221111111111 +3210987654321098765432109876543210987654321098765432109876543210 +76543210 76543210 76543210 76543210 + 76543210 76543210 76543210 76543210 +BYTE0 BYTE1 BYTE2 BYTE3 BYTE4 BYTE5 BYTE6 BYTE7 + + +U16[0] U16[1] U16[2] U16[3] +111111 111111 111111 111111 +5432109876543210543210987654321054321098765432105432109876543210 +666655555555554444444444333333333322222222221111111111 +3210987654321098765432109876543210987654321098765432109876543210 + +u32[0] u32[1] +3322222222221111111111 3322222222221111111111 +1098765432109876543210987654321010987654321098765432109876543210 +666655555555554444444444333333333322222222221111111111 +3210987654321098765432109876543210987654321098765432109876543210 + +U16 angle; // 53–45 Angle 53,52 51 50 49,48 47 46 45 +U8 Ydec; //小数部分43–36 1111 0010b (Y decimal) +U8 Xdec; //小数部分35–28 0111 0100b (X decimal) +U8 Yint; //整数部分 27–14 00 0000 0000 0100b (Y integer) +U8 Xint; //整数部分 13–0 00 0000 0000 0100b (X integer) + +*******************************************************************************************************/ +vU16 Lc_dec_us100(vU16 pint,u8 pdec) +{ + pint *= 100; + if(pdec&0x80)///负数 + { + pdec &= 0x7f; + pint -= 100; + }else + { + + } + pdec *= 100; + pdec /= 128; + pint += (vU16)pdec; + return pint; + +} + +void L2_oid_ParseF1(void) //解析 +{ + uint16_t u16i = 0; + uint32_t u32t[2] = 0; + // L1_print_rcv("\r\n F1="); + 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]; + L1_Oid_Rec_PRINT(); + + + if(ts_oid.rec.d[0] == 0x00) // 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 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 //0E87 --- 3719 + { + ts_oid.oid_x = 1; + + u32t[0] = ts_oid.rec.d32[0]; + u32t[1] = ts_oid.rec.d32[1]; + + ts_oid.angle = (vU16)(u32t[0]>>13); //45-32= 13 + ts_oid.angle &= 0x01ff; //53-45+1=8 + ///36-43 + ts_oid.Ydec = (ts_oid.rec.d[2]<<4) | (ts_oid.rec.d[3]>>4); + ///28 35 + ts_oid.Xdec = (ts_oid.rec.d[3]<<4) | (ts_oid.rec.d[4]>>4); +#ifdef docsdfads + C0EC58E5 60 4D 24 23 A0 23 80 57 (12800.4500,142.5156) 105 + C0EC58E5 60 4C E4 54 C0 23 40 5A (12800.5900,141.5391) 103 + C0EC58E5 60 4D 44 B5 A0 23 00 5D (12800.7000,140.5859) 106 + C0EC58E5 60 4D 24 AF 30 22 C0 61 (12800.9000,139.5781) 105 + C0EC58E5 60 4D 24 B1 E0 22 80 64 (12800.2300,138.5859) 105 + + A0 23 80 57 (12800.4500,142.5156) 105 + A0 23 80 57 + C0 23 40 5A + A0 23 00 5D + 30 22 C0 61 + E0 22 80 64 + 1010 0000 0010 0011 1000 0000 0101 0111 + 3322 2222 2222 1111 1111 11 + 1098 7654 3210 9876 5432 1098 7654 3210 + +#endif + u32t[1] >>= 14; + ts_oid.Yint = (vU16)u32t[1]; + ts_oid.Yint &= 0x3fff; + + + +#if 0 + if(ts_oid.Xdec&0x80) + { + ts_oid.x -= 1.0; + } + + + + ts_oid.Xdec&=0x7f; + ts_oid.x = (float)ts_oid.Xdec; + ts_oid.x /= 128.0; + if(ts_oid.Xdec&0x80) + { + ts_oid.x -= 1.0; + } + ts_oid.x += ts_oid.Xint; + + ts_oid.Ydec&=0x7f; + ts_oid.y = (float)ts_oid.Ydec; + ts_oid.y /= 128.0; + if(ts_oid.Ydec&0x80) + { + ts_oid.y -= 1.0; + } + ts_oid.y += ts_oid.Yint; + +#else + ts_oid.X100 = Lc_dec_us100(ts_oid.Xint,ts_oid.Xdec); + ts_oid.Y100 = Lc_dec_us100(ts_oid.Yint,ts_oid.Ydec); + + +#endif + + //数据存储到寄存器 + + printf(" %hd %hd %hd ", + ts_oid.X100,ts_oid.Y100, + ts_oid.angle); + } + else + { + ts_oid.oid_type = 0; + L0_uart0_uc(';'); + } + } + else if(ts_oid.rec.d[0] == 0x40)///手写 + { +//// 普通码(bit61=0) +//// Bit60:码是否有效(1:无效码;0:有效码) +//// Bit59~Bit28:保留 +/// Bit27~Bit0:有效数据 +/// G.oid_p = 1; + ts_oid.oid_p = 1; + ts_oid.gCode = ts_oid.rec.d32[1]&0x0fFFffFF; + +/// R.oid3_order = (int)ts_oid.gCode *100; + + printf(" %ld %x ",ts_oid.gCode,(int)ts_oid.gCode); + L0_uart0_ulhex(ts_oid.gCode); + } + else + { + ts_oid.oid_type = 0; + L0_uart0_uc(','); + } +} +void L2_oid_status(void) +{ + if(G.oid_x) + { + if(ts_oid.pre_x == 0 && ts_oid.pre_y == 0&& ts_oid.X100 != 0 &&ts_oid.Y100 != 0) + { + G.pen_down = 1; + //L0_uart2_sendstr("123"); + } + else if(ts_oid.pre_x != 0 && ts_oid.pre_y != 0&& ts_oid.X100 != 0 &&ts_oid.Y100 != 0) + { + G.pen_hold = 1; + //L0_uart2_sendstr("456"); + } + } + +} + +uint8_t L1_OID_WakeUp(void) +{ + uint32_t i = 0; + LD_Oid_SCK_LOW(); + delay_ms(2); + LD_Oid_SCK_HIGH(); + delay_ms(30); + LD_Oid_SCK_LOW(); + + L0_uart0_sendstr(" 44 "); + + while(1) + { + delay_ms(10); + i += 1; + if(i >= 400) // 400*5ms = 2s + { + L0_uart0_sendstr(" !!out!! "); + return 0; + } + if(!OID_DET) + { + L0_oid_Recv64(); + L1_print_rcv("\r\n WakeUpOID get="); + if(ts_oid.rec.d[7] == 0xf8) + { + ///use + L0_uart0_sendstr(" ok\r\n"); + return 1;//ucCheckVersionAndInit(eAppDevice); + + } + else + { + L0_uart0_sendstr("\r\nno?? OIDCMD_POWER_ON \r\n"); + return 0; + } + } + } +} + + +/****************************************************************************************************** +Function: +Input: +Output: +*******************************************************************************************************/ +void L0_Oid_Init(void) +{ + LD_Oid_DIO_INIT(); + /****************************************************************************************************** + 5430C2000A/3000A点读应用初始化设置 + 顺序 命令设置 备注 + 1 single command 0x4D 关闭解码 + 2 REG(0xD40) = 0x00 设置仅读OID码,0X00仅读OID3/OID2,0X10仅读OID3S,0X20仅读OID4 + 3 single command 0x36 关闭手写码侦测 + 4 "REG(0x0DAD) = 4250 //设置AE Target + REG(0x0DB1) = 4000 //设置AE LOW + REG(0x0DAF) = 4000 //设置AE LOW + REG(0x0DB0) = 4500 //设置AE HIGH + REG(0x0DAE) = 4500 //设置AE HIGH + + REG(0x1641) = 0xA0 //设置dot filter + REG(0x0D6A) = 0x3F //此项不要改动 + REG(0x0D2C) = 0x3F //此项不要改动" "初始化,可不下此部分命令,若笔头配合底码识别不佳,可以下此部分命令,设置不同参数尝试。 + + 设置AE Range和dot filter。 + AE_LOW < AE_Target = 10)&& (G.pen_t == 0)) + { + G.pen_up = 1; + G.pen_t =1; + L0_uart0_sendstr("789"); + } +/// delay_us(100); +} + +void L1_Oid_Rec_PRINT(void) +{ +// d[7] + 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.d[4] = "); + L0_uart0_uchex(ts_oid.rec.d[4]); + L0_uart0_0d0a(); + L0_uart0_sendstr("ts_oid.rec.d[5] = "); + L0_uart0_uchex(ts_oid.rec.d[5]); + L0_uart0_0d0a(); + L0_uart0_sendstr("ts_oid.rec.d[6] = "); + L0_uart0_uchex(ts_oid.rec.d[6]); + L0_uart0_0d0a(); + L0_uart0_sendstr("ts_oid.rec.d[7] = "); + L0_uart0_uchex(ts_oid.rec.d[7]); + L0_uart0_0d0a(); + // // d16 + // 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(); + // // d32 + // 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(); + // // oid_type + // L0_uart0_sendstr("ts_oid.oid_type = "); + // L0_uart0_uchex(ts_oid.oid_type); + // L0_uart0_0d0a(); + +} + + +#if 0 + +step1 +if(!OID_DET) +{ + L0_oid_Recv64(); + +step2 + +L2_oid_ParseF1(); +step 3 + 状态 + + + +///#ifdef doc980808 +验证算法的正确性 +unsigned char s[64]= + { + + 1 , // 0 + 1 , // 1 + 1 , // 2 + 1 , // 3 + 1 , // 4 + 1 , // 5 + 1 , // 6 + 1 , // 7 xxxx + + 1 , // 8 + 1 , // 9 + 1 , // 10 + 1 , // 11 + 1 , // 12 + 1 , // 13 + 1 , // 14 + 1 , // 15 xxxx + + 1 , // 16 + 1 , // 17 + 1 , // 18 + 1 , // 19 + 1 , // 20 + 1 , // 21 + 1 , // 22 + 1 , // 23 xxxx + + 1 , // 24 + 1 , // 25 + 1 , // 26 + 1 , // 27 + 1 , // 28 + 1 , // 29 + 1 , // 30 + 1 , // 31 xxxx + + 1 , // 32 + 1 , // 33 + 1 , // 34 + 1 , // 35 + 1 , // 36 + 1 , // 37 + 1 , // 38 + 1 , // 39 xxxx + + 1 , // 40 + 1 , // 41 + 1 , // 42 + 1 , // 43 + 1 , // 44 + 1 , // 45 + 1 , // 46 + 1 , // 47 xxxx + + 1 , // 48 + 1 , // 49 + 1 , // 50 + 1 , // 51 + 1 , // 52 + 1 , // 53 + 1 , // 54 + 1 , // 55 xxxx + + 1 , // 56 + 1 , // 57 + 1 , // 58 + 1 , // 59 + 1 , // 60 + 1 , // 61 + 1 , // 62 + 1 // 63 xxxx + + }; + int x =0; +int i; + + +void t(void) +{RecvData[0] = 0;RecvData[1] = 0; + for(i = 0; i < 64; i++) + { + + + if(s[63-i]) + { + 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; + } + + + } + + for(i = 0; i < 64; i++) + { + ts_oid.d[i/8] <<= 1; + if(s[63-i]) + { + ts_oid.d[i/8] |= 1; + } + else + { + ts_oid.d[i/8] &= 0xfe; + } + } +i =5; + +} + + +#endif +