c语言当前时间播报封装,实现单个语音组成连续播报

#if 1 //语音播报格式 当前时间九点三十四分当前步数零
//'T' 十
//'H' 点
//'M' 分
PUBLIC void zwx_common_get_hm_str(uint8    * timestr)
{
    SCI_TIME_T      time    =   {0};
  
    if (PNULL == timestr)
    {
        MMI_ASSERT_WARNING("PNULL != timestr");/*assert verified*/
        return;
    }

    TM_GetSysTime(&time);
	
	
		if(time.hour>=20)
		{
			// if(time.min == 0)
			// {   //20:00
				// sprintf((char*)timestr,"%d%c%c%d%c",
				// (time.hour/10)%10, //取10位上的数
				// 'T',
				// 'H',
				// time.min,
				// 'M'
				// );
			// }
		   if(time.hour>20)
		   {
				 if(time.min%10 == 0) // 21:20
				 {
						if(time.min == 0) //21:00
						{
							sprintf((char*)timestr,"%d%c%d%c%d%c",
							(time.hour/10)%10, //取10位上的数
							'T',
							time.hour%10,
							'H',
							 time.min,
							'M'
							 ); 		 
						}
						else if(time.min>=20) //21:20
						{
								  sprintf((char*)timestr,"%d%c%d%c%d%c%c",
								 (time.hour/10)%10, //取10位上的数
								 'T',
								 time.hour%10,
								 'H',
								  (time.min/10)%10, 
								  'T',
								 'M'
								  );
							}
							else //21:10
							{
								 sprintf((char*)timestr,"%d%c%d%c%c%c",
								(time.hour/10)%10, //取10位上的数
								'T',
								time.hour%10,
								'H',
								 'T',
								'M'
								 );
							}
					}
						else  //min%10!=0;
						{
							if(time.min>20) //21:21
							{
								  sprintf((char*)timestr,"%d%c%d%c%d%c%d%c",
									(time.hour/10)%10, //取10位上的数
									'T',
									time.hour%10,
									'H',
									 (time.min/10)%10, 
									 'T',
									  time.min%10, 
									'M'
									 );
								}
								else if(time.min>10){ //21:11
									sprintf((char*)timestr,"%d%c%d%c%c%d%c",
									(time.hour/10)%10, //取10位上的数
									'T',
									time.hour%10,
									'H',
									 'T',
									  time.min%10, 
									'M'
									 );
								}
								else //21:09
								{
									 sprintf((char*)timestr,"%d%c%d%c%02d%c",
										(time.hour/10)%10, //取10位上的数
										'T',
										time.hour%10,
										'H',
										time.min,
										'M'
										 );
								}
						}
	
						}
						else{  //hour ==20 
							 if(time.min%10 == 0) 
					{
			if(time.min == 0) //20:00
			{
				sprintf((char*)timestr,"%d%c%c%d%c",
				(time.hour/10)%10, //取10位上的数
				'T',
				'H',
				 time.min,
				'M'
				 ); 		 
			}
			else if(time.min>=20) //20:20
			{
					  sprintf((char*)timestr,"%d%c%c%d%c%c",
					 (time.hour/10)%10, //取10位上的数
					 'T',
					 'H',
					  (time.min/10)%10, 
					  'T',
					 'M'
					  );
				}
				else //20:10
				{
					 sprintf((char*)timestr,"%d%c%c%c%c",
					(time.hour/10)%10, //取10位上的数
					'T',
					'H',
					 'T',
					'M'
					 );
				}
		}
			else  //min%10!=0;
			{
				if(time.min>20) //20:21
				{
					  sprintf((char*)timestr,"%d%c%c%d%c%d%c",
						(time.hour/10)%10, //取10位上的数
						'T',
						'H',
						 (time.min/10)%10, 
						 'T',
						  time.min%10, 
						'M'
						 );
					}
					else if(time.min>10){ //20:11
						sprintf((char*)timestr,"%d%c%c%c%d%c",
						(time.hour/10)%10, //取10位上的数
						'T',
						'H',
						 'T',
						  time.min%10, 
						'M'
						 );
					}
					else //20:09
					{
						 sprintf((char*)timestr,"%d%c%c%02d%c",
							(time.hour/10)%10, //取10位上的数
							'T',
							'H',
							time.min,
							'M'
							 );
					}
			}
								}	   //		
		   }
	
		   else if(time.hour>=10)// hour<20
		   {
				if(time.hour>10)
				{
									   if(time.min%10 == 0) 
			  {
	  if(time.min == 0) //11:00
	  {
		  sprintf((char*)timestr,"%c%d%c%d%c",
		 'T', //取10位上的数
		  time.hour%10,
		  'H',
		   time.min,
		  'M'
		   );		   
	  }
	  else if(time.min>=20) //11:20
	  {
				sprintf((char*)timestr,"%c%d%c%d%c%c",
			   'T', //取10位上的数
			   time.hour%10,
			   'H',
				(time.min/10)%10, 
				'T',
			   'M'
				);
		  }
		  else //11:10
		  {
			   sprintf((char*)timestr,"%c%d%c%c%c",
			  'T', //取10位上的数
			  time.hour%10,
			  'H',
			   'T',
			  'M'
			   );
		  }
			  }
	  else	//min%10!=0;
	  {
		  if(time.min>20) //11:21
		  {
				sprintf((char*)timestr,"%c%d%c%d%c%d%c",
				  'T',
					time.hour%10,
				  'H',
				   (time.min/10)%10, 
				   'T',
					time.min%10, 
				  'M'
				   );
			  }
			  else if(time.min>10){ //11:11
				  sprintf((char*)timestr,"%c%d%c%c%d%c",
				  'T',
					time.hour%10,
				  'H',
				   'T',
					time.min%10, 
				  'M'
				   );
			  }
			  else //11:09
			  {
				   sprintf((char*)timestr,"%c%d%c%02d%c",
					  'T',
					   time.hour%10,
					  'H',
					  time.min,
					  'M'
					   );
			  }
				} // h>10
		   } //
		   else //h=10
		   {
									 if(time.min%10 == 0) 
				{
		if(time.min == 0) //10:00
		{
			sprintf((char*)timestr,"%c%c%d%c",
			'T',
			'H',
			 time.min,
			'M'
			 ); 		 
		}
		else if(time.min>=20) //10:20
		{
				  sprintf((char*)timestr,"%c%c%d%c%c",
				 'T',
				 'H',
				  (time.min/10)%10, 
				  'T',
				 'M'
				  );
			}
			else //10:10
			{
				 sprintf((char*)timestr,"%c%c%c%c",
				'T',
				'H',
				 'T',
				'M'
				 );
			}
	}
		else  //min%10!=0;
		{
			if(time.min>20) //10:21
			{
				  sprintf((char*)timestr,"%c%c%d%c%d%c",
					'T',
					'H',
					 (time.min/10)%10, 
					 'T',
					  time.min%10, 
					'M'
					 );
				}
				else if(time.min>10){ //10:11
					sprintf((char*)timestr,"%c%c%c%d%c",
					'T',
					'H',
					 'T',
					  time.min%10, 
					'M'
					 );
				}
				else //10:09
				{
					 sprintf((char*)timestr,"%c%c%02d%c",
						'T',
						'H',
						time.min,
						'M'
						 );
				}
		}
		   } // -- h = 10  
		   }else if(time.hour>0)//h<10
		   {
											  if(time.min%10 == 0) 
			 {
	 if(time.min == 0) //9:00
	 {
		 sprintf((char*)timestr,"%d%c%d%c",
		 time.hour,
		 'H',
		  time.min,
		 'M'
		  );		  
	 }
	 else if(time.min>=20) //9:20
	 {
			   sprintf((char*)timestr,"%d%c%d%c%c",
			 time.hour,
			  'H',
			   (time.min/10)%10, 
			   'T',
			  'M'
			   );
		 }
		 else //9:10
		 {
			  sprintf((char*)timestr,"%d%c%c%c",
			time.hour,
			 'H',
			  'T',
			 'M'
			  );
		 }
			 }
	 else  //min%10!=0;
	 {
		 if(time.min>20) //9:21
		 {
			   sprintf((char*)timestr,"%d%c%d%c%d%c",
				 time.hour,
				 'H',
				  (time.min/10)%10, 
				  'T',
				   time.min%10, 
				 'M'
				  );
			 }
			 else if(time.min>10){ //9:11
				 sprintf((char*)timestr,"%d%c%c%d%c",
				 time.hour,
				 'H',
				  'T',
				   time.min%10, 
				 'M'
				  );
			 }
			 else //9:09
			 {
				  sprintf((char*)timestr,"%d%c%02d%c",
				  time.hour,
					 'H',
					 time.min,
					 'M'
					  );
			 }
			   } // h>10
		   }else//h=0
		   {
														 if(time.min%10 == 0) 
			{
	if(time.min == 0) //0:0
	{
		sprintf((char*)timestr,"%d%c%d%c",
		time.hour,
		'H',
		 time.min,
		'M'
		 ); 		 
	}
	else if(time.min>=20) //0:20
	{
			  sprintf((char*)timestr,"%d%c%d%c%c",
			time.hour,
			 'H',
			  (time.min/10)%10, 
			  'T',
			 'M'
			  );
		}
		else //9:10
		{
			 sprintf((char*)timestr,"%d%c%c%c",
		   time.hour,
			'H',
			 'T',
			'M'
			 );
		}
			}
	else  //min%10!=0;
	{
		if(time.min>20) //0:21
		{
			  sprintf((char*)timestr,"%d%c%d%c%d%c",
				time.hour,
				'H',
				 (time.min/10)%10, 
				 'T',
				  time.min%10, 
				'M'
				 );
			}
			else if(time.min>10){ //0:11
				sprintf((char*)timestr,"%d%c%c%d%c",
				time.hour,
				'H',
				 'T',
				  time.min%10, 
				'M'
				 );
			}
			else //9:09
			{
				 sprintf((char*)timestr,"%d%c%02d%c",
				 time.hour,
					'H',
					time.min,
					'M'
					 );
			}
			  } // 
		   }
	
}


#endif
别的函数调用
zwx_common_update_day_step();
step = zwx_common_get_current_day_step();
zwx_common_get_hm_str(sys_time_str);
sprintf(playinfo,"%s%s%s%d","F",sys_time_str,"S",step);
len = strlen(playinfo);
mmi_key_down_to_paly_yellow_info();

PUBLIC void mmi_key_down_to_paly_yellow_info()
{
	mmi_start_play_yellow_key_info();
}

LOCAL void mmi_start_play_yellow_key_info()
{
	 if(index<len)
	 	{	
			mmi_play_ring_id_callback(zwx_get_sys_volume(),charToId(playinfo[index]),mmi_play_yellow_key_info_callback);
			SCI_TRACE_LOW("xwd play yellow key info:%c\n",playinfo[index]);
	 	}
}


LOCAL void mmi_play_yellow_key_info_callback(uint32 result, DPARAM param)
{
	 uint8 id=0;
	if(result==MMISRVAUD_REPORT_RESULT_SUCESS)
	{
		//id=sim_num[current_num]-48;
		SCI_TRACE_LOW("xwd play yellow key index:%d\n",index);
		index++;
		if(index<len)
			{
			        MMIAPISET_StopAppRing();
				  // SCI_SLEEP(100);	
				yellow_play_timer =  MMK_CreateTimerCallback(100, mmi_play_timeout, PNULL, FALSE);
			}
		else
			{
				index = 0;
				len = 0;
				yellow_play_start_flag = 0;
				MMIAPISET_StopAppRing();
			}
	}
}

LOCAL void mmi_play_timeout(void)
{
	mmi_play_ring_id_callback(zwx_get_sys_volume(),charToId(),mmi_play_yellow_key_info_callback);	
	SCI_TRACE_LOW("xwd play yellow key info timeout:%c\n",playinfo[index]);
}


LOCAL uint16 charToId()
{
	char info = playinfo[index];
	SCI_TRACE_LOW("xwd info:%c\n",info);
	if(info =='F')
		{
			SCI_TRACE_LOW("xwd current time");
			return R_CURRENT_TIME;
		}
	else if(info =='S')
		{
			SCI_TRACE_LOW("xwd return current step");
			return R_CURRENT_STEPS;
		}
	else if(info =='1')
		{
				return R_NUM_1;
		}
	else if(info =='2')
		{
			return R_NUM_2;
		}
	else if(info =='3')
		{
			return R_NUM_3;
		}
	else if(info =='4')
		{
			return R_NUM_4;
		}
	else if(info =='5')
		{
			return R_NUM_5;
		}
	else if(info =='6')
		{
			return R_NUM_6;
		}
	else if(info =='7')
		{
			return R_NUM_7;
		}
	else if(info =='8')
		{
			return R_NUM_8;
		}
	else if(info =='9')
		{
			return R_NUM_9;
		}
	else if(info =='0')
		{
			return R_NUM_0;
		}
	else if(info =='H')
		{
			return R_HOUR;
		}
	else if(info =='M')
		{
			return R_MINUTES;
		}
	else if(info == 'T')
		{
		return R_NUM_10;
		}
	return -1;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值