📄 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 SubPrivate Sub Init_Row_Col_Start_Points()' Initialize column start points for all channelsDim 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_counterEnd SubPrivate 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 SubPrivate Sub Do_Read()Dim read_value_I2 As IntegerDim 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 SubPrivate 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 IfEnd SubPrivate 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 + -