#include "asp_oid.h" TS_task_oid_ ts_task_oid; Ts_OID_frame_xy_ oid_buf[POINT_LEN+10]; Ts_OID_frame_xy_ points[POINT_LEN+10]; #define D_TASK_OID_t1 0x11 #define D_TASK_OID_XY 0x12 #define TTSS_TASK_OID_STA 0x13 #define D_TASK_PEN_UP 0x14 #define TTSS_TASK_OID_WRITE 0x15 #define TTSS_TASK_OID_SEND 0x16 void L3_task_oid_handle(TS_task_oid_ *s) { // L0_uart0_sendstr("oid_p"); TTSS_Task_init(); TTSS_Alarm_init(s->tts,300); ///(X) = s_nos_tick.t_10ms + delay; L2_task_go(D_TASK_OID_t1); TTSS_Task_step(D_TASK_OID_t1) if(TTSS_Alarm_AT(s->tts)) {///if( (X) < s_nos_tick.jiffies) TTSS_Alarm_init(s->tts,1000); s->p_ok = 1; s->ts_frame.flag.sta = D_PEN_none;//超时没有数据 s->ts_frame.cd.xy100.x100 = 0; s->ts_frame.cd.xy100.y100 = 0; s->ts_frame.flag.angle= 0; s->ts_frame.time= D_sys_now; L2_task_go(TTSS_TASK_OID_WRITE); } else if(ts_oid.oid_p) { ts_oid.oid_p = 0; TTSS_Alarm_init(s->tts,1000); s->ts_frame.flag.sta = D_PEN_gcode; s->ts_frame.cd.gcode = ts_oid.gCode; s->ts_frame.time= D_sys_now; //L0_uart2_sendArray((U8 *)&s->ts_frame,(U16)10); //Lc_buf_copy_uc((U8 *)&R.points[0],(U8 *)&s->ts_frame,(U16)10); //s->extra = 1; //s->can_send = 1; s->send_p = 1; L2_task_go(TTSS_TASK_OID_WRITE); } else { L2_task_go(D_TASK_OID_XY); } TTSS_Task_step(D_TASK_OID_XY) if(ts_oid.oid_x) { ts_oid.oid_x = 0; TTSS_Alarm_init(s->tts,1000); s->ts_frame.cd.xy100.x100 = ts_oid.X100; s->ts_frame.cd.xy100.y100 = ts_oid.Y100; s->ts_frame.flag.packageNo = 0; s->ts_frame.flag.angle = ts_oid.angle; s->ts_frame.time = ts_oid.time; L2_task_go(TTSS_TASK_OID_STA); } else { L2_task_go(D_TASK_PEN_UP); } TTSS_Task_step(TTSS_TASK_OID_STA) if(ts_oid.pre_x == 0 && ts_oid.pre_y == 0 && ts_oid.X100 != 0 &&ts_oid.Y100 != 0) { s->ts_frame.flag.sta = D_PEN_down; L2_task_go(TTSS_TASK_OID_WRITE); } else if(ts_oid.pre_x != 0 && ts_oid.pre_y != 0&& ts_oid.X100 != 0 &&ts_oid.Y100 != 0) { s->ts_frame.flag.sta = D_PEN_normal; L2_task_go(TTSS_TASK_OID_WRITE); } TTSS_Task_step(D_TASK_PEN_UP) if(G.pen_up && G.pen_t) { G.pen_up = 0; s->send_t =1; TTSS_Alarm_init(s->tts,1000); s->ts_frame.flag.sta = D_PEN_up; s->ts_frame.time = D_sys_now; ts_oid.X100 = 0; ts_oid.Y100 = 0; ts_oid.time = 0; ts_oid.angle = 0; L2_task_go(TTSS_TASK_OID_WRITE); } else { L2_task_go(D_TASK_OID_t1); } TTSS_Task_step(TTSS_TASK_OID_WRITE) //L0_uart0_sendArray((U8 *)&s->ts_frame,(U16)10); Lc_buf_copy_uc((U8 *)&oid_buf[s->point],(U8 *)&s->ts_frame,(U16)10); s->point ++; L2_task_go(TTSS_TASK_OID_SEND); TTSS_Task_step(TTSS_TASK_OID_SEND) if(((s->point) > (POINT_LEN - 1))|| s->send_t||s->p_ok||s->send_p) { U8 j; U16 k; s->extra = s->point; s->point = 0; s->p_ok = 0; s->send_p = 0; s->send_t = 0; for(j = 0;jextra;j++) { Lc_buf_copy_uc((U8 *)&points[j],(U8 *)&oid_buf[j],(U16)10); //L0_uart0_sendArray((U8 *)&points[j],(U16)10); // 1 //L0_uart0_0d0a(); } //L0_uart0_sendstr("points->cd.xy100.x100 = "); // 2 //L0_uart0_ushex(points->cd.xy100.x100); //L0_uart0_0d0a(); //L0_uart0_sendstr("points->cd.xy100.y100 = "); //L0_uart0_ushex(points->cd.xy100.y100); //L0_uart0_0d0a(); //G.ccmd_slaver_info[1].buf = (U8*)&points; //G.ccmd_slaver_info[1].extra_num = (s->extra)*5; //L0_uart0_sendArray((U8 *)&points,(s->extra)*10); //s->extra = 0; s->can_send = 1; #if 0//3 for(j = 0;jcmd) { case UDCMD_wakeup: L0_uart0_sendstr("\r\nL1_OID_WakeUp "); L1_OID_WakeUp(); break; case UDCMD_cmdsend: ///fa 00 22 cmd 42 53 64 75 ///fa 00 |22 cmd 42 53 64 75 L0_uart0_sendstr("\r\ncmd:"); L0_uart0_uchex(t->dat);L0_uart0_0d0a(); L1_oid_TransCmd(t->dat); break; case UDCMD_log: L0_uart0_sendstr("\r\nLogRegister"); /// LogRegister(); break; case UDCMD_CheckVersion: L0_uart0_sendstr("\r\n CheckVersion"); /// L1_oid_CheckVersionAndInit(eAppDevice); // while(1) { // OidTaskLoop(); } break; case UDCMD_get: L0_uart0_sendstr("\r\n UDCMD_get"); while(9) { L1_Oid_readoid(); } break; case UDCMD_readreg: ///fa 00 22 cmd 42 53 64 75 ///fa 00 |22 cmd 42 53 64 75 r = L1_oidReadRegister (t->reg); L0_uart0_sendstr("\r\n read reg:"); L0_uart0_ushex(t->reg); Lc_delay_ms(1); L0_uart0_sendstr(" = "); L0_uart0_ulhex(r); L0_uart0_uc(0x09); break; #if 0 case UDCMD_testtime_us: L0_uart0_sendstr("\r\nUDCMD_testtime_us"); L0_uart0_uchex(t->dat);L0_uart0_0d0a(); while(9) { /// delay_us(t->dat); D_IO_LEDkey1_ON(); // delay_us(t->dat); D_IO_LEDkey1_OFF(); } break; case UDCMD_testtime_ms: L0_uart0_sendstr("\r\nUDCMD_testtime_ms"); L0_uart0_uchex(t->dat);L0_uart0_0d0a(); while(9) { /// delay_ms(t->dat); D_IO_LEDkey1_ON(); // delay_ms(t->dat); D_IO_LEDkey1_OFF(); } break; #endif default: L0_uart0_sendstr("\r\ncmd error!!"); L0_uart0_0d0a(); break; } 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() { }