📄 gpdfrm.frm
字号:
' Set the number of Rows and Columns
' Find the biggest max message of all the channels
For channel_counter = 1 To lst_ChannelList.ListItems.Count
nbr_rows = lst_ChannelList.ListItems.Item(channel_counter).SubItems(MAXMESSAGES_ITEM)
If nbr_rows > total_rows Then
total_rows = nbr_rows
End If
Next channel_counter
GPDGridFrm.grd_GridSheet.Rows = total_rows + 1
' Find the total amount of columns needed for all the channels
For channel_counter = 1 To lst_ChannelList.ListItems.Count
' If the current channel is not the last channel then
' add max members to total columns, plus an additional
' column. Otherwise, just add max members. This will
' make sure that we have just enough columns.
total_columns = total_columns + _
lst_ChannelList.ListItems.Item(channel_counter).SubItems(MAXMEMBERS_ITEM)
If channel_counter < lst_ChannelList.ListItems.Count Then
total_columns = total_columns + 1
End If
Next channel_counter
GPDGridFrm.grd_GridSheet.Cols = total_columns + 1
' Clear Grid
GPDGridFrm.grd_GridSheet.Clear
' Label rows
GPDGridFrm.grd_GridSheet.Col = 0
For rowinc = 1 To total_rows
GPDGridFrm.grd_GridSheet.Row = rowinc
GPDGridFrm.grd_GridSheet = rowinc
Next rowinc
' Make an array to hold column locations per channel object
ReDim Column_Point(1 To lst_ChannelList.ListItems.Count) As Column_Break_Points
' Label columns & set column locations per channel
GPDGridFrm.grd_GridSheet.Row = 0
For channel_counter = 1 To lst_ChannelList.ListItems.Count
If channel_counter = 1 Then
Column_Point(1).Start_Point = 1
Column_Point(1).End_Point = (lst_ChannelList.ListItems.Item(1).SubItems(MAXMEMBERS_ITEM))
Else ' Leave blank column between channels
Column_Point(channel_counter).Start_Point = _
Column_Point(channel_counter - 1).End_Point + 2
Column_Point(channel_counter).End_Point = _
Column_Point(channel_counter).Start_Point + _
lst_ChannelList.ListItems.Item(channel_counter).SubItems(MAXMEMBERS_ITEM) - 1
End If
' Label column with channel name and member number
GPDGridFrm.grd_GridSheet.Col = _
Column_Point(channel_counter).Start_Point
GPDGridFrm.grd_GridSheet = _
lst_ChannelList.ListItems.Item(channel_counter)
For colinc = 2 To lst_ChannelList.ListItems.Item(channel_counter).SubItems(MAXMEMBERS_ITEM)
GPDGridFrm.grd_GridSheet.Col = _
colinc + Column_Point(channel_counter).Start_Point - 1
GPDGridFrm.grd_GridSheet = colinc
Next colinc
Next channel_counter
' Set width of every column
For colinc = 1 To total_columns
GPDGridFrm.grd_GridSheet.ColWidth(colinc) = 1000
Next colinc
End Sub
Private Sub Init_Row_Col_Start_Points()
' Initialize column start points for all channels
Dim RC_channel_counter As Integer
For RC_channel_counter = 1 To lst_ChannelList.ListItems.Count
' 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
Private 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 <= _
lst_ChannelList.ListItems.Item(channel_number).SubItems(MAXMESSAGES_ITEM)) Then
' Set focus on a cell
GPDGridFrm.grd_GridSheet.Row = _
MethodValues(channel_number).message_counter
GPDGridFrm.grd_GridSheet.Col = _
MethodValues(channel_number).member_counter
' Fill cell with a value
GPDGridFrm.grd_GridSheet = member_value
' Increment member number counter
MethodValues(channel_number).member_counter = _
MethodValues(channel_number).member_counter + 1
End If
End Sub
Private 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 (lst_ChannelList.ListItems.Item(channel_number).SubItems(DATATYPE_ITEM) = TYPE_32BIT_INTEGER) 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
Private 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 >= _
lst_ChannelList.ListItems.Item(channel_number).SubItems(MAXMESSAGES_ITEM) * _
lst_ChannelList.ListItems.Item(channel_number).SubItems(MAXMEMBERS_ITEM) 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 (lst_ChannelList.ListItems.Item(channel_number).SubItems(DATATYPE_ITEM) = TYPE_32BIT_INTEGER) 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 negative & 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 (lst_ChannelList.ListItems.Item(channel_number).SubItems(DATATYPE_ITEM) = TYPE_32BIT_INTEGER) 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
Private Sub cmd_Toggle()
Dim instantiation_incr As Integer
If on_off_toggle = False Then
on_off_toggle = True
cmd_ToolBar.Buttons.Item(TOGGLE_BUTTON).Caption = STOP_CAPTION
cmd_ToolBar.Buttons.Item(TOGGLE_BUTTON).Image = HALT_IMAGE
sts_GPDStatus.Panels.Item(GPD_STATE_PANEL).Text = RUNNING_MODE_CAPTION
'Initialize grid
Init_Grid
' Disable ALL controls
cmd_ToolBar.Buttons.Item(ADDCHANNEL_BUTTON).Enabled = False
cmd_ToolBar.Buttons.Item(MODIFYCHANNEL_BUTTON).Enabled = False
cmd_ToolBar.Buttons.Item(DELETECHANNEL_BUTTON).Enabled = False
cmd_ToolBar.Buttons.Item(DELETEALLCHANNELS_BUTTON).Enabled = False
' Allocate array for OLE objects
ReDim rtdx(1 To lst_ChannelList.ListItems.Count) As Object
ReDim MethodValues(1 To lst_ChannelList.ListItems.Count) As RTDX_Method_Attributes
For instantiation_incr = 1 To lst_ChannelList.ListItems.Count
' Do the object instantiation
'########## RTDX(TM) ##########'
#If DIRECT_INTERFACE_CONNECTION Then
Set Engine_Write = CreateObject("CodeComposer.Application").DspBoards _
.GetDspTaskByFullName(BoardProc_frm.CurrentSelectedBoard + "\" + BoardProc_frm _
.CurrentSelectedProcessor).rtdx.CreateRtdxChannel
Set rtdx(instantiation_incr) = CreateObject("CodeComposer.Application").DspBoards _
.GetDspTaskByFullName(lst_ChannelList.ListItems.Item(instantiation_incr).SubItems(BOARD_ITEM) _
+ "\" + lst_ChannelList.ListItems.Item(instantiation_incr).SubItems(PROCESSOR_ITEM)) _
.rtdx.CreateRtdxChannel
DspTasks.Item(0).rtdx.CreateRtdxChannel
#Else
Set rtdx(instantiation_incr) = CreateObject("RTDX")
MethodValues(instantiation_incr).stat = _
rtdx(instantiation_incr).SetProcessor(lst_ChannelList.ListItems.Item(instantiation_incr).SubItems(BOARD_ITEM), _
lst_ChannelList.ListItems.Item(instantiation_incr).SubItems(PROCESSOR_ITEM))
#End If
'########## RTDX(TM) ##########'
' Open a channel
'########## RTDX(TM) ##########'
MethodValues(instantiation_incr).stat = _
rtdx(instantiation_incr).Open(lst_ChannelList.ListItems.Item(instantiation_incr), _
lst_ChannelList.ListItems.Item(instantiation_incr).SubItems(CHANNELTYPE_ITEM))
'########## RTDX(TM) ##########'
If MethodValues(instantiation_incr).stat <> SUCCESS Then
MethodValues(instantiation_incr).CHANNEL_OPEN = False
MsgBox (lst_ChannelList.ListItems.Item(instantiation_incr) & _
" is an unknown channel name")
on_off_toggle = True
cmd_Toggle
Exit Sub
Else
MethodValues(instantiation_incr).CHANNEL_OPEN = True
End If
Next instantiation_incr
' Initialize row & column start points for all channels
Init_Row_Col_Start_Points
'Show grid
GPDGridFrm.Show
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -