#include "app_task_speech.h" #include "app_task_tcp.h" #include "../msp/uart3.h" #include "../msp/uart2.h" #include "../msp/uart0.h" #define START_CODE 0x7E #define END_CODE 0xEF TS_TASK_SPEECH ts_speech; void L3_task_speech_init(void) { //U8 music[6] = {0x7E,0x04,0xAE,0x1E,0x30,0xEF}; //L0_uart0_sendArray((U8 *)&open,9); //U8 code open[9] = {0x7E,0x07,0xA3,0x43,0x30,0x30,0x39,0x86,0xEF}; //L0_uart3_sendArray((U8 *)&open , 9); L1_task_init(&ts_speech.task); L3_task_s_go(ts_speech,D_task_init); } #define D_task_wait_tcp_order 0x61 #define D_task_speech_send 0x62 void L3_task_speech_handle(TS_TASK_SPEECH *s) { TTSS_Task_init() L2_task_go(D_task_wait_tcp_order); TTSS_Task_step(D_task_wait_tcp_order) // if(s_uart2_tcp_rec.ok && (ts_tcp.slaverIndex != 0)) //if(s_uart2_tcp_rec.ok) { // s_uart2_tcp_rec.ok = 0; // s->pkg = (TS_PH3_ccmodbus*)(s_uart2_tcp_rec.sp); if(s->pkg->slaver == SERVER_ID) { L3_ccmodbus_slaver_ack(s->pkg,s->ack); s->ccmd_speech_info[0].start = START_CODE; s->ccmd_speech_info[0].num = 0x07; s->ccmd_speech_info[0].oper = SPEECH_NAME_PLAY; s->ccmd_speech_info[0].title = 0x43; //ts_speech.ccmd_speech_info[0].buf = (U8*)&R.spee_order; s->ccmd_speech_info[0].end = END_CODE; //Lc_buf_copy_uc((U8 *)&s->ccmd_speech_info[0].buf,(U8 *)&R.spee_order,(U16)2); //L0_uart0_sendArray((U8 *)&R.spee_order,2); //00 04 s->slaverIndex = 0; s->pkglen = L3_pack_speech(&s->speech_pkg , &s->ccmd_speech_info + s->slaverIndex); L2_task_go(D_task_speech_send); } } { L2_task_go(D_task_wait_tcp_order); } TTSS_Task_step(D_task_speech_send) { L0_uart3_sendArray((U8 *)&s->speech_pkg, s->pkglen); //L0_uart0_sendArray((U8*)&s->speech_pkg,s->pkglen); } L2_task_go(D_task_wait_tcp_order); TTSS_Task_end(); } U8 ascTable[] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; U8 *hexBytes2AsciiBytes(U8 asciiBytes[],U8 hexBytes[],U8 hexBytesLen) { U8 i = 0; for(i=0;i> 4 & 0x0F]; asciiBytes[i*2 + 1] = ascTable[hexBytes[i] >> 0 & 0x0F]; } return asciiBytes; } U8 Fun_SC_Check(U8 *p1, unsigned short int len) { U8 sum = 0; for(;len > 0; len--) { sum += *p1++; } return sum; } U8 L3_pack_speech_A3(TS_SPEECH *pspeech , U8 start ,U8 num ,U8 title ,U8 end)//tcp传来的buf { int name; U8 tcp_buf[6]; U8 str_buf[6]; U8 bufsize = 9; pspeech->start = start; pspeech->num = num; pspeech->oper = SPEECH_NAME_PLAY; pspeech->title = title; Lc_buf_copy_uc((U8 *)&tcp_buf,(U8 *)&R.spee_order,(U16)2); hexBytes2AsciiBytes(str_buf,tcp_buf,2); name = getIndexOfSigns(str_buf[2])*16+getIndexOfSigns(str_buf[3])*1; pspeech->buf[0] = (U8)(name/100) ; pspeech->buf[1] = (U8)((name%100)/10); pspeech->buf[2] = (U8)(name%10); //L0_uart0_sendArray((U8*)&tcp_buf,3); Lc_hex2ascii((U8 *)&pspeech->buf,(U8 *)&pspeech->buf,3); pspeech->crc = Fun_SC_Check(&pspeech->num,6); //累加和校验 pspeech->end = end; return bufsize; } U8 L3_pack_speech(TS_SPEECH *pspeech, CCMD_SPEECH_INFO *speech_info) { U16 pkglen = 0; switch(speech_info->oper) { case SPEECH_NAME_PLAY: pkglen = L3_pack_speech_A3(pspeech,speech_info->start,speech_info->num,speech_info->title,speech_info->end); break; default: break; } return pkglen; }