You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
144 lines
4.3 KiB
144 lines
4.3 KiB
#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;
|
|
|
|
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)
|
|
{
|
|
//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<hexBytesLen;i++)
|
|
{
|
|
asciiBytes[i*2] = ascTable[hexBytes[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;
|
|
}
|
|
|
|
|