麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

用VB6.0編寫(xiě)手機(jī)短信發(fā)送

2019-11-18 17:28:52
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
因?yàn)槭謾C(jī)短消息的發(fā)送是以PDU串的形式發(fā)送出去的,中文字符以Unicode碼來(lái)表示,所以在發(fā)送中文短消息之前必須首先將中文字符轉(zhuǎn)換為Unicode碼,下面的函數(shù)將實(shí)現(xiàn)這個(gè)功能。這個(gè)函數(shù)主要應(yīng)用到VB自帶的一個(gè)格式轉(zhuǎn)換函數(shù):ChrW()將中文轉(zhuǎn)換為Unicode碼。 

  PublicFunctionchg(rmsgAsString)AsString
  DimtepAsString
  DimtempAsString
  DimiAsInteger
  DimbAsInteger
  tep=rmsg
  i=Len(tep)
  b=i/4
  Ifi=b*4Then
  b=b-1
  tep=Left(tep,b*4)
  Else
  tep=Left(tep,b*4)
  EndIf
  chg=""
  Fori=1Tob
  temp="&H"&Mid(tep,(i-1)*4 1,4)
  chg=chg&ChrW(CInt(Val(temp)))
  Nexti
  EndFunction


  同上,為了發(fā)送以PDU模式發(fā)送短消息,必須將手機(jī)號(hào)碼和對(duì)方手機(jī)號(hào)碼也轉(zhuǎn)換為PDU格式,下面的函數(shù)就是為了實(shí)現(xiàn)這種轉(zhuǎn)換: 

  PublicFunctiontelc(numAsString)AsString
  DimtlAsInteger
  Dimltem,rtem,ttemAsString
  DimtiAsInteger
  ttem=""
  tl=Len(num)
  Iftl<>11Andtl<>13Then
  MsgBox"wrongnumber."&tl
  ExitFunction
  EndIf
  Iftl=11Then
  tl=tl 2
  num="86"&num
  EndIf
  Forti=1TotlStep2
  ltem=Mid(num,ti,1)
  rtem=Mid(num,ti 1,1)
  Ifti=tlThenrtem="F"
  ttem=ttem&rtem&ltem
  Nextti
  telc=ttem
  EndFunction  

  手機(jī)號(hào)碼有兩種表示方法:11位和13位(帶國(guó)家碼86),一般手機(jī)發(fā)送時(shí)都是以13位形式表示的,所以以上的函數(shù)還有一個(gè)功能是自動(dòng)將11位格式手機(jī)號(hào)碼轉(zhuǎn)換為13位形式,然后再轉(zhuǎn)換為PDU串。


  手機(jī)短信的發(fā)送主要借助于VB的Mscomm控件實(shí)現(xiàn),關(guān)于Mscomm控件,前面的技術(shù)介紹部分有詳細(xì)介紹。短信的發(fā)送是由AT CMGS指令完成的,采用PDU模式發(fā)送,函數(shù)代碼如下:

  ConstPRex="0891"
  Constmidx="11000D91"
  Constsufx="000800"
  PublicFunctionSendsms(cscaAsString,numAsString,msgAsString)As_Boolean
  Dimpdu,psmsc,pnum,pmsgAsString
  DimlengAsString
  DimlengthAsInteger
  length=Len(msg)
  length=2*length
  leng=Hex(length)
  Iflength<16Thenleng="0"&leng
  psmsc=Trim(telc(csca))
  pnum=Trim(telc(num))
  pmsg=Trim(ascg(msg))
  pdu=prex&psmsc&midx&pnum&sufx&leng&pmsg
  sleep(1)
  mobcomm.Output="AT CMGF=0" vbCr
  mobcomm.Output="AT CMGS="&Str(15 length) vbCr
  mobcomm.Output=pdu&Chr$(26)
  sleep(1)
  Sendsms=True
  EndFunction  

  因?yàn)槭謾C(jī)同一時(shí)間只能處理一件事情,因此這個(gè)函數(shù)只負(fù)責(zé)發(fā)送短信,關(guān)于短信發(fā)送成功與否以及閱讀短信的部分集中在一起處理。判斷手機(jī)短信發(fā)送成功與否主要由AT CMGS命令執(zhí)行以后的返回碼來(lái)決定(可參見(jiàn)前文的AT指令介紹部分)。

  為了防止手機(jī)因過(guò)于繁忙而出錯(cuò),這里采取了一定的方法讓手機(jī)有充分的時(shí)間處理發(fā)送和接收及刪除等操作。Sleep()函數(shù)正是為此而設(shè)計(jì)的,在發(fā)送及刪除操作后都會(huì)讓程序暫停一秒,這樣就不至于使得手機(jī)過(guò)于繁忙。


  Unicode碼解碼函數(shù)  

  相比于手機(jī)短信的發(fā)送而言,手機(jī)短信的接收主要的工作正好與之相反。手機(jī)短信的發(fā)送需要將待發(fā)送的短信內(nèi)容轉(zhuǎn)換為Unicode碼,而短信的接收則需要將接收到的Unicode碼轉(zhuǎn)換成中文字符。下面的函數(shù)將實(shí)現(xiàn)解碼功能。同手機(jī)短信發(fā)送的編碼函數(shù)一樣,這里也應(yīng)用了一個(gè)VB內(nèi)置的函數(shù)AscW()函數(shù)來(lái)將Unicode碼轉(zhuǎn)換為中文:

  PublicFunctionascg(smsgAsString)AsString
  Dimsi,sbAsInteger
  DimstmpAsInteger
  DimstempAsString
  sb=Len(smsg)
  ascg=""
  Forsi=1Tosb
  stmp=AscW(Mid(smsg,si,1))
  IfAbs(stmp)<127Then
  stemp="00"&Hex(stmp)
  Else
  stemp=Hex(stmp)
  EndIf
  ascg=ascg&stemp
  Nextsi
  ascg=Trim(ascg)
  EndFunction 

  2手機(jī)短信接收函數(shù) 

  相對(duì)于短信的發(fā)送函數(shù)而言,短信的接收相當(dāng)簡(jiǎn)單,只需要以下的三行代碼就完成了。但是它使用的技術(shù)卻決不比短信的發(fā)送少,這里主要用到了Mscomm控件的Output屬性和AT CMGR指令。 

  PublicSubreadsms(rnumAsString)
  mobcomm.Output="AT CMGF=1" vbCr
  mobcomm.Output="AT CMGR="&rnum vbCr
  EndSub

->


發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 一级外国毛片 | 媚药按摩痉挛w中文字幕 | 成人男女免费视频 | 免费a视频在线观看 | 亚洲第一综合色 | 国产一区二区三区视频在线观看 | 日韩黄站| 亚洲成人福利电影 | 精品国产乱码久久久久久丨区2区 | 一级黄色淫片 | 久久影院在线观看 | 激情小说激情图片激情电影 | 亚洲午夜1000理论片aa | 精品成人在线观看 | 性毛片视频 | 欧洲狠狠鲁 | 黄色视品 | 在线播放黄色网址 | www.99av| 一二区成人影院电影网 | 久久999精品久久久 国产噜噜噜噜久久久久久久久 | 黄色免费高清网站 | 99在线在线视频免费视频观看 | 色播一区 | 色屁屁xxxxⅹ在线视频 | 污黄视频在线播放 | 国产成年人在线观看 | av在线播放电影 | 欧美人人干 | 精品一区二区电影 | 福利免费在线 | 久久精片 | 国产1区在线 | 一级国产电影 | 久久亚洲春色中文字幕久久 | 亚洲第一页中文字幕 | 免费一级欧美在线观看视频 | 亚洲成人午夜精品 | a黄色网| 日日操夜夜透 | 玖草|