微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > mtk 后台自动回复短信 碉堡了.......

mtk 后台自动回复短信 碉堡了.......

时间:10-02 整理:3721RD 点击:
设备里面有拦截功能,主机给设备发短信,根据收到不同短信指令,向服务器发送请求,服务器返回数据,然后把内容返回给主机。
返回短信长度超过一条了,所以用后台长短信发送,内容可以正常返回一条(长短信),但是偶尔会在后面跟着一条“空格”内容短信。  不经常发生,
先贴个代码:
void test_sendSms(char* pNumber, char*pContent, PsFuncPtrU16 callback)
{
       int numlen = 0;
        S8 * textbufUCS2 = NULL;
        S8 smsPhoneNumber [(MAX_DIGITS_SMS+1)*ENCODING_LENGTH] = {0};
        EMSData        *pEMS = NULL;
        byte  result;
        int len,i;
        len = mlbswstrlen(pContent);
        ReleaseEMSEditBuffer();
        pEMS = (EMSData        *)GetEMSDataForEdit(0,1);
      if(pEMS == NULL)
                return;
        g_msg_cntx.sendSaveStatus = SEND_SAVE_NIL;
        memset (g_msg_cntx.smsPhoneNumber, 0, sizeof(g_msg_cntx.smsPhoneNumber));
        numlen = strlen(pNumber) > MAX_DIGITS_SMS?MAX_DIGITS_SMS:strlen(pNumber);
        AnsiiNToUnicodeString((S8 *) smsPhoneNumber,( S8 *) pNumber,numlen);
        pfnUnicodeStrcpy(g_msg_cntx.smsPhoneNumber,(S8 *)smsPhoneNumber);
        PendingSaveSendData.totalSegments=1;
        PendingSaveSendData.mti=SMSAL_MTI_SUBMIT;
        memset(PendingSaveSendData.TPUD, 0,sizeof(PendingSaveSendData.TPUD));
        for (i=1; i<mmi_msg_get_seg_num(); i++)
        {
                PendingSaveSendData.TPUDLen=0;
                PendingSaveSendData.TPUD_p=NULL;
                PendingSaveSendData.l4index=SMS_INVALID_INDEX;
                PendingSaveSendData.TPUD_udhi= FALSE;
        }
        g_msg_cntx.sendMessageCase = SEND_CASE_SEND_ONLY;
        textbufUCS2 = (S8 *)OslMalloc(len+2);
        if(textbufUCS2 == NULL)
                return;
        memset((void *)textbufUCS2,0,len+2);
        memcpy((void *)textbufUCS2,(void *)pContent,len);
        result = AppendEMSString (IMM_INPUT_TYPE_SENTENCE,
        pEMS, (U8*)textbufUCS2, SMSAL_UCS2_DCS, NULL);  
        if(textbufUCS2)       
                OslMfree(textbufUCS2);
        if(result)
        {
                mmi_frm_sms_send_struct * sendData=OslMalloc(sizeof(mmi_frm_sms_send_struct));
                if(sendData == NULL)
                         return;
                MlbsCloseSmsReport = TRUE;
                memset((S8*)sendData, 0, sizeof(mmi_frm_sms_send_struct));
                memset(sendData->number, 0, MAX_DIGITS_SMS);       
                memcpy(sendData->number, pNumber,numlen);
                //自定义回调函数判断
                if(callback)
                {
                        mmi_frm_sms_send_sms( callback, MOD_MMI, sendData);
                }
                else
                {
                        mmi_frm_sms_send_sms( mlbs_send_mode_message_cellback, MOD_MMI, sendData);
                }
                if(sendData)
                        OslMfree(sendData);
        }
        else
        {
                MlbsCloseSmsReport = FALSE;
        }
}

我调试,  后面那条“空格”短信,没用经过这个函数处理,  
上面函数使我写的,  其他都是调用自带的短信函数。
这个情况跟服务器返回的内容有关系吗?

解决了。  在 test_sendSms里面加入状态标示,  如果在使用就不处理本次短信发送请求。状态清零在回调函数里实现。
不是完美的解决方法

主要后台发短信操作,帮忙看下有没有问题。
因为之前用的是一条(70汉字)短信,没有这个问题,后来因为内容太多,另外写一个前期处理函数。   

确实有点不清楚

没人遇到这个问题。 问题描述不够清楚?

小编不错!

奖励1RDB,感谢小编的分享

坑人的代码 好多用户要求清此代码!很难清干净。

Good!

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

网站地图

Top