?? form1.frm
字號:
Else
strTmp = MSComm1.Input
txtReceived.Text = txtReceived.Text & strTmp
blTmp = GetDataFromCommPort(strTmp, strATData, strGetInfo)
n_CaptionCount = 0
Me.Caption = strGetInfo
SetTrayTip Me.Caption
If g_blIsNewCallIn Then
g_blIsNewCallIn = False
blNeedPlayMusic = True
iWhichMusic = 1
strTmp = vbCrLf & "來電時間:" & Format(Now, "YYYY年MM月DD日 HH:MM:SS") & vbCrLf
txtReceived.Text = txtReceived.Text & strTmp
End If
If g_blIsNewSMSIn Then
g_blIsNewSMSIn = False
blNeedPlayMusic = True
iWhichMusic = 2
End If
If blNeedPlayMusic Then
blNeedPlayMusic = False
iMusicPlayTimes = 1
'----- 判斷當前窗口是否是活動窗口 -----
If Me.hWnd <> GetForegroundWindow() Then Me.SetFocus
If iWhichMusic = 2 Then
MMCNewSMS.FileName = App.Path & "\" & cmbSMSMelody.Text & ".wav" ' 水鄉.wav"
If Me.WindowState = vbMinimized Then tmrICONSms.Enabled = True
ElseIf iWhichMusic = 1 Then
MMCNewSMS.FileName = App.Path & "\" & cmbCallMelody.Text & ".wav" ' ringin.wav"
tmrICONCall.Enabled = True
End If
If MMCNewSMS.Mode = mciModeNotOpen Then MMCNewSMS.Command = "Open"
If g_nCountPlaySnd = 0 Then
MMCNewSMS.Command = "Play"
Else
If MMCNewSMS.Mode = mciModePlay Then
g_nCountPlaySnd = iMusicPlayTimes
Else
g_nCountPlaySnd = g_nCountPlaySnd + 1
If g_nCountPlaySnd > iMusicPlayTimes Then g_nCountPlaySnd = iMusicPlayTimes
MMCNewSMS.Command = "Close"
MMCNewSMS.Command = "Open"
MMCNewSMS.Command = "Play"
End If
End If
End If
If g_blIsEndCall Then
g_blIsEndCall = False
tmrICONCall.Enabled = False
MMCNewSMS.Command = "Close"
End If
End If
'''''''''''''''''''''''''''''''''''''''
Case comEventBreak
n_CaptionCount = 0
Me.Caption = "Modem發出中斷信號,希望計算機能等候,請稍候."
SetTrayTip Me.Caption
' MSComm1.DTREnable = Not MSComm1.DTREnable
' DoEvents
' MSComm1.DTREnable = Not MSComm1.DTREnable
' MSComm1.Break = True
' DoEvents
' MSComm1.Break = False
MSComm1.PortOpen = False
MSComm1.PortOpen = True
Case comEvCTS
n_CaptionCount = 0
If MSComm1.CTSHolding = True Then 'Modem表示計算機可以發送數據
Me.Caption = "Modem能夠接收計算機數據"
SetTrayTip Me.Caption
Else 'Modem無法響應計算機數據,可能緩沖區不夠
Me.Caption = "Modem請求計算機暫時不要發送數據"
SetTrayTip Me.Caption
MSComm1.DTREnable = Not MSComm1.DTREnable
DoEvents
MSComm1.DTREnable = Not MSComm1.DTREnable
End If
Case comEvDSR
n_CaptionCount = 0
If MSComm1.DSRHolding = True Then '當Modem收到計算機已經就緒,Modem表示自己也就緒
Me.Caption = "Modem可以給計算機發送數據"
SetTrayTip Me.Caption
Else '在計算機發出DTR信號后,Modem可能還沒有就緒
Me.Caption = "Modem還沒有初始化完畢"
SetTrayTip Me.Caption
End If
Case comEventFrame
MSComm1.PortOpen = False
MSComm1.PortOpen = True
Case comEvRing
n_CaptionCount = 0
Me.Caption = "檢測到振鈴變化"
SetTrayTip Me.Caption
Case comEvCD
n_CaptionCount = 0
Me.Caption = "檢測到載波變化"
SetTrayTip Me.Caption
Case Else
MsgBox MSComm1.CommEvent
' MSComm1.RTSEnable = Not MSComm1.RTSEnable
' DoEvents
' MSComm1.RTSEnable = Not MSComm1.RTSEnable
'MSComm1.PortOpen = False
'MSComm1.PortOpen = True
End Select
End Sub
'功能: 生成PDU串
'輸入: 短信息內容、目標手機號碼、[可選的短信服務中心號碼]
'輸出: 生成的PDU串
'返回: 整個字串的長度
'
Private Function GetPDU(ByVal SMSText As String, _
ByVal DestNo As String, _
ByRef PDUString As String, _
Optional ByVal ServiceNo As String) As Long
On Error GoTo ErrorPDU
Dim i As Integer
Dim iAsc As Integer
Dim iLen As Integer
Dim strTmp As String
Dim strTmp2 As String
Dim strDest As String
Dim strChar As String
Dim blIsEmptyService As Boolean
For i = 1 To Len(DestNo)
strChar = Mid(DestNo, i, 1)
iAsc = Asc(strChar)
If iAsc > 57 Or iAsc < 48 Then Exit Function
Next i
If Len(DestNo) = 14 Then
If Left(DestNo, 3) = "+86" Then
DestNo = Right(DestNo, 11)
Else
Exit Function
End If
End If
If Len(DestNo) <> 11 Or SMSText = "" Then Exit Function
Dim objDll As New myVBDll
DestNo = DestNo & "F"
If ServiceNo = "" Then
strTmp = "0001000D9168"
blIsEmptyService = True
Else
blIsEmptyService = False
strTmp = "089168"
If Len(ServiceNo) = 14 Then
If Left(ServiceNo, 3) = "+86" Then
ServiceNo = Right(ServiceNo, 11)
Else
Exit Function
End If
End If
For i = 1 To Len(ServiceNo)
strChar = Mid(ServiceNo, i, 1)
iAsc = Asc(strChar)
If iAsc > 57 Or iAsc < 48 Then Exit Function
Next i
ServiceNo = ServiceNo & "F"
strDest = ""
For i = 1 To 12 Step 2
strTmp2 = Mid(ServiceNo, i, 2)
strDest = strDest & Right(strTmp2, 1) & Left(strTmp2, 1)
Next i
strTmp = strTmp & strDest & "11000D9168"
End If
strDest = ""
For i = 1 To 12 Step 2
strTmp2 = Mid(DestNo, i, 2)
strDest = strDest & Right(strTmp2, 1) & Left(strTmp2, 1)
Next i
strTmp = strTmp & strDest
strTmp = strTmp & "000800"
SMSText = objDll.GB2Unicode(SMSText)
iLen = Len(SMSText) \ 2
strChar = Hex(iLen)
If Len(strChar) < 2 Then strChar = "0" & strChar
strTmp = strTmp & strChar & SMSText
Set objDll = Nothing
PDUString = strTmp
If blIsEmptyService Then
GetPDU = Len(strTmp) / 2 - 1
Else
GetPDU = Len(strTmp) / 2 - 9
End If
Exit Function
ErrorPDU:
Set objDll = Nothing
GetPDU = 0
PDUString = ""
MsgBox "Error:" & Err & "." & vbCrLf & Err.Description
End Function
Private Sub Timer1_Timer()
Timer1.Enabled = False
Call ContinueSend
End Sub
Private Sub tmrClock_Timer()
Dim dtNow As Date
Dim dtSet As Date
If chkClock.Value = vbChecked Then
dtNow = Format(Now, "HH:MM")
dtSet = Format(txtClock.Text, "HH:MM")
If dtNow = dtSet Then
MMCNewSMS.FileName = App.Path & "\" & cmbCallMelody.Text & ".wav"
If MMCNewSMS.Mode = mciModeNotOpen Then MMCNewSMS.Command = "Open"
If g_nCountPlaySnd = 0 Then
MMCNewSMS.Command = "Play"
Else
If MMCNewSMS.Mode = mciModePlay Then
g_nCountPlaySnd = 5
Else
g_nCountPlaySnd = g_nCountPlaySnd + 1
If g_nCountPlaySnd > 5 Then g_nCountPlaySnd = 5
MMCNewSMS.Command = "Close"
MMCNewSMS.Command = "Open"
MMCNewSMS.Command = "Play"
End If
End If
End If
Else
If MMCNewSMS.Mode = mciModePlay Then
MMCNewSMS.Command = "Close"
End If
End If
n_CaptionCount = n_CaptionCount + 1
If n_CaptionCount > 5 Then
n_CaptionCount = 0
Me.Caption = "PDUSMS"
SetTrayTip Me.Caption
End If
End Sub
Private Sub tmrICONCall_Timer()
Static blStaTmp As Boolean
If blStaTmp Then
If Me.WindowState = vbMinimized Then SetTrayIcon LoadPicture(App.Path & "\Cellsc.ico")
blStaTmp = False
Else
If Me.WindowState = vbMinimized Then SetTrayIcon LoadPicture(App.Path & "\Cellscr.ico")
blStaTmp = True
End If
End Sub
Private Sub tmrICONSms_Timer()
Static blStaTmp As Boolean
If blStaTmp Then
If Me.WindowState = vbMinimized Then SetTrayIcon LoadPicture(App.Path & "\Cellss.ico")
blStaTmp = False
Else
If Me.WindowState = vbMinimized Then SetTrayIcon LoadPicture(App.Path & "\Cellssr.ico")
blStaTmp = True
End If
End Sub
Private Sub tmrTask_Timer()
tmrTask.Enabled = ScanTaskA
End Sub
Private Sub txtDestNO_GotFocus()
txtDestNO.SelStart = 0
txtDestNO.SelLength = Len(txtDestNO.Text)
End Sub
Private Sub txtDestNO_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
KeyAscii = 0
Call cmdGenerate_Click
End If
End Sub
Private Sub txtReceived_Change()
txtReceived.SelStart = Len(txtReceived.Text)
End Sub
Private Sub txtSMS_Change()
lblLeftBytes.Caption = "剩余字數:" & 70 - Len(txtSMS)
End Sub
Private Sub txtSMS_GotFocus()
txtSMS.SelStart = 0
txtSMS.SelLength = Len(txtSMS.Text)
End Sub
Private Sub txtSMS_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
KeyAscii = 0
Call cmdGenerate_Click
End If
If Len(txtSMS) > 160 Then KeyAscii = 0
End Sub
'Private Sub txtUnicode_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
'
' If Button = vbRightButton Then
' PopupMenu mnuRichTxRtClick
' End If
'End Sub
Private Function ScanTaskA() As Boolean
Dim nTmp As Long
On Error Resume Next
ContinueScan:
'======= 取出命令標志數組 =======
nTmp = ary_nCommandFlag(i_ScanPtr)
'======= 察看標志是否等于1 =======
If (n_TaskWord And nTmp) <> 0 Then
'------- 如果有任務存在,則準備執行之 -------
' tmrTimedout.Enabled = False
'------- 任務執行的條件是串口打開,而且沒有正在進行的接收任務 -------
If MSComm1.PortOpen = True Then 'And Not bl_IsReceiving Then
'------- 將任務命令下發 -------
MSComm1.Output = ary_strTask(i_ScanPtr)
' If i_ScanPtr = 15 Then MSComm2.Output = "R1" & vbCrLf
Else
'------- 如果執行的條件不滿足,則保留權利,等待下次會話 -------
ScanTaskA = True
Exit Function
End If
'----------------------------------------------
' 如果程序能夠執行到此處,說明該任務已經完成
'那么將該任務的標志刪除
'----------------------------------------------
n_TaskWord = (n_TaskWord And (Not nTmp))
'------------------------------------------------------------------
' 因為一個會話只能執行一個任務,因此掃描指針回零,退出當前會話,
'等待下次會話,重新掃描
'------------------------------------------------------------------
i_ScanPtr = 0
ScanTaskA = True
Exit Function
End If
'======= 沒有捕獲任務,將掃描指針前移一個位置 =======
i_ScanPtr = i_ScanPtr + 1
'------- 如果掃描了整個隊列也沒有發現任務 -------
If i_ScanPtr >= 16 Then
'------- 結束掃描,等待外部觸發 -------
i_ScanPtr = 0
' tmrTimedout.Enabled = True
ScanTaskA = False
Else
'------- 否則的話,繼續掃描 -------
GoTo ContinueScan
End If
End Function
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -