?? dtmf.vb
字號:
'Before returning, it clears the error.
'
Private Function PrintT3Result(ByRef strT3Action As String) As Integer
PrintT3Result = NO_ERROR
'log the tapi3 function name that produced this result
'and, if error, print also error number + description
PrintT3Result = Err.Number
Dim strError As String
If Err.Number = NO_ERROR Then
strError = "Succes: "
strError = strError & strT3Action
'success has low logging level
Debug.Print(strError)
Else
strError = "Error: "
strError = strError & strT3Action & " Err.Number = 0x" & Hex(Err.Number)
strError = strError & " Err.Descripton = " & Err.Description
'error has high logging level
Debug.Print(strError)
txtStatus.Text = txtStatus.Text & Chr(13) & Chr(10)
txtStatus.Text = txtStatus.Text & strError
txtStatus.SelectionStart = Len(txtStatus.Text)
txtStatus.SelectionLength = 0
End If
Err.Clear()
End Function
Private Sub mobjTapi_TE_CALLMEDIA(ByVal sender As Object, ByVal e As JulMar.Tapi3.TapiCallMediaEventArgs) Handles mobjTapi.TE_CALLMEDIA
On Error Resume Next 'this will catch errors
Dim nResult As Integer
Dim lEvent As JulMar.Tapi3.CALL_MEDIA_EVENT
Dim lCause As JulMar.Tapi3.CALL_MEDIA_EVENT_CAUSE
Dim lError As Integer
Dim strStreamName, strTermName As String
Dim lStreamMediaType, lTermMediaType As Integer
Dim lStreamDirection, lTermDirection As JulMar.Tapi3.TERMINAL_DIRECTION
Dim objCurrentCallInfo As JulMar.Tapi3.TCall
Dim objReceivedCallInfo As JulMar.Tapi3.TCall
Dim strMsg, strCallInfoMsg As String
nResult = PrintT3Result("mobjTapiWithEvents_Event: Set objITCallMediaEvent = pEvent")
If nResult <> NO_ERROR Then Exit Sub
lEvent = e.Event
nResult = PrintT3Result("mobjTapiWithEvents_Event: objITCallMediaEvent.Event")
If nResult <> NO_ERROR Then Exit Sub
lCause = e.Cause
nResult = PrintT3Result("mobjTapiWithEvents_Event: objITCallMediaEvent.Cause")
If nResult <> NO_ERROR Then Exit Sub
If Not e.Error Is Nothing Then
lError = e.Error.ErrorCode
nResult = PrintT3Result("mobjTapiWithEvents_Event: objITCallMediaEvent.Error")
If nResult <> NO_ERROR Then Exit Sub
End If
If Not (e.Stream Is Nothing) Then
strStreamName = e.Stream.Name
nResult = PrintT3Result("mobjTapiWithEvents_Event: objITCallMediaEvent.Stream.Name")
If nResult <> NO_ERROR Then Exit Sub
lStreamMediaType = e.Stream.MediaType
nResult = PrintT3Result("mobjTapiWithEvents_Event: objITCallMediaEvent.Stream.MediaType")
If nResult <> NO_ERROR Then Exit Sub
lStreamDirection = e.Stream.Direction
nResult = PrintT3Result("mobjTapiWithEvents_Event: objITCallMediaEvent.Stream.Direction")
If nResult <> NO_ERROR Then Exit Sub
Else
strStreamName = "no stream"
End If
If Not (e.Terminal Is Nothing) Then
strTermName = e.Terminal.Name
nResult = PrintT3Result("mobjTapiWithEvents_Event: objITCallMediaEvent.Terminal.Name")
If nResult <> NO_ERROR Then Exit Sub
lTermMediaType = e.Terminal.MediaType
nResult = PrintT3Result("mobjTapiWithEvents_Event: objITCallMediaEvent.Terminal.MediaType")
If nResult <> NO_ERROR Then Exit Sub
lTermDirection = e.Terminal.Direction
nResult = PrintT3Result("mobjTapiWithEvents_Event: objITCallMediaEvent.Terminal.Direction")
If nResult <> NO_ERROR Then Exit Sub
Else
strTermName = "no terminal"
End If
'
objReceivedCallInfo = e.Call
nResult = PrintT3Result("mobjTapiWithEvents_Event: objITCallMediaEvent.Call")
If nResult <> NO_ERROR Then Exit Sub
'
'check if the received CallInfo matches the call
'for which our app currently keeps a reference of.
'
objCurrentCallInfo = mobjCall
nResult = PrintT3Result("mobjTapiWithEvents_Event: Set objCurrentCallInfo = mobjCall")
If nResult <> NO_ERROR Then Exit Sub
If objCurrentCallInfo Is objReceivedCallInfo Then
strCallInfoMsg = "matches current call"
Else
strCallInfoMsg = "doesn't match current call! (error)"
MsgBox("Call object received in TE_CALLMEDIA doesn't match current call!")
End If
strMsg = "Event type = TE_CALLMEDIA: "
strMsg = strMsg & Chr(13) & Chr(10)
strMsg = strMsg & " " & "lEvent = 0x" & Hex(lEvent) & " " & TranslateCallMediaEvent(lEvent) & ", " & "lCause = 0x" & Hex(lCause) & " " & TranslateCallMediaEventCause(lCause) & ", " & "lError = 0x" & Hex(lError) & " "
strMsg = strMsg & Chr(13) & Chr(10)
strMsg = strMsg & " " & "stream = " & "'" & strStreamName & "'" & ", " & "mediatype = 0x" & Hex(lStreamMediaType) & ", " & "direction = 0x" & Hex(lStreamDirection) & " "
strMsg = strMsg & Chr(13) & Chr(10)
strMsg = strMsg & " " & "terminal = " & "'" & strTermName & "'" & ", " & "mediatype = 0x" & Hex(lTermMediaType) & ", " & "direction = 0x" & Hex(lTermDirection) & " "
strMsg = strMsg & Chr(13) & Chr(10)
strMsg = strMsg & " objCallInfo = " & strCallInfoMsg & " "
strMsg = strMsg & Chr(13) & Chr(10)
txtStatus.Text = txtStatus.Text & Chr(13) & Chr(10)
txtStatus.Text = txtStatus.Text & strMsg
txtStatus.SelectionStart = Len(txtStatus.Text)
txtStatus.SelectionLength = 0
End Sub
Private Sub mobjTapi_TE_CALLSTATE(ByVal sender As Object, ByVal e As JulMar.Tapi3.TapiCallStateEventArgs) Handles mobjTapi.TE_CALLSTATE
On Error Resume Next 'this will catch errors
Dim nResult As Integer
Dim CallState As JulMar.Tapi3.CALL_STATE
'
'process CallStateEvent-s
'
nResult = PrintT3Result("mobjTapiWithEvents_Event: Set objCallStateEvent = pEvent")
If nResult <> NO_ERROR Then
Call MsgBox("Fatal error: can't query for call state event, exit program", MsgBoxStyle.Critical)
Stop 'fatal error
End If
CallState = e.State
nResult = PrintT3Result("mobjTapiWithEvents_Event: objCallStateEvent.State")
If nResult <> NO_ERROR Then
Call MsgBox("Fatal error: can't retrieve new call state, exit program", MsgBoxStyle.Critical)
Stop 'fatal error
End If
PrintCallState((CallState))
If CallState = JulMar.Tapi3.CALL_STATE.CS_DISCONNECTED Then
'
'don't release call here, let the user do this by pressing "Release"
'
' 'release call, you don't need it anymore
' Set mobjCall = Nothing
'
' 'update UI
' pbDial.Enabled = True
' pbDisconnect.Enabled = False
' pbRelease.Enabled = False
'
' pbGenerate.Enabled = False
' pbStartDetect.Enabled = False
' pbStopDetect.Enabled = False
'
'but since call was disconnected, we still need to update the UI
'
'update UI
pbDisconnect.Enabled = False
pbRelease.Enabled = True
End If
End Sub
Private Sub mobjTapi_TE_DIGITEVENT(ByVal sender As Object, ByVal e As JulMar.Tapi3.TapiDigitDetectionEventArgs) Handles mobjTapi.TE_DIGITEVENT
On Error Resume Next 'this will catch errors
Dim nResult As Integer
Dim bDigit As Byte
Dim lDigitMode As Integer
Dim lTickCount As Integer
Dim objCurrentCallInfo As JulMar.Tapi3.TCall
Dim objReceivedCallInfo As JulMar.Tapi3.TCall
Dim strMsg, strCallInfoMsg As String
nResult = PrintT3Result("mobjTapiWithEvents_Event: Set objITDigitDetectionEvent = pEvent")
If nResult <> NO_ERROR Then Exit Sub
bDigit = e.Digit
nResult = PrintT3Result("mobjTapiWithEvents_Event: objITDigitDetectionEvent.Digit")
If nResult <> NO_ERROR Then Exit Sub
lDigitMode = e.DigitMode
nResult = PrintT3Result("mobjTapiWithEvents_Event: objITDigitDetectionEvent.DigitMode")
If nResult <> NO_ERROR Then Exit Sub
lTickCount = e.TickCount
nResult = PrintT3Result("mobjTapiWithEvents_Event: objITDigitDetectionEvent.TickCount")
If nResult <> NO_ERROR Then Exit Sub
objReceivedCallInfo = e.Call
nResult = PrintT3Result("mobjTapiWithEvents_Event: objITDigitDetectionEvent.Call")
If nResult <> NO_ERROR Then Exit Sub
'
'check if the received CallInfo matches the call
'for which our app currently keeps a reference of.
'
objCurrentCallInfo = mobjCall
nResult = PrintT3Result("mobjTapiWithEvents_Event: Set objCurrentCallInfo = mobjCall")
If nResult <> NO_ERROR Then Exit Sub
If objCurrentCallInfo Is objReceivedCallInfo Then
strCallInfoMsg = "matches current call"
Else
strCallInfoMsg = "doesn't match current call! (error)"
MsgBox("Call object received in TE_DIGITEVENT doesn't match current call!")
End If
strMsg = "Event type = TE_DIGITEVENT: "
strMsg = strMsg & Chr(13) & Chr(10)
strMsg = strMsg & " bDigit = 0x" & Hex(bDigit) & " "
strMsg = strMsg & Chr(13) & Chr(10)
strMsg = strMsg & " lDigitMode = " & lDigitMode & " " & TranslateDigitMode(lDigitMode) & " "
strMsg = strMsg & Chr(13) & Chr(10)
strMsg = strMsg & " lTickCount = 0x" & Hex(lTickCount) & " "
strMsg = strMsg & Chr(13) & Chr(10)
strMsg = strMsg & " objCallInfo = " & strCallInfoMsg & " "
strMsg = strMsg & Chr(13) & Chr(10)
txtStatus.Text = txtStatus.Text & Chr(13) & Chr(10)
txtStatus.Text = txtStatus.Text & strMsg
txtStatus.SelectionStart = Len(txtStatus.Text)
txtStatus.SelectionLength = 0
End Sub
Private Sub mobjTapi_TE_GENERATEEVENT(ByVal sender As Object, ByVal e As JulMar.Tapi3.TapiDigitGenerationEventArgs) Handles mobjTapi.TE_GENERATEEVENT
On Error Resume Next 'this will catch errors
Dim strMsg, strCallInfoMsg As String
Dim nResult As Integer
Dim objCurrentCallInfo As JulMar.Tapi3.TCall
Dim objReceivedCallInfo As JulMar.Tapi3.TCall
Dim lGenerationTermination, lTickCount As Integer
nResult = PrintT3Result("mobjTapiWithEvents_Event: Set objITDigitGenerationEvent = pEvent")
If nResult <> NO_ERROR Then Exit Sub
lGenerationTermination = e.GenerationTermination
nResult = PrintT3Result("mobjTapiWithEvents_Event: objITDigitGenerationEvent.GenerationTermination")
If nResult <> NO_ERROR Then Exit Sub
lTickCount = e.TickCount
nResult = PrintT3Result("mobjTapiWithEvents_Event: objITDigitGenerationEvent.TickCount")
If nResult <> NO_ERROR Then Exit Sub
objReceivedCallInfo = e.Call
nResult = PrintT3Result("mobjTapiWithEvents_Event: objITDigitGenerationEvent.Call")
If nResult <> NO_ERROR Then Exit Sub
'
'check if the received CallInfo matches the call
'for which our app currently keeps a reference of.
'
objCurrentCallInfo = mobjCall
nResult = PrintT3Result("mobjTapiWithEvents_Event: Set objCurrentCallInfo = mobjCall")
If nResult <> NO_ERROR Then Exit Sub
If objCurrentCallInfo Is objReceivedCallInfo Then
strCallInfoMsg = "matches current call"
Else
strCallInfoMsg = "doesn't match current call! (error)"
MsgBox("Call object received in TE_GENERATEEVENT doesn't match current call!")
End If
strMsg = "Event type = TE_GENERATEEVENT: "
strMsg = strMsg & Chr(13) & Chr(10)
strMsg = strMsg & " lGenerationTermination = " & lGenerationTermination & " " & TranslateGenerateTerm(lGenerationTermination) & " "
strMsg = strMsg & Chr(13) & Chr(10)
strMsg = strMsg & " lTickCount = 0x" & Hex(lTickCount) & " "
strMsg = strMsg & Chr(13) & Chr(10)
strMsg = strMsg & " objCallInfo = " & strCallInfoMsg & " "
strMsg = strMsg & Chr(13) & Chr(10)
txtStatus.Text = txtStatus.Text & Chr(13) & Chr(10)
txtStatus.Text = txtStatus.Text & strMsg
txtStatus.SelectionStart = Len(txtStatus.Text)
txtStatus.SelectionLength = 0
End Sub
End Class
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -