Public Class MainTest

    Enum ColNames
        No
        Content
        DataSource
        SendData
        PassResult
        RetryCount
        RetryInterval
        ReadInterval
        OperatingMode
        Lower
        Upper
        TestVal
        TestResult
        IsRecord
        RecordName
        Max
    End Enum

    Public theGrid As FlexCell.Grid

    Public Serial As IO.Ports.SerialPort
    Public Userkeyval_ComboBox As ComboBox
    Public Userkeyval_Rictext As RichTextBox
    Public Label2 As Label


    Public split_Curr_1 As String
    Public split_Curr_2 As String
    Public split_Curr_3 As String
    Public split_Curr_4 As String
    Public split_Curr_Peak_1 As String
    Public split_Curr_Peak_2 As String
    Public split_Curr_peak_3 As String
    Public split_Curr_peak_4 As String
    Public split_Temp As String
    Public split_HumidityAs As String




    Sub New(grd As FlexCell.Grid)
        theGrid = grd
        UpdateStepTestRecord()
        DefaultData()
    End Sub
#Region "初始化表格"
    Public Sub UpdateStepTestRecord()
        With theGrid
            .AutoRedraw = False
            '.AutoSize = True
            .Cols = ColNames.Max
            .Rows = 1
            .ExtendLastCol = True   '最后一列自动扩充
            .DisplayRowNumber = True    '首列显示数字

            For col As Integer = 0 To ColNames.Max - 1
                .Cell(0, col).Text = [Enum].GetName(GetType(ColNames), col) '设置列名
                .Column(col).CellType = FlexCell.CellTypeEnum.TextBox '设置列型

                .Column(col).Width = 140 '设置列宽

                .Column(col).Alignment = FlexCell.AlignmentEnum.CenterCenter  '设置对齐位置
            Next
            .ForeColorComment = Color.Blue


            .BackColorBkg = Color.DimGray
            .AutoRedraw = True
            .Refresh()
            .Locked = True
        End With


    End Sub



#End Region
#Region "加載表格數據"
    Public Sub DefaultData()

        Dim SendDatalist As New List(Of List(Of String））
        UartSendDataList(SendDatalist， "确认测试板连接", "uts", "*IDN?", "uts-Phobos-rev01", "3", "100", "300", "comparison", "", "", "", "", "", "")
        UartSendDataList(SendDatalist， "设置输出限流", "uts", "SET_PPS_CURR:400", "SET_PPS_CURR:400:TRUE", "3", "100", "300", "comparison", "", "", "", "", "", "")
        UartSendDataList(SendDatalist， "设置输出电压", "uts", "SET_PPS_VOLT:2000", "SET_PPS_VOLT:2000:TRUE"， "3", "100", "300", "comparison", "", "", "", "", "", "")
        UartSendDataList(SendDatalist， "打开输出电压", "uts", "SET_PPS_OUTP:ON", "SET_PPS_OUTP:ON:TRUE", "3", "100", "300", "comparison", "", "", "", "", "", "")
        UartSendDataList(SendDatalist， "清除峰值电流 - ch1", "uts", "CLR_PPS_CURR_PEAK:1", "CLR_PPS_CURR_PEAK:1:TRUE", "3", "100", "300", "comparison", "", "", "", "", "", "")
        UartSendDataList(SendDatalist， "清除峰值电流 - ch2", "uts", "CLR_PPS_CURR_PEAK:2", "CLR_PPS_CURR_PEAK:2:TRUE", "3", "100", "300", "comparison", "", "", "", "", "", "")
        UartSendDataList(SendDatalist， "清除峰值电流 - ch3", "uts", "CLR_PPS_CURR_PEAK:3", "CLR_PPS_CURR_PEAK:3:TRUE", "3", "100", "300", "comparison", "", "", "", "", "", "")
        UartSendDataList(SendDatalist， "清除峰值电流 - ch4", "uts", "CLR_PPS_CURR_PEAK:4", "CLR_PPS_CURR_PEAK:4:TRUE", "3", "100", "300", "comparison", "", "", "", "", "", "")

        UartSendDataList(SendDatalist， "读取平均电流(轮询直到勾选的属性测试结束)", "uts", "RUN", "10", "max", "100", "300", "split", "", "", "", "", "", "")

        UartSendDataList(SendDatalist， "发送关闭电源命令", "uts", "SET_PPS_OUTP:OFF"， "SET_PPS_OUTP:OFF:TRUE", "3", "100", "300", "comparison", "", "", "", "", "", "")

        Grid5AddRow(SendDatalist)

    End Sub

    Public Function UartSendDataList(ByRef SendDatalist As List(Of List(Of String））， ParamArray ptr（） As String) As List(Of String）

        Dim Datalist As New List(Of String）
        Datalist.AddRange(ptr)
        SendDatalist.Add(Datalist)

    End Function

    Public Sub Grid5AddRow(SendDatalist As List(Of List(Of String））)
        If SendDatalist.Count < 1 Then Return

        For rowindex As Integer = 0 To SendDatalist.Count - 1

            Dim Datalist As List(Of String） = SendDatalist.Item(rowindex)


            AddRowToTable(theGrid, Datalist)
        Next

    End Sub
    Public Sub AddRowToTable（tablegrid As FlexCell.Grid, Datalist As List(Of String））
        tablegrid.AddItem("")
        For colid As Integer = 1 To ColNames.Max - 1
            tablegrid.Cell(tablegrid.Rows - 1, colid).Text = Datalist.Item(colid - 1)
        Next

    End Sub

#End Region


#Region "读数据并解析"

    Public Function ParsingRowRead(rowid As Integer, readStr As String) As Boolean
        If rowid = 0 OrElse Not rowid < theGrid.Rows Then Return False
        SettheGridt(theGrid, rowid, ColNames.TestVal, readStr)
        If theGrid.Cell(rowid, ColNames.OperatingMode).Text.ToLower.Contains("comparison") Then
            If theGrid.Cell(rowid, ColNames.PassResult).Text.Trim.ToLower.Equals(readStr.ToLower) Then
                Return True
            Else
                Return False
            End If
        ElseIf theGrid.Cell(rowid, ColNames.OperatingMode).Text.ToLower.Contains("split") Then
            split_Curr_1 = ""
            split_Curr_2 = ""
            split_Curr_3 = ""
            split_Curr_4 = ""
            split_Curr_Peak_1 = ""
            split_Curr_Peak_2 = ""
            split_Curr_peak_3 = ""
            split_Curr_peak_4 = ""
            split_Temp = ""
            split_HumidityAs = ""
            Dim splitbuff() As String = readStr.Split(CType(",", Char))
            If splitbuff.Length = CType(theGrid.Cell(rowid, ColNames.PassResult).Text, Integer) Then
                split_Curr_1 = splitbuff（0）
                split_Curr_2 = splitbuff（1）
                split_Curr_3 = splitbuff（2）
                split_Curr_4 = splitbuff（3）
                split_Curr_Peak_1 = splitbuff（4）
                split_Curr_Peak_2 = splitbuff（5）
                split_Curr_peak_3 = splitbuff（6）
                split_Curr_peak_4 = splitbuff（7）
                split_Temp = splitbuff（8）
                split_HumidityAs = splitbuff（9）
                Return True
            End If

            Return False
        Else
            Return False
        End If

    End Function
    Delegate Sub IPSetUILabeltext(tablegrid As FlexCell.Grid, trowel As Integer, tcol As Integer, txt As String)
    Public Sub SettheGridt(tablegrid As FlexCell.Grid, trowel As Integer, tcol As Integer, txt As String)
        If tablegrid.InvokeRequired Then
            tablegrid.Invoke(New IPSetUILabeltext(AddressOf SettheGridt), New Object() {tablegrid, trowel, tcol, txt})
        Else
            tablegrid.Cell(trowel, tcol).Text = txt
        End If
    End Sub


    Public Function GetUtsData(attri As String) As String
        If attri.ToLower.Equals("tempre") Then
            Return split_Temp
        ElseIf attri.ToLower.Equals("humiture") Then
            Return split_HumidityAs
        ElseIf attri.ToLower.Equals("run") Then
            Dim result As String = split_Curr_1 & "," & split_Curr_2 &
                                     "," & split_Curr_3 & "," & split_Curr_4 


            Return result
        ElseIf attri.ToLower.Equals("current") Then
            Dim result As String = split_Curr_Peak_1 & "," & split_Curr_Peak_2 &
                                    "," & split_Curr_peak_3 & "," & split_Curr_peak_4 
            Return result
        End If
        Return ""
    End Function


#End Region









End Class
