青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Benjamin

靜以修身,儉以養(yǎng)德,非澹薄無以明志,非寧靜無以致遠(yuǎn)。
隨筆 - 398, 文章 - 0, 評(píng)論 - 196, 引用 - 0
數(shù)據(jù)加載中……

WINCE下如何實(shí)現(xiàn)發(fā)短信

#include <sms.h>
#pragma comment(lib,"sms.lib")
void SendSMS1(LPCTSTR lpszMessage, LPCTSTR lpszRecipient,LPCTSTR lpszSMSC,BOOL bSendConfirmation, BOOL bUseDefaultSMSC)
{

 SMS_HANDLE smshHandle; //短信句柄
 SMS_ADDRESS smsaDestination;//接收號(hào)碼
 TEXT_PROVIDER_SPECIFIC_DATA tpsd;
 SMS_MESSAGE_ID smsmidMessageID;

 // 打開發(fā)送句柄
 // 協(xié)議字符串,       SMS_MODE_SEND:發(fā)送模式 psmshHandle:返回的句柄 phMessageAvailableEvent:通知的事件
 if(FAILED(SmsOpen(SMS_MSGTYPE_TEXT, SMS_MODE_SEND, &smshHandle, NULL)))
 {
  return;
 }


 // Create the destination address
//SMSAT_NATIONAL:國內(nèi)電話 SMSAT_INTERNATIONAL:國際電話
 smsaDestination.smsatAddressType = SMSAT_UNKNOWN;
 _tcsncpy(smsaDestination.ptsAddress, lpszRecipient, SMS_MAX_ADDRESS_LENGTH);

 // Set up provider specific data
 memset(&tpsd, 0, sizeof(tpsd));
 //tpsd.dwMessageOptions =  PS_MESSAGE_OPTION_NONE;
 tpsd.dwMessageOptions =  PS_MESSAGE_OPTION_STATUSREPORT;//表示需要狀態(tài)報(bào)告
 tpsd.psMessageClass = PS_MESSAGE_CLASSUNSPECIFIED;
//PS_MESSAGE_CLASS0表示短信在被接收后立即顯示且不存儲(chǔ)在收件箱(稱為閃信)
 //PS_MESSAGE_CLASS1表示一般的情況,被接收后存儲(chǔ)到收件箱并發(fā)送一個(gè)確認(rèn)回短信中心,發(fā)送方收到一個(gè)已被接收的狀態(tài)報(bào)告。
 tpsd.psReplaceOption = PSRO_NONE;
 //手動(dòng)清空頭信息 
 ZeroMemory(tpsd.pbHeaderData, sizeof(tpsd.pbHeaderData));        
 tpsd.dwHeaderDataSize = 0;
 tpsd.fMessageContainsEMSHeaders = FALSE;
 tpsd.dwProtocolID = SMS_MSGPROTOCOL_UNKNOWN;

 // Send the message, indicating success or failure
 /*
 *smshHandle: SmsOpen打開的句柄
 ?? psmsaSMSCAddress: SMSC中心
 ?? *psmsaDestinationAddress:發(fā)送的目的地址
 ?? pstValidityPeriod :發(fā)送時(shí)間的有效期
 ?? *pbData: 信息的內(nèi)容部分
 ?? *dwDataSize: 信息的內(nèi)容部分的長度
 ?? *pbProviderSpecificData:針對運(yùn)營商的附加數(shù)據(jù)
 ?? *dwProviderSpecificDataSize :附加數(shù)據(jù)的長度
 ?? smsdeDataEncoding :短信編碼[SMSDE_OPTIMAL是其
 推薦值]表示由短信中心決定字符的格式
 ?? dwOptions :其他選項(xiàng)
 ?? psmsmidMessageID: 用于得到系統(tǒng)回執(zhí)的信息
 SmsGetMessageStatus
 */

//SMSDE_GSM使用7-bit編碼
 //SMSDE_UCS2使用16-bit (Unicode)編碼
 if(SUCCEEDED(SmsSendMessage(smshHandle, NULL,
  &smsaDestination, NULL, (PBYTE) lpszMessage,
  _tcslen(lpszMessage) * sizeof(TCHAR), (PBYTE) &tpsd,
  sizeof(TEXT_PROVIDER_SPECIFIC_DATA), SMSDE_UCS2,
  SMS_OPTION_DELIVERY_NONE, &smsmidMessageID)))
 {
  //Tstr=L"發(fā)送完成";


  //發(fā)送完成
  MessageBox(    NULL,L"SEND OK",L"MSG",MB_OK);
 }
 else
 {

  //發(fā)送失敗
  //Tstr=L"發(fā)送失敗";
  MessageBox(NULL,L"發(fā)送失敗",L"MSG",MB_OK);
 }

 // clean up
 VERIFY(SUCCEEDED(SmsClose(smshHandle)));



注意:LPCTSTR 和 PCWSTR是寬字符,所以用16-bit (Unicode)編碼。網(wǎng)上的HelloSMS的程序不夠嚴(yán)謹(jǐn),如果照用可能造成短信中心網(wǎng)關(guān)把短信給吞掉的情況,程序雖然調(diào)用成功,但是就是目標(biāo)號(hào)碼收不到短信。函數(shù)參數(shù)中的后三個(gè)參數(shù)可以不用或設(shè)默認(rèn)值都可以。

使用Windows CESMS API函數(shù)SmsSendMessage可以發(fā)送7-bit編碼和16-bit編碼的短消息(未測試8-bit編碼)。單條短消息的最大字符數(shù)分別是16070。發(fā)送短消息全部為ASCII字符,SMS_DATA_ENCODING參數(shù)選擇SMSDE_GSMSMSDE_OPTIMAL都可以。發(fā)送短消息不全為ASCII字符,SMS_DATA_ENCODING參數(shù)選擇SMSDE_UCS2SMSDE_OPTIMAL都可以。建議選擇SMSDE_OPTIMAL

發(fā)送短消息全部為ASCII字符,且字符個(gè)數(shù)超過160個(gè)時(shí),系統(tǒng)會(huì)自動(dòng)將短消息進(jìn)行分割,但并不是按每條160進(jìn)行分割,而是按每條153。發(fā)送短消息不全為ASCII字符,且字符個(gè)數(shù)超過70個(gè)時(shí),系統(tǒng)會(huì)自動(dòng)將短消息進(jìn)行分割,但并不是按每條70進(jìn)行分割,而是按每條67

發(fā)送短消息的字符數(shù)超過16070時(shí),應(yīng)該自行進(jìn)行分割,而不應(yīng)交由系統(tǒng)進(jìn)行分割,這樣可以最大限度的利用單條短消息的最大字符數(shù)分別是16070的條件.

上面的代碼是通過MAPI來實(shí)現(xiàn),任意一部有SIM卡的PDA/PPC上都已運(yùn)行。


下面的代碼是通過串口和AT指令來發(fā)送短信,需要有Gms Modem 才可以運(yùn)行。
HANDLE hSerial;
 int res;
 unsigned long bytes;
 
 //COM1 COM2 COM4
 hSerial = CreateFile(_T("COM1:"), GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ,NULL,OPEN_EXISTING,0,NULL);
 
 
 
 if(hSerial == NULL)
 {
  ///L"串口打開失敗";
  return;
 }
 ///配置串口
 DCB  PortDCB;   
 PortDCB.DCBlength = sizeof(DCB);
 // 默認(rèn)串口參數(shù)
 GetCommState(hSerial, &PortDCB);
 PortDCB.BaudRate =115200 ; // baud
 PortDCB.ByteSize = 8;     // Number of bits/byte, 4-8
 PortDCB.Parity = NOPARITY;
 PortDCB.StopBits = ONESTOPBIT; 
 PortDCB.fBinary=TRUE;
 if (! SetCommState(hSerial, &PortDCB))
 {
  ///L"配置串口失敗";
  return;
 }
 ////配置超時(shí)值
 COMMTIMEOUTS  CommTimeouts;
 GetCommTimeouts(hSerial, &CommTimeouts);
 CommTimeouts.ReadIntervalTimeout = 100; 
 CommTimeouts.ReadTotalTimeoutMultiplier = 100; 
 CommTimeouts.ReadTotalTimeoutConstant = 100;   
 CommTimeouts.WriteTotalTimeoutMultiplier =100; 
 CommTimeouts.WriteTotalTimeoutConstant = 100;   
 if (!SetCommTimeouts(hSerial, &CommTimeouts))
 {
  
  return;
                
 
 //設(shè)置串口“感興趣”的事件
 SetCommMask(hSerial, EV_RXCHAR);
 
 //設(shè)置輸入輸出緩沖區(qū)
 SetupComm(hSerial, 1024, 1024);
 
 //初始化緩沖區(qū)中的信息
 PurgeComm(hSerial, PURGE_TXCLEAR|PURGE_RXCLEAR);
 
//-------------------------------------串口設(shè)置完畢----------------------------------------


 UpdateData(TRUE);

 char str_last[2000];
 int num_Length=0;
 int context_length=0;
 TCHAR tmp[2];
 int i=0;
 char addr[100]="0891683108100005F0";//短信中心號(hào)碼 
 char phone[100]="11000D91";
 char msg[1000];
// unsigned char *msg_tmp;
 unsigned char msg_tmp[1000];

 
 char str_tmp[100]="";
 char str_tmp2[50]="000800";

 num_Length=m_num.GetLength();
 context_length=m_context.GetLength();

 m_num=L"86"+m_num;
 if(num_Length%2){m_num=m_num+L"F";}


 for (i=0; i <(m_num.GetLength()); )  //處理 目標(biāo)電話號(hào)碼 奇偶換位
 {
  phone[i+9] = m_num.GetAt(i);
  phone[i+8] = m_num.GetAt(i+1);
  i+=2;
 }

WideCharToMultiByte(CP_ACP, 0, m_context, m_context.GetLength(), str_tmp, 160, NULL, NULL);

// msg_tmp=(unsigned char *)malloc(sizeof(unsigned char ));
 gsmEncodeUcs2(str_tmp,msg_tmp,context_length);//UCS2編碼

 for(i=0;i<context_length*2;i++)//將編后的碼轉(zhuǎn)換為16進(jìn)制以進(jìn)行傳輸 前兩位預(yù)留
 {
  wsprintf(tmp, L"%02X", msg_tmp[i]);
  msg[2*i+2]=tmp[0];
  msg[2*i+3]=tmp[1];
 
 }
 
 
 wsprintf(tmp, L"%02X", context_length*2);//前兩位存儲(chǔ)msg的長度
 msg[0]=tmp[0];
 msg[1]=tmp[1];

//-------------------------------addr phone msg 全部就緒----------------------------
// 最終信息為 str_last=addr+phone+000800+msg 

 for(i=0;i<18 ;i++)
 {
  str_last[i]=addr[i];
 }
 
 for(i=0;i<22 ;i++)
 {
  str_last[i+18]=phone[i];
 }
 

 for(i=0;i<6 ;i++)
 {
  str_last[i+40]=str_tmp2[i];
 }
 
 for(i=0;i<context_length*4+2 ;i++)
 {
  str_last[i+46]=msg[i];
 }

 str_last[i+46]='\32';

 
//--------------------------開始發(fā)送-------------------------------------------- 
 
 char str1[100]="AT+CMGS=25\r";
 wsprintf(tmp, L"%02d",(context_length*4+30)/2);//計(jì)算需要發(fā)送的字節(jié)

 str1[8]=tmp[0];
 str1[9]=tmp[1];

 char str2[100]="";
 res=WriteFile(hSerial,str1,100,&bytes,NULL);
 res=ReadFile(hSerial,str2,100,&bytes,NULL);
 
 

 char str3[100]="";
 res=WriteFile(hSerial,str_last,1000,&bytes,NULL);
 res=ReadFile(hSerial,str3,100,&bytes,NULL);
//----------------------------發(fā)送結(jié)束------------------------------------------------------- 

// free(msg_tmp);
 CloseHandle(hSerial); 
}

BOOL CSendMessage2::OnInitDialog()
{
 CDialog::OnInitDialog();
 
 // TODO: Add extra initialization here
// m_num=L"15010657623";
 m_num=L"13811916883";

// m_context=L"1192323 392486";
 m_context=L"工作愉快!";
 UpdateData(false);  
 return TRUE;

網(wǎng)上的HelloSMS的發(fā)送短信代碼,有不完善的地方。用它來發(fā)短信可能會(huì)有問題,下面這段代碼是我對它的一個(gè)改進(jìn),基本可以運(yùn)行在實(shí)際的項(xiàng)目中:
////////////////////////////////////////////////////////////////////////////
//                         發(fā)送短信
//lpszSMSC:短信中心號(hào)碼  lpszRecipient:接收號(hào)碼(目標(biāo)號(hào)碼)
//lpszMessage:發(fā)送短信內(nèi)容
//bUseDefaultSMSC:目標(biāo)地址 
//bSendConfirmation:消息發(fā)送選項(xiàng)
////////////////////////////////////////////////////////////////////////////
void CCellGuardApp::SendSMS( LPCTSTR lpszMessage, LPCTSTR lpszRecipient,LPCTSTR lpszSMSC,BOOL bSendConfirmation, BOOL bUseDefaultSMSC)
{
 SMS_HANDLE smshHandle; //短信句柄
 SMS_ADDRESS smsaDestination;//接收號(hào)碼
 TEXT_PROVIDER_SPECIFIC_DATA tpsd;
 SMS_MESSAGE_ID smsmidMessageID;

 // 打開發(fā)送句柄
 // 協(xié)議字符串,       SMS_MODE_SEND:發(fā)送模式 psmshHandle:返回的句柄 phMessageAvailableEvent:通知的事件
 if(FAILED(SmsOpen(SMS_MSGTYPE_TEXT, SMS_MODE_SEND, &smshHandle, NULL)))
 {
  return;
 }

 // Create the destination address
 smsaDestination.smsatAddressType = SMSAT_UNKNOWN;
 _tcsncpy(smsaDestination.ptsAddress, lpszRecipient, SMS_MAX_ADDRESS_LENGTH);

 // Set up provider specific data
 memset(&tpsd, 0, sizeof(tpsd));
 //tpsd.dwMessageOptions =  PS_MESSAGE_OPTION_NONE;
 tpsd.dwMessageOptions =  PS_MESSAGE_OPTION_STATUSREPORT;
 tpsd.psMessageClass = PS_MESSAGE_CLASSUNSPECIFIED;
 tpsd.psReplaceOption = PSRO_NONE;
 //tpsd.dwHeaderDataSize = 0;
 ZeroMemory(tpsd.pbHeaderData, sizeof(tpsd.pbHeaderData));        
 tpsd.dwHeaderDataSize = 0;
 tpsd.fMessageContainsEMSHeaders = FALSE;
 tpsd.dwProtocolID = SMS_MSGPROTOCOL_UNKNOWN;

 // Send the message, indicating success or failure
 if(SUCCEEDED(SmsSendMessage(smshHandle, NULL,
  &smsaDestination, NULL, (PBYTE) lpszMessage,
  _tcslen(lpszMessage) * sizeof(TCHAR), (PBYTE) &tpsd,
  sizeof(TEXT_PROVIDER_SPECIFIC_DATA), SMSDE_UCS2,
  SMS_OPTION_DELIVERY_NONE, &smsmidMessageID)))
 {
  //Tstr=L"發(fā)送完成";
  //發(fā)送完成
  ;
 }

 // clean up
 VERIFY(SUCCEEDED(SmsClose(smshHandle)));
}

posted on 2008-04-10 11:17 Benjamin 閱讀(3633) 評(píng)論(3)  編輯 收藏 引用 所屬分類: PDA/PPC開發(fā)

評(píng)論

# re: WINCE下如何實(shí)現(xiàn)發(fā)短信  回復(fù)  更多評(píng)論   

Thank you!
通過看你的介紹把我的一個(gè)問題解決了!

不勝感激啊!
2009-03-09 17:23 | Sandy

# re: WINCE下如何實(shí)現(xiàn)發(fā)短信  回復(fù)  更多評(píng)論   

弄錯(cuò)了一個(gè)參數(shù)
PS_MESSAGE_CLASSUNSPECIFIED

這個(gè)參數(shù)設(shè)置以后,短信發(fā)出去了,但是卻引起了tmail.exe的異常

不知道什么原因造成的
2009-03-09 19:30 | Sandy

# re: WINCE下如何實(shí)現(xiàn)發(fā)短信  回復(fù)  更多評(píng)論   

但是WINCE開發(fā)包中沒有 sms.h 啊,windows mobile中倒是有
2009-07-10 11:04 | hou
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产综合亚洲精品一区二| 亚洲视频视频在线| 欧美成人性网| 久久一区亚洲| 亚洲一区bb| 欧美精品 日韩| 影院欧美亚洲| 久久精品国产免费看久久精品| 亚洲精品你懂的| 亚洲一级特黄| 国产精品成人免费| 一本色道综合亚洲| 欧美激情第五页| 久久免费国产精品1| 国产综合一区二区| 亚洲天堂成人在线视频| 日韩视频三区| 国产精品久久久久久模特| 亚洲欧美激情一区二区| 亚洲一级片在线观看| 国产女人aaa级久久久级| 欧美一区永久视频免费观看| 午夜精品久久久久久久久久久久久 | 久久综合国产精品| 久久久久久69| 欧美日本在线看| 亚洲精品免费在线| 亚洲欧洲一区二区三区| 欧美国产一区二区在线观看| 在线观看欧美日韩国产| 久久亚洲精品网站| 亚洲欧洲99久久| 久久综合中文字幕| 国产一区二区观看| 亚洲中字在线| 亚洲精品欧美激情| 欧美精品日日鲁夜夜添| 亚洲精品久久嫩草网站秘色| 欧美成人在线免费视频| 欧美成人精品在线播放| 最新日韩精品| 亚洲国产精品成人一区二区| 国产视频精品网| 亚洲人成网站影音先锋播放| 久久亚洲私人国产精品va| 久久精品国产亚洲5555| 精品二区视频| 欧美激情一区在线观看| 欧美激情一区二区三区蜜桃视频| 91久久精品久久国产性色也91| 欧美激情视频一区二区三区在线播放 | 在线视频欧美一区| 欧美精品久久久久久久| 亚洲午夜av在线| 香蕉久久国产| 亚洲黄色尤物视频| 99在线精品观看| 国产女人水真多18毛片18精品视频| 欧美一区二区三区精品 | 国内精品久久国产| 欧美成人久久| 欧美日韩亚洲一区在线观看| 欧美一级视频一区二区| 久久久久在线| 一区二区三区精密机械公司| 亚洲免费在线视频| 亚洲黄页视频免费观看| 在线视频欧美日韩精品| 伊人久久大香线蕉av超碰演员| 亚洲国产精品免费| 国产麻豆视频精品| 亚洲黄色免费网站| 国内精品一区二区三区| 日韩视频一区二区在线观看 | 午夜精品视频| 久久综合九色综合网站| 午夜精品久久久久久久男人的天堂 | 欧美福利在线观看| 国产精品日本精品| 亚洲国产一区二区a毛片| 国产乱人伦精品一区二区| 欧美成人黑人xx视频免费观看| 国产精品久久久久久久久免费樱桃 | 久久综合色8888| 欧美一级大片在线观看| 久久中文久久字幕| 久久久91精品国产一区二区精品| 欧美精品一区二区精品网| 久久视频在线免费观看| 国产精品卡一卡二| 日韩一级大片| 亚洲精品国产精品国自产在线 | 欧美亚洲视频| 欧美大片在线观看一区二区| 9色porny自拍视频一区二区| 久久久久久亚洲精品杨幂换脸| 午夜国产不卡在线观看视频| 欧美日韩免费网站| 亚洲日本成人| av成人免费在线观看| 欧美一区免费| 伊人成人在线视频| 亚洲日本成人在线观看| 欧美午夜www高清视频| 欧美成人影音| 在线国产精品播放| 久久精品一区四区| 免费久久久一本精品久久区| 国产一区二区三区久久| 欧美一区二区三区婷婷月色| 欧美影院视频| 国产乱肥老妇国产一区二| 亚洲制服少妇| 欧美亚洲在线| 国产人成精品一区二区三| 午夜精品福利视频| 久久久www| 在线成人性视频| 久久综合九色综合网站 | 在线一区二区三区做爰视频网站| 日韩午夜三级在线| 欧美日韩免费观看中文| 夜夜嗨av一区二区三区四区| 亚洲欧美国产不卡| 欧美体内she精视频| 亚洲视频999| 欧美在线视频在线播放完整版免费观看 | 99国产欧美久久久精品| 久久九九免费| 欧美一区二区三区婷婷月色| 国产精品九九久久久久久久| 亚洲黄色高清| 亚洲剧情一区二区| 久久国产精品久久久| 欧美激情久久久久久| 9久草视频在线视频精品| 欧美午夜大胆人体| 欧美伊久线香蕉线新在线| 久久亚洲色图| 99这里有精品| 国产一区二区三区高清 | 欧美激情 亚洲a∨综合| 在线综合视频| 久久久国产精品一区| 日韩视频在线观看一区二区| 国产精品sm| 久久蜜桃资源一区二区老牛 | 免费国产一区二区| 欧美日韩亚洲成人| 亚洲欧美激情视频在线观看一区二区三区| 久久成人精品无人区| 亚洲国产成人av| 欧美性做爰毛片| 一区二区三区日韩欧美| 欧美一区二区三区视频在线 | 免费视频一区| 亚洲永久在线| 亚洲成人在线网站| 午夜精品久久久久久久99水蜜桃 | 亚洲一区免费视频| 欧美大片18| 欧美在线免费观看| 夜夜嗨av色综合久久久综合网 | 亚洲福利在线看| 欧美精品xxxxbbbb| 欧美在线啊v一区| 99精品黄色片免费大全| 狂野欧美一区| 欧美在线二区| 亚洲男人的天堂在线| 亚洲精品国产精品乱码不99 | 91久久线看在观草草青青| 久久亚洲捆绑美女| 欧美一区2区三区4区公司二百| 亚洲日本激情| 亚洲国产精品999| 国产一区二区在线免费观看| 国产精品毛片高清在线完整版| 欧美日韩免费区域视频在线观看| 欧美二区在线| 午夜精品www| 亚洲视频在线二区| 亚洲日本激情| 亚洲大片av| 欧美激情一区二区三级高清视频| 开元免费观看欧美电视剧网站| 久久久免费精品视频| 欧美在线精品免播放器视频| 欧美一区二区三区免费大片| 亚洲一区成人| 在线亚洲自拍| 99视频在线精品国自产拍免费观看| 亚洲激情欧美| 亚洲日本免费电影| 亚洲美女视频在线免费观看| 亚洲精品国精品久久99热| 最新日韩精品| 一本色道久久综合一区| 亚洲一区久久久| 亚洲欧美日韩区|