精品国产亚洲一区二区三区,男女作爱在线观看免费网站,欧美的又大又长做禁片A片,97国产精品人妻无码久久久

  • 相關(guān)軟件
    >用VB6.0編寫(xiě)手機(jī)短信發(fā)送 創(chuàng)建者:webmaster 更新時(shí)間:2005-07-02 01:43

     因?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碼?!?BR>
      Public Function chg(rmsg As String) As String
      Dim tep As String
      Dim temp As String
      Dim i As Integer
      Dim b As Integer
      tep = rmsg
      i = Len(tep)
      b = i / 4
      If i = b * 4 Then
       b = b - 1
       tep = Left(tep, b * 4)
      Else
       tep = Left(tep, b * 4)
      End If
      chg = ""
      For i = 1 To b
       temp = "&H" & Mid(tep, (i - 1) * 4 + 1, 4)
       chg = chg & ChrW(CInt(Val(temp)))
      Next i
      End Function 
      同上,為了發(fā)送以PDU模式發(fā)送短消息,必須將手機(jī)號(hào)碼和對(duì)方手機(jī)號(hào)碼也轉(zhuǎn)換為PDU格式,下面的函數(shù)就是為了實(shí)現(xiàn)這種轉(zhuǎn)換: 

      Public Function telc(num As String) As String
      Dim tl As Integer
      Dim ltem, rtem, ttem As String
      Dim ti As Integer
      ttem = ""
      tl = Len(num)
      If tl <> 11 And tl <> 13 Then
       MsgBox "wrong number." & tl
       Exit Function
      End If
      If tl = 11 Then
       tl = tl + 2
       num = "86" & num
      End If
      For ti = 1 To tl Step 2
       ltem = Mid(num, ti, 1)
       rtem = Mid(num, ti + 1, 1)
       If ti = tl Then rtem = "F"
       ttem = ttem & rtem & ltem
      Next ti
      telc = ttem
      End Function  

      手機(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ù)代碼如下:

      Const prex = "0891"
      Const midx = "11000D91"
      Const sufx = "000800"
      Public Function Sendsms(csca As String, num As String, msg As String) As _Boolean
       Dim pdu, psmsc, pnum, pmsg As String
       Dim leng As String
       Dim length As Integer
       length = Len(msg)
       length = 2 * length
       leng = Hex(length)
       If length < 16 Then leng = "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
      End Function  

      因?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)換為中文:

      Public Function ascg(smsg As String) As String
      Dim si, sb As Integer
      Dim stmp As Integer
      Dim stemp As String
      sb = Len(smsg)
      ascg = ""
      For si = 1 To sb
       stmp = AscW(Mid(smsg, si, 1))
       If Abs(stmp) < 127 Then
       stemp = "00" & Hex(stmp)
       Else
       stemp = Hex(stmp)
       End If
       ascg = ascg & stemp
      Next si
      ascg = Trim(ascg)
      End Function 

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

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

      Public Sub readsms(rnum As String)
      mobcomm.Output = "AT+CMGF=1" + vbCr
      mobcomm.Output = "AT+CMGR=" & rnum + vbCr
      End Sub 

    相關(guān)文章
    本頁(yè)查看次數(shù):