微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > mtk 11B版本中的srv_sms_send_asc_text_msg函数发送短信乱码的问题?

mtk 11B版本中的srv_sms_send_asc_text_msg函数发送短信乱码的问题?

时间:10-02 整理:3721RD 点击:
我想使用srv_SMS_send_asc_text_msg函数发送短信,因为这个函数发送短信的速度最快;
extern void srv_sms_send_asc_text_msg( char *asc_content,  char *asc_number,  srv_sms_SIM_enum sim_id,    SrvSmsCallbackFunc callback_func,   void *user_data);
我传入的电话号码和短信内容(全部英文)都是ascii编码,可是对方收到的短信却是乱码,这是什么原因造成的?如何解决?

你确认下传输类型哦,是7bit,8bit还是其他一个什么类型,具体忘记了,总之是unicode编码,ascii码是7bit,确认下你传输之前是不是已经乱码了?

这个函数没有地方可以设置PDU的类型

传输之前是ascii编码,不是乱码;
另外,查看了srv_sms_send_asc_text_msg函数的实现代码,函数内部也没有对传输类型进行设置

可以试试我这个函数:

  1. void SendTextMessage(char *pnumber, char *ptext)
  2. {
  3.     /*----------------------------------------------------------------*/
  4.     /* Local Variables                                                */
  5.     /*----------------------------------------------------------------*/
  6.         SMS_HANDLE sms_handle;
  7.         S32 textlength = 0;
  8.         S8 *content_buf = NULL;
  9.         S8 ucs2_number[(SRV_SMS_MAX_ADDR_LEN + 1)*ENCODING_LENGTH] = {0};
  10.         
  11.     /*----------------------------------------------------------------*/
  12.     /* Code Body                                                      */
  13.     /*----------------------------------------------------------------*/
  14.          if (mmi_sms_is_sms_ready() == MMI_FALSE)
  15.     {
  16.         return;
  17.     }   
  18.    
  19.     sms_handle = srv_sms_get_send_handle();
  20.     srv_sms_set_content_dcs(sms_handle, (srv_sms_dcs_enum)SMSAL_DEFAULT_DCS/*SMSAL_UCS2_DCS*/);
  21.     srv_sms_set_sim_id(sms_handle, SRV_SMS_SIM_1);

  22.     /* the sending screen should not show because the blocking mechanism of JAVA */
  23.     srv_sms_set_send_type(sms_handle, SRV_SMS_BG_SEND);

  24.     /* Do not allow empty SC address  */
  25.     //srv_sms_set_not_allow_empty_sc(sms_handle);

  26.     srv_sms_set_counter_without_change(sms_handle);
  27.     srv_sms_set_no_sending_icon(sms_handle);
  28.         
  29.         mmi_asc_n_to_ucs2((S8*)ucs2_number, (S8*)pnumber, SRV_SMS_MAX_ADDR_LEN);
  30.         srv_sms_set_address(sms_handle, (S8*)ucs2_number);

  31.         textlength = strlen(ptext) * ENCODING_LENGTH;
  32.         content_buf = (S8*)OslMalloc(textlength);
  33.         memset(content_buf, 0, textlength);
  34.     mmi_asc_to_ucs2(content_buf, (S8*)ptext);

  35.     srv_sms_set_content(sms_handle, (S8*) content_buf, (U16) textlength);
  36.     srv_sms_send_msg(sms_handle, SendTextMessageCB, NULL);
  37.         OslMfree((S8*)content_buf);
  38. }

  39. static void SendTextMessageCB(srv_sms_callback_struct *cb)
  40. {
  41.         if(cb->result)
  42.         {
  43.                 MC_TRACE(0, "SendTextMessageCB send seccussful.action=%d,cause=%d.",cb->action, cb->cause);
  44.         }
  45.         else
  46.         {
  47.                 MC_TRACE(0, "SendTextMessageCB send failed.action=%d,cause=%d.",cb->action, cb->cause);
  48.         }
  49. }

复制代码

liujin使用的方法和我原先使用的方法基本相同,多用了两个设置函数:
    srv_sms_set_counter_without_change(sms_handle);
    srv_sms_set_no_sending_icon(sms_handle);
经过测试,发送速度相对srv_sms_send_asc_text_msg函数而言,还是慢了很多,所花的时间是srv_sms_send_asc_text_msg函数的一倍还多。

譬如发送一条请求短信到手机,手机收到后使用srv_sms_send_asc_text_msg函数返回短信,整个过程只花了10秒钟;
而如果使用上述的函数,需要25秒钟

LZ短信问题搞定了吗?
有没有遇到过发短信不成功,而且不停重启的情况?
多谢指教先。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top