⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dtmf.vb

📁 一個完整的VB.NET tapi3.0 程序
💻 VB
📖 第 1 页 / 共 4 页
字号:
    '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 + -