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

📄 rtdxfrm.frm

📁 dsp6713开发板的许多例程.对入门特别有用
💻 FRM
📖 第 1 页 / 共 4 页
字号:

    For RC_channel_counter = 0 To (Val(NUM_CHANNELS.Text) - 1)
        
        ' Initialize row start point
        MethodValues(RC_channel_counter).message_counter = 1
        
        ' Initialize column start point
        MethodValues(RC_channel_counter).member_counter = _
            Column_Point(RC_channel_counter).Start_Point
        
    Next RC_channel_counter
End Sub

Public Sub Do_Read()
Dim read_value_I2 As Integer
Dim read_value_I4 As Long

    ' Read until we have reached the end of a log file
    If (MethodValues(channel_number).read_status = EEndOfLogFile) Then
        ' Close channel
        MethodValues(channel_number).stat = _
            rtdx(channel_number).Close()
        ' Mark channel as closed
        MethodValues(channel_number).CHANNEL_OPEN = False
        Exit Sub
    End If
           
    ' Test for 32bit or 16bit Read
    If RTDX_channel(channel_number).integer_size = "32-Bit" Then
        '########## RTDX(TM) ##########'
        MethodValues(channel_number).read_status = _
            rtdx(channel_number).ReadI4(read_value_I4)
        '########## RTDX(TM) ##########'
    Else
        '########## RTDX(TM) ##########'
        MethodValues(channel_number).read_status = _
            rtdx(channel_number).ReadI2(read_value_I2)
        '########## RTDX(TM) ##########'
            read_value_I4 = read_value_I2
    End If
            
    If (MethodValues(channel_number).read_status = SUCCESS) Then
        ' Call the procedure that distributes the
        ' member values to grid cells
        Process_Data read_value_I4
    End If
    
End Sub

Public Sub Do_Write()
Dim Write_Value_I2 As Integer
    
    ' Write until Write_Value_I4 is greater than or equal
    ' to (total messages(rows) * total members(columns))
    If MethodValues(channel_number).Write_Value_I4 >= _
        RTDX_channel(channel_number).messages * _
            RTDX_channel(channel_number).members Then
                ' Close channel
                MethodValues(channel_number).stat = _
                    rtdx(channel_number).Close()
                ' Mark channel as closed
                MethodValues(channel_number).CHANNEL_OPEN = False
                Exit Sub
    End If
    ' check buffer status
    '########## RTDX(TM) ##########'
    ' Test for 32bit or 16bit StatusOfWrite
    MethodValues(channel_number).write_status = _
        rtdx(channel_number).StatusOfWrite _
            (MethodValues(channel_number).buffer_status)
    '########## RTDX(TM) ##########'
    If RTDX_channel(channel_number).integer_size = "32-Bit" Then
       MethodValues(channel_number).buffer_status = _
            MethodValues(channel_number).buffer_status / 4
    Else
        '########## RTDX(TM) ##########'
       MethodValues(channel_number).buffer_status = _
            MethodValues(channel_number).buffer_status / 2
        '########## RTDX(TM) ##########'
    End If
    
    ' Write Data if buffer is empty and last write status is OK
    If (MethodValues(channel_number).buffer_status <= 0) And _
    (MethodValues(channel_number).write_status <> FAIL) Then
        MethodValues(channel_number).Write_Value_I4 = _
            MethodValues(channel_number).Write_Value_I4 + 1
        
        ' Call Ole WriteI4 Method
        If RTDX_channel(channel_number).integer_size = "32-Bit" Then
            '########## RTDX(TM) ##########'
            MethodValues(channel_number).write_status = _
                rtdx(channel_number).WriteI4 _
                    (MethodValues(channel_number).Write_Value_I4, _
                        MethodValues(channel_number).buffer_status)
            '########## RTDX(TM) ##########'
        Else
            Write_Value_I2 = MethodValues(channel_number).Write_Value_I4
            '########## RTDX(TM) ##########'
            MethodValues(channel_number).write_status = _
                rtdx(channel_number).WriteI2(Write_Value_I2, _
                    MethodValues(channel_number).buffer_status)
            '########## RTDX(TM) ##########'
        End If

        ' Display Data
        Process_Data MethodValues(channel_number).Write_Value_I4
    End If

End Sub

Public Sub Process_Data(ByVal member_value As Long)
' distribute data to grid cells
    
    ' Determine where to put message on grid sheet
    ' Test member value of message
    If (MethodValues(channel_number).member_counter > _
        Column_Point(channel_number).End_Point) Then
        ' reset column
        MethodValues(channel_number).member_counter = _
            Column_Point(channel_number).Start_Point
        ' increment the rows
        MethodValues(channel_number).message_counter = _
            MethodValues(channel_number).message_counter + 1
    End If
    
    ' If we are within are row boundaries then display the data
    If (MethodValues(channel_number).message_counter <= _
        RTDX_channel(channel_number).messages) Then
            ' Set focus on a cell
            RTDX_gridfrm.RTDX_grid.Row = _
                MethodValues(channel_number).message_counter
            RTDX_gridfrm.RTDX_grid.Col = _
                MethodValues(channel_number).member_counter
    
            ' Fill cell with a value
            RTDX_gridfrm.RTDX_grid = member_value
        
            ' Increment member number counter
            MethodValues(channel_number).member_counter = _
            MethodValues(channel_number).member_counter + 1
    End If
    
End Sub

Public Function Input_Values_Valid() As Boolean
Dim char_incr As Integer
 
    ' Test input values
    
    If (CHANNEL_NAME.Text = "") Then
        MsgBox ("Error: Channel name has not been included")
        Input_Values_Valid = False
        Exit Function
    End If
    If (IsNumeric(Left(CHANNEL_NAME.Text, 1))) Then
        MsgBox ("Error: The first character of the channel name must be non-numeric!")
        Input_Values_Valid = False
        Exit Function
    End If
    If (((Val(MAX_MESSAGES.Text)) <= 0) Or (MAX_MESSAGES.Text = "")) Then
        MsgBox ("Error: Message value must be greater than 0!")
        Input_Values_Valid = False
        Exit Function
    End If
    If (((Val(MAX_MEMBERS.Text)) <= 0) Or (MAX_MEMBERS.Text = "")) Then
        MsgBox ("Error: Member value must be greater than 0!")
        Input_Values_Valid = False
        Exit Function
    End If

    ' Visual Basic interprets special characters as numeric.  Test the
    ' channel name's integrity by comparing the ascii representation of
    ' illegal characters.
    
    For char_incr = 1 To Len(CHANNEL_NAME.Text)
        If Not (((AscW(Mid(CHANNEL_NAME.Text, char_incr, 1))) >= AscW("0")) _
                And ((AscW(Mid(CHANNEL_NAME.Text, char_incr, 1))) <= AscW("9")) _
            Or ((AscW(Mid(CHANNEL_NAME.Text, char_incr, 1))) >= AscW("A")) _
                And ((AscW(Mid(CHANNEL_NAME.Text, char_incr, 1))) <= AscW("Z")) _
            Or ((AscW(Mid(CHANNEL_NAME.Text, char_incr, 1))) >= AscW("a")) _
                And ((AscW(Mid(CHANNEL_NAME.Text, char_incr, 1))) <= AscW("z"))) Then
                    MsgBox ("Error: No special characters are permitted in channel name!")
                    Input_Values_Valid = False
                    Exit Function
        End If
    Next char_incr
    
    Input_Values_Valid = True
    
End Function

Private Sub cmd_Add_Channel_Click()
Dim organizer_index As Integer
        
    If Input_Values_Valid Then
        ' Add record to channel array
        NUM_CHANNELS.Text = Str(Val(NUM_CHANNELS.Text) + 1)
        chan_incr = Val(NUM_CHANNELS.Text) - 1
        
        'only allocate enough for channels
        ReDim Preserve RTDX_channel(Val(NUM_CHANNELS.Text)) _
            As RTDX_Channel_Attributes
        
        ' Insert new channel at the end
        RTDX_channel(chan_incr).name = CHANNEL_NAME.Text
        RTDX_channel(chan_incr).type = IO_TYPE.Text
        RTDX_channel(chan_incr).messages = MAX_MESSAGES.Text
        RTDX_channel(chan_incr).members = MAX_MEMBERS.Text
        RTDX_channel(chan_incr).integer_size = INT_TYPE.Text
    
        ' Re-Label channel
        cmd_View_Channel.Clear
        For organizer_index = 0 To (Val(NUM_CHANNELS.Text - 1))
            cmd_View_Channel.AddItem "Channel " & cmd_View_Channel.ListCount
        Next organizer_index
    
        ' Set Focus on current channel
        cmd_View_Channel.Text = "Channel " & chan_incr
        
        ' Enable controls that require an existing channel
        cmd_Delete_Channel.Enabled = True
        cmd_Reset.Enabled = True
        cmd_Modify_Channel.Enabled = True
        cmd_Toggle.Enabled = True
        mnu_Start.Enabled = True
        
    End If
    
End Sub

Private Sub cmd_Delete_Channel_Click()
Dim del_incr As Integer
Dim organizer_index As Integer
    
    ' Check to see if we have any channels
    If Val(NUM_CHANNELS.Text) <= 0 Then
        MsgBox ("There are no channels to delete!")
        cmd_Delete_Channel.Enabled = False
        cmd_Reset.Enabled = False
        cmd_Modify_Channel.Enabled = False
        cmd_Toggle.Enabled = False
        mnu_Start.Enabled = False
    Else
        If (Val(NUM_CHANNELS.Text - 1) <> 0) Then
            cmd_Delete_Channel.Enabled = True
            NUM_CHANNELS.Text = Str(Val(NUM_CHANNELS.Text) - 1)
    
            ' Remove record at position chan_incr by shifting array
            ' elements one step to the left
            For del_incr = chan_incr To (Val(NUM_CHANNELS.Text - 1))
                RTDX_channel(del_incr).name = _
                    RTDX_channel(del_incr + 1).name
                RTDX_channel(del_incr).type = _
                    RTDX_channel(del_incr + 1).type
                RTDX_channel(del_incr).messages = _
                    RTDX_channel(del_incr + 1).messages
                RTDX_channel(del_incr).members = _
                    RTDX_channel(del_incr + 1).members
                RTDX_channel(del_incr).integer_size = _
                    RTDX_channel(del_incr + 1).integer_size
            Next del_incr
            
            ' Delete last element off the array
            ReDim Preserve RTDX_channel(Val(NUM_CHANNELS.Text)) _
                As RTDX_Channel_Attributes
        
            ' Re-Label channel
            cmd_View_Channel.Clear
            For organizer_index = 0 To (Val(NUM_CHANNELS.Text - 1))
                cmd_View_Channel.AddItem "Channel " & cmd_View_Channel.ListCount
            Next organizer_index
    
            If chan_incr <> 0 Then
                chan_incr = chan_incr - 1
            End If
            
            'Show record
            CHANNEL_NAME.Text = RTDX_channel(chan_incr).name
            IO_TYPE.Text = RTDX_channel(chan_incr).type
            MAX_MESSAGES.Text = RTDX_channel(chan_incr).messages
            MAX_MEMBERS.Text = RTDX_channel(chan_incr).members
            INT_TYPE.Text = RTDX_channel(chan_incr).integer_size
                
            ' Set Focus on current next channel
            cmd_View_Channel.Text = "Channel " & chan_incr
        Else
            cmd_Reset_Click
        End If
        
    End If
End Sub

Private Sub cmd_Modify_Channel_Click()
    ' If input values are valid
    If Input_Values_Valid Then
        ' Insert new value into array
        RTDX_channel(chan_incr).name = CHANNEL_NAME.Text
        RTDX_channel(chan_incr).type = IO_TYPE.Text
        RTDX_channel(chan_incr).messages = MAX_MESSAGES.Text
        RTDX_channel(chan_incr).members = MAX_MEMBERS.Text
        RTDX_channel(chan_incr).integer_size = INT_TYPE.Text
    End If
End Sub

Private Sub cmd_Reset_Click()

    ' Disable controls that require an existing channel
    cmd_Delete_Channel.Enabled = False
    cmd_Reset.Enabled = False
    cmd_Modify_Channel.Enabled = False
    cmd_Toggle.Enabled = False
    mnu_Start.Enabled = False
    
    ' Wipe out all channels
    ReDim RTDX_channel(0) As RTDX_Channel_Attributes
    cmd_View_Channel.Clear
    NUM_CHANNELS.Text = 0
    CHANNEL_NAME.Text = ""
    IO_TYPE.Text = "R"
    MAX_MEMBERS.Text = ""
    MAX_MESSAGES.Text = ""
    INT_TYPE.Text = "32-Bit"
    chan_incr = 0
  
End Sub

Private Sub cmd_Toggle_Click()
Dim instantiation_incr As Integer
    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -