原来以为只有GSM模块硬件支持彩信才可以收发彩信,后来写完彩信软件后才发现只要是能上网的手机都可以支持彩信,彩信其实就是一条URL网址的短信,指向一个图片或声音等文件,例 如:
$application/vnd.wap.mms-message JNHLRazjiIdB http://211.136.221.115/JNHLRazjiIdB TYPE=PLMN
打开此连接后,显示是彩信内容,即一张图片
部分代码如下:
//--------------------------------------------------------------------------------------------------------------------------------------
BOOL GSMLib::GetSMS(int index,SM_PARAM* pMsg)
{
char* ptr; // 内部用的数据指针
char pBuff[MAX_SMS_COUNT*100]; //短消息数据
char Cmd[256];
char PDU[256];
memset(pBuff,0,MAX_SMS_COUNT*100);
memset((void*)pMsg,0,sizeof(SM_PARAM));
memset(Cmd,0,256);
memset(PDU,0,256);
sprintf(Cmd,"AT+CMGR=%d/r",index);
m_pSerial->SendStrAndWait(Cmd,0,pBuff,sizeof(pBuff),10000);
ptr = pBuff;
if((ptr = strstr(ptr, "+CMGR:")) != NULL)// 循环读取每一条短消息, 以"+CMGL:"开头
{
ptr += 6; // 跳过"+CMGR:", 定位到序号
ptr = strstr(ptr, "/r/n"); // 找下一行
if (ptr != NULL)
{
ptr += 2; // 跳过"/r/n", 定位到PDU
gsmDecodePdu(ptr, pMsg); // PDU串解码
}
return TRUE;
}
return FALSE;
}