VB串口通讯程序3

112 阅读18分钟

VB串口通讯程序3

VERSION 5.00 Object = "{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0"; "comdlg32.ocx" Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCTL.OCX" Object = "{6B7E6392-850A-101B-AFC0-4210102A8DA7}#1.3#0"; "comctl32.ocx" Object = "{648A5603-2C6E-101B-82B6-000000000014}#1.1#0"; "MSCOMM32.OCX" Begin VB.Form mn_form BackColor = &H00404000& Caption = "西安亚川电力科技有限公司电动机保护器调试软件" ClientHeight = 10020 ClientLeft = 165 ClientTop = 915 ClientWidth = 15615 Icon = "Star_M6.frx":0000 LinkTopic = "Form1" ScaleHeight = 10020 ScaleWidth = 15615 StartUpPosition = 3 '窗口缺省 Begin VB.Timer T_05s00 Enabled = 0 'False Interval = 500 Left = 720 Top = 600 End Begin VB.Timer Timer1 Interval = 1000 Left = 1320 Top = 600 End Begin VB.PictureBox disp_pic BackColor = &H00161602& ForeColor = &H0000C000& Height = 5895 Left = 0 ScaleHeight = 5835 ScaleWidth = 10035 TabIndex = 7 Top = 3480 Width = 10095 End Begin MSComctlLib.Toolbar Toolbar1 Align = 1 'Align Top Height = 420 Left = 0 TabIndex = 0 Top = 0 Width = 15615 _ExtentX = 27543 _ExtentY = 741 ButtonWidth = 609 ButtonHeight = 582 Appearance = 1 ImageList = "imlToolbarIcons" _Version = 393216 BeginProperty Buttons {66833FE8-8583-11D1-B16A-00C0F0283628} NumButtons = 3 BeginProperty Button1 {66833FEA-8583-11D1-B16A-00C0F0283628} Key = "打开串口" Object.ToolTipText = "打开串口" ImageKey = "Forward1" Style = 1 EndProperty BeginProperty Button2 {66833FEA-8583-11D1-B16A-00C0F0283628} Key = "关闭串口" Object.ToolTipText = "关闭串口" ImageKey = "Permission" Style = 1 EndProperty BeginProperty Button3 {66833FEA-8583-11D1-B16A-00C0F0283628} Key = "开始通讯" Object.ToolTipText = "开始通讯" ImageKey = "Phone" Style = 1 EndProperty EndProperty Begin VB.TextBox RAM_addr1th Alignment = 2 'Center Appearance = 0 'Flat BeginProperty Font Name = "宋体" Size = 12 Charset = 134 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty ForeColor = &H00800000& Height = 375 Left = 12000 TabIndex = 6 Text = "0" Top = 0 Width = 735 End Begin VB.VScrollBar RAM_VScroll1 Height = 375 Left = 12720 Max = 1216 SmallChange = 32 TabIndex = 5 Top = 0 Width = 255 End Begin VB.VScrollBar SN_VScroll Height = 375 Left = 13950 Max = 199 TabIndex = 4 Top = 0 Value = 1 Width = 255 End Begin VB.TextBox SN_Text Alignment = 2 'Center Appearance = 0 'Flat BeginProperty Font Name = "宋体" Size = 12 Charset = 134 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty ForeColor = &H00800000& Height = 360 Left = 13330 TabIndex = 3 Text = "01" Top = 0 Width = 615 End Begin VB.ComboBox Combo1 Appearance = 0 'Flat BeginProperty Font Name = "宋体" Size = 12 Charset = 134 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty ForeColor = &H00800000& Height = 360 ItemData = "Star_M6.frx":08CA Left = 14520 List = "Star_M6.frx":08D4 TabIndex = 2 Text = "COM1" Top = 0 Width = 975 End End Begin MSComctlLib.StatusBar sbStatusBar Align = 2 'Align Bottom Height = 270 Left = 0 TabIndex = 1 Top = 9750 Width = 15615 _ExtentX = 27543 _ExtentY = 476 _Version = 393216 BeginProperty Panels {8E3867A5-8586-11D1-B16A-00C0F0283628} NumPanels = 3 BeginProperty Panel1 {8E3867AB-8586-11D1-B16A-00C0F0283628} AutoSize = 1 Object.Width = 21828 Text = "状态" TextSave = "状态" EndProperty BeginProperty Panel2 {8E3867AB-8586-11D1-B16A-00C0F0283628} Style = 6 AutoSize = 2 TextSave = "11-10-8" EndProperty BeginProperty Panel3 {8E3867AB-8586-11D1-B16A-00C0F0283628} Style = 5 AutoSize = 2 TextSave = "8:50" EndProperty EndProperty End Begin MSComDlg.CommonDialog dlgCommonDialog Left = 11280 Top = 6960 _ExtentX = 847 _ExtentY = 847 _Version = 393216 End Begin MSComctlLib.ImageList imlToolbarIcons Left = 11880 Top = 6960 _ExtentX = 1005 _ExtentY = 1005 BackColor = -2147483643 ImageWidth = 16 ImageHeight = 16 MaskColor = 12632256 _Version = 393216 BeginProperty Images {2C247F25-8591-11D1-B16A-00C0F0283628} NumListImages = 3 BeginProperty ListImage1 {2C247F27-8591-11D1-B16A-00C0F0283628} Picture = "Star_M6.frx":08E4 Key = "Forward1" EndProperty BeginProperty ListImage2 {2C247F27-8591-11D1-B16A-00C0F0283628} Picture = "Star_M6.frx":0ABE Key = "Permission" EndProperty BeginProperty ListImage3 {2C247F27-8591-11D1-B16A-00C0F0283628} Picture = "Star_M6.frx":0C98 Key = "Phone" EndProperty EndProperty End Begin MSCommLib.MSComm MSComm1 Left = 120 Top = 600 _ExtentX = 1005 _ExtentY = 1005 _Version = 393216 DTREnable = 0 'False InputLen = 1 OutBufferSize = 1024 RThreshold = 1 InputMode = 1 End Begin ComctlLib.StatusBar StatusBar1 Align = 2 'Align Bottom Height = 255 Left = 0 TabIndex = 11 Top = 9495 Width = 15615 _ExtentX = 27543 _ExtentY = 450 SimpleText = "" _Version = 327682 BeginProperty Panels {0713E89E-850A-101B-AFC0-4210102A8DA7} NumPanels = 2 BeginProperty Panel1 {0713E89F-850A-101B-AFC0-4210102A8DA7} Alignment = 2 Object.Width = 1411 MinWidth = 1411 TextSave = "" Key = "" Object.Tag = "" EndProperty BeginProperty Panel2 {0713E89F-850A-101B-AFC0-4210102A8DA7} Alignment = 2 Object.Width = 1411 MinWidth = 1411 TextSave = "" Key = "" Object.Tag = "" EndProperty EndProperty BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851} Name = "宋体" Size = 9 Charset = 0 Weight = 400 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty End Begin VB.Label disp_area BackColor = &H00161602& BorderStyle = 1 'Fixed Single BeginProperty Font Name = "宋体" Size = 9 Charset = 134 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty ForeColor = &H0000C000& Height = 3030 Left = 0 TabIndex = 10 Top = 430 Width = 10095 End Begin VB.Label rx_data BackColor = &H00000000& BorderStyle = 1 'Fixed Single BeginProperty Font Name = "宋体" Size = 9 Charset = 134 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty ForeColor = &H0000C000& Height = 1935 Left = 10200 TabIndex = 9 Top = 1560 Width = 5295 End Begin VB.Label tx_data BackColor = &H00000000& BorderStyle = 1 'Fixed Single BeginProperty Font Name = "宋体" Size = 9 Charset = 134 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty ForeColor = &H0000FFFF& Height = 1110 Left = 10200 TabIndex = 8 Top = 430 Width = 5295 End Begin VB.Menu mnu保护器设置 Caption = "保护器设置 " Begin VB.Menu mnu保护器设置sys_set Caption = "基本设置" End Begin VB.Menu mnu保护器设置mu_quit Caption = "退出" End End Begin VB.Menu mnucompt Caption = "保护器参数" End Begin VB.Menu mnuAC_ch Caption = "电参校验" End Begin VB.Menu mnuop Caption = "启/停电机" End Begin VB.Menu mnuhelp Caption = "帮助" End End Attribute VB_Name = "mn_form" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False Dim V_1, V_1_real, V_1_Image, V_2, V_2_real, V_2_Image, V_1_m6, v_ric, tp00, tp01 As Single Dim jhg As Long Public num_rxright, num_sent, rx_CRC, T_pos Sub Send(ByVal Cmd As Integer) Dim k(0) As Byte tx_data.Caption = "" If Cmd = 4 Then T_pos = &H178: Cmd = 3 Else T_pos = RAM_VScroll1.Value

tx_b(3) = Array(SN_VScroll.Value, 3, T_pos \ 256, T_pos Mod 256, &H0, &H40, 0, 0, Hour(Time), Minute(Time), Second(Time), 0, 0, 0, 0)
tx_b(Cmd)(0) = SN_VScroll.Value:    tx_b(Cmd)(1) = Cmd
If Cmd = 16 Then Lenth = tx_b(Cmd)(5) * 2 + 7 Else Lenth = 6

Sum = &HFFFF
For i = 0 To Lenth - 1
    If tx_b(Cmd)(i) < 0 Then tx_b(Cmd)(i) = 256 + tx_b(Cmd)(i)
    k(0) = tx_b(Cmd)(i)
    Sum = Sum Xor (k(0) And &HFF)
    If Sum < 0 Then Sum = 65536 + Sum
    For j = 0 To 7
        If (Sum And 1) = 1 Then
            Sum = Int(Sum \ 2):     Sum = Sum Xor &HA001
            If Sum < 0 Then Sum = 65536 + Sum
        Else
            Sum = Int(Sum \ 2)
        End If
    Next
    MSComm1.Output = k: tx_data.Caption = tx_data.Caption + hexbyt(Int(k(0))) + " "
Next
If Sum < 0 Then Sum = 65536 + Sum
k(0) = (Sum Mod 256):   tx_data.Caption = tx_data.Caption + hexbyt(Int(k(0))) + " "
MSComm1.Output = k
k(0) = (Sum \ 256):     tx_data.Caption = tx_data.Caption + hexbyt(Int(k(0))) + " "
MSComm1.Output = k
rx_data = "":           rx_CRC = &HFFFF

End Sub Private Sub Combo1_Change() p = Combo1.ListIndex + 1 If p > 0 And p < 3 Then Call Close_OpenPort(Int(p)) End Sub Private Sub Command1_Click()

T_05s00.Enabled = False
MSComm1.PortOpen = False

End Sub Private Sub Command3_Click()

MSComm1.CommPort = 1
MSComm1.Settings = "9600,n,8,1"
MSComm1.InputLen = 0
MSComm1.PortOpen = True

End Sub Private Sub Command4_Click() T_05s00.Enabled = True End Sub Private Sub Form_Load()

Call Close_OpenPort(1)
Call MakeToolbarFlat(Toolbar1)

For i = 0 To 8 tx_b(i) = Array(&H68, &H3, &H3, &H68, &H20, &H93, &H83, &H85, &H0, &H30 + Second(Time) Mod 10, &H0, &H30 + Second(Time) Mod 10, &H0, &H41 + Second(Time) Mod 10, &H0, &H61 + Second(Time) Mod 10, 0, 0, 0, 0, 1, 7, 6, 5, 4, 3, 2, 1, 7, 6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 1, 7, 6, 5, 4, 3, 2, 1, 7, 6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 1, 7, 6, 5, 4, 3, 2, 1, 7, 6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 1, 7, 6, 5, 4, 3, 2, 1, 7, 6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 1, 7, 6, 5, 4, 3, 2, 1, 7, 6, 5, 4, 3, 2, 1) Next

tx_REQ = 3: num_rxright = 0: num_sent = 0

StatusBar1.Panels(1).Width = 3000 '标题刷新 StatusBar1.Panels(2).Width = 3000 '标题刷新 Dim f As Integer For f = 1 To 5 sbStatusBar.Panels.Add Next f End Sub Private Sub Form_Unload(Cancel As Integer) Dim i As Integer

'close all sub forms关闭所有窗体
For i = Forms.Count - 1 To 1 Step -1
    Unload Forms(i)
Next
If Me.WindowState <> vbMinimized Then
    SaveSetting App.Title, "Settings", "MainLeft", Me.Left
    SaveSetting App.Title, "Settings", "MainTop", Me.Top
    SaveSetting App.Title, "Settings", "MainWidth", Me.Width
    SaveSetting App.Title, "Settings", "MainHeight", Me.Height
End If
 Unload controlform
Unload Comptform
Unload Factor_Seting
Unload Me
End

End Sub Private Sub mnuAC_ch_Click() Factor_Seting.Visible = True tx_REQ = 3 End Sub Private Sub mnucompt_Click() Comptform.Visible = True End Sub Private Sub mnuhelp_Click() frmAbout.Show End Sub Private Sub mnuop_Click() controlform.Visible = True End Sub Private Sub mnu保护器设置mu_quit_Click() Unload Me End Sub Private Sub mnu保护器设置sys_set_Click() s_set.Visible = True End Sub Private Sub MSComm1_OnComm() Dim temp As Variant

MSComm1.InputLen = 1

While MSComm1.InBufferCount <> 0
    temp = MSComm1.Input

    If rx_ptr < 150 Then
        If rx_ptr = 3 Then rx_data.Caption = rx_data.Caption + vbCr
        rx_b(rx_ptr) = temp(0):    rx_data.Caption = rx_data.Caption + hexbyt(Int(temp(0))) + " "
        rx_ptr = rx_ptr + 1
        
        rx_CRC = rx_CRC Xor (temp(0) And &HFF)
        If rx_CRC < 0 Then rx_CRC = 65536 + rx_CRC
        For j = 0 To 7
            If (rx_CRC And 1) = 1 Then
                rx_CRC = Int(rx_CRC \ 2)
                rx_CRC = rx_CRC Xor &HA001
            If rx_CRC < 0 Then rx_CRC = 65536 + rx_CRC
            Else
                rx_CRC = Int(rx_CRC \ 2)
            End If
        Next
    End If
Wend

End Sub Private Sub RAM_VScroll1_Change() RAM_addr1th.Text = strhex(RAM_VScroll1.Value) BBB = strhex(RAM_VScroll1.Value) End Sub

Private Sub rx_data_Change() jhg = jhg + 1 StatusBar1.Panels(2) = "通讯接收" + Str(jhg \ 8) + "次数据" '统计接收次数 End Sub Private Sub SN_VScroll_Change() SN_Text.Text = Str(SN_VScroll.Value) '站号调整与显示 End Sub Private Sub T_05s00_Timer()

If rx_CRC = 0 Then
    Call Process
    num_rxright = (num_rxright + 1) Mod 10000       '显示接收正确次数
    jhg = jhg + 1
    StatusBar1.Panels(2) = Str(num_rxright)
End If

Call Send(tx_REQ) '发送默认命令

If tx_REQ <> 3 Then tx_REQ = 3

num_sent = (num_sent + 1) Mod 10000
StatusBar1.Panels(1) = "通讯发送" + Str(num_sent) + "次命令"             '显示召唤次数
rx_ptr = 0
If AAA = "128" Then

RAM_VScroll1.Value = AAA End If

End Sub Sub Close_OpenPort(port As Byte) On Error Resume Next ' 改变错误处理的方式。 Err.Clear If MSComm1.PortOpen = True Then MSComm1.CommPort = port MSComm1.Settings = "9600,n,8,1" MSComm1.InputLen = 0

End If If Err.Number <> 0 Then msg = "Error # " & Str(Err.Number) & " was generated by " _ & Err.Source & Chr(13) & Err.Description MsgBox msg, , "Error", Err.HelpFile, Err.HelpContext End If End Sub Public Sub Process() If (T_pos < 410) Then disp_area.Caption = "" For i = 0 To 63 D_int(i) = b_i(rx_b(4 + i * 2), rx_b(3 + i * 2)) If D_int(i) >= 0 Then disp_area.Caption = disp_area.Caption + Format(D_int(i), " 00000 ") Else disp_area.Caption = disp_area.Caption + "-" + Format(-D_int(i), "00000 ") End If If (i Mod 8) = 7 Then disp_area.Caption = disp_area.Caption + vbCr + " " Next sindraw (0) End If

If T_pos = &H80 Then
    'For i = 0 To 7
        'Factor_Seting.AC_data(i).Caption = Format(b_i(rx_b(4 + i * 2), rx_b(3 + i * 2)) / 100, "0.00")
        Factor_Seting.AC_data(1).Caption = Format(b_i(rx_b(8), rx_b(7)) / 100, "0.00")
        Factor_Seting.AC_data(0).Caption = Format(b_i(rx_b(16), rx_b(15)) / 100, "0.00")
        Factor_Seting.AC_data(3).Caption = Format(b_i(rx_b(24), rx_b(23)) / 100, "0.00")
        Factor_Seting.AC_data(2).Caption = Format(b_i(rx_b(32), rx_b(31)) / 1000 * 38, "0.00")
        Factor_Seting.AC_data(5).Caption = Format(b_i(rx_b(40), rx_b(39)) / 1000 * 38, "0.00")
        Factor_Seting.AC_data(4).Caption = Format(b_i(rx_b(102), rx_b(101)) / 1000, "0.00")
        Factor_Seting.AC_data(7).Caption = Format(b_i(rx_b(104), rx_b(103)) / 1000, "0.00")
        'Factor_Seting.AC_data(7).Caption = Format(b_i(rx_b(6 + i * 2), rx_b(5 + i * 2)) / 100, "0.00")
    'Next
End If

If T_pos = &H178 Then
    For i = 0 To 7
        If rx_b(3 + i) < 128 Then Factor_Seting.VScroll1(i).Value = -rx_b(3 + i) Else Factor_Seting.VScroll1(i).Value = 256 - rx_b(3 + i)
    Next
End If

End Sub Public Sub sindraw(ByVal ch As Integer) disp_pic.Cls xsc = (disp_pic.Width - 200) / 32: ysc = (disp_pic.Height - 200) / 1280: xax = disp_pic.Height / 2

disp_pic.Line (xsc, xax)-(disp_pic.Width - xsc, xax), RGB(128, 128, 128) disp_pic.Line (xsc, 100)-(xsc, disp_pic.Height - 100), RGB(128, 128, 128)

If T_pos < &H60 Then For i = 1 To 31 disp_pic.Line (i * xsc, D_int((i - 1) Mod 16) * ysc + xax)-((i + 1) * xsc, D_int(i Mod 16) * ysc + xax), RGB(250, ch * 50, 0) disp_pic.Line (i * xsc, D_int((i - 1) Mod 16 + 16) * ysc + xax)-((i + 1) * xsc, D_int(i Mod 16 + 16) * ysc + xax), RGB(250, ch * 50, 200)

    disp_pic.Line (i * xsc, D_int((i - 1) Mod 16 + 32) * ysc + xax)-((i + 1) * xsc, D_int(i Mod 16 + 32) * ysc + xax), RGB(210, 150, 220)
    disp_pic.Line (i * xsc, D_int((i - 1) Mod 16 + 48) * ysc + xax)-((i + 1) * xsc, D_int(i Mod 16 + 48) * ysc + xax), RGB(150, ch * 50, 100)
Next

Else For i = 1 To 31 disp_pic.Line (i * xsc, xax)-((i + 1) * xsc, xax), RGB(250, ch * 50, 0) disp_pic.Line (i * xsc, 16 * ysc + xax)-((i + 1) * xsc, 16 * ysc + xax), RGB(250, ch * 50, 200)

    disp_pic.Line (i * xsc, 32 * ysc + xax)-((i + 1) * xsc, 32 * ysc + xax), RGB(210, 150, 220)
    disp_pic.Line (i * xsc, 48 * ysc + xax)-((i + 1) * xsc, 48 * ysc + xax), RGB(150, ch * 50, 100)
Next

End If End Sub Sub Delay(ByVal msValue As Long) Dim EndTime As Long EndTime = GetTickCount + msValue Do DoEvents Loop Until GetTickCount >= EndTime End Sub Private Sub Timer1_Timer()

With sbStatusBar.Panels .Item(1).Width = 1500 .Item(1).Text = "当前通讯口COM1,波特率9600bit" .Item(2).Width = 1100 .Item(2).Text = "" .Item(3).Width = 1100 .Item(3).Text = "" .Item(4).Width = 1500 .Item(4).Text = Str(num_rxright) .Item(5).Width = 3800 .Item(5).Bevel = sbrNoBevel '空白 .Item(6).Width = 1500 .Item(6).Text = Format(Date, " yyyy年mm月dd日 ") .Item(7).Width = 800 .Item(7).Text = myweekday .Item(8).Width = 1300 .Item(8).Text = Format(Time, "hh时mm分ss秒 ") End With

End Sub Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button) On Error Resume Next Select Case Button.Key Case "打开串口" MSComm1.CommPort = 1 MSComm1.Settings = "9600,n,8,1" MSComm1.InputLen = 0 MSComm1.PortOpen = True

    Case "关闭串口"
T_05s00.Enabled = False
MSComm1.PortOpen = False

    Case "开始通讯"
        T_05s00.Enabled = True
  
End Select

End Sub

VERSION 5.00 Begin VB.Form s_set BorderStyle = 1 'Fixed Single Caption = "系统设置" ClientHeight = 4830 ClientLeft = 45 ClientTop = 435 ClientWidth = 8865 Icon = "sys_set.frx":0000 LinkTopic = "Form1" MaxButton = 0 'False MinButton = 0 'False ScaleHeight = 4830 ScaleWidth = 8865 StartUpPosition = 3 '窗口缺省 Begin VB.CommandButton Command1 Caption = "确认" Height = 615 Left = 6840 Picture = "sys_set.frx":038A Style = 1 'Graphical TabIndex = 25 Top = 3600 Width = 1215 End Begin VB.TextBox Text1 Alignment = 1 'Right Justify BeginProperty Font Name = "宋体" Size = 12 Charset = 134 Weight = 400 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 405 Index = 3 Left = 7200 TabIndex = 24 Text = "1.0" Top = 2280 Width = 735 End Begin VB.VScrollBar VScroll1 Height = 375 Index = 3 Left = 7920 Max = 255 Min = 1 TabIndex = 23 Top = 2280 Value = 1 Width = 255 End Begin VB.VScrollBar VScroll1 Height = 375 Index = 2 Left = 7920 Max = 255 Min = 1 TabIndex = 20 Top = 1680 Value = 10 Width = 255 End Begin VB.VScrollBar VScroll1 Height = 375 Index = 1 Left = 7920 Max = 5 Min = 1 TabIndex = 19 Top = 1080 Value = 1 Width = 255 End Begin VB.VScrollBar VScroll1 Height = 375 Index = 0 Left = 7920 Max = 99 Min = 1 TabIndex = 18 Top = 480 Value = 1 Width = 255 End Begin VB.TextBox Text1 Alignment = 1 'Right Justify BeginProperty Font Name = "宋体" Size = 12 Charset = 134 Weight = 400 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 405 Index = 2 Left = 7200 TabIndex = 17 Text = "1.0" Top = 1680 Width = 735 End Begin VB.TextBox Text1 Alignment = 1 'Right Justify BeginProperty Font Name = "宋体" Size = 12 Charset = 134 Weight = 400 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 405 Index = 1 Left = 7200 TabIndex = 16 Text = "1" Top = 1080 Width = 735 End Begin VB.TextBox Text1 Alignment = 1 'Right Justify BeginProperty Font Name = "宋体" Size = 12 Charset = 134 Weight = 400 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 405 Index = 0 Left = 7200 TabIndex = 15 Text = "1" Top = 480 Width = 735 End Begin VB.ComboBox Combo1 Height = 300 Index = 5 ItemData = "sys_set.frx":0714 Left = 2280 List = "sys_set.frx":072A TabIndex = 5 Text = "100ms" Top = 4080 Width = 1215 End Begin VB.ComboBox Combo1 Height = 300 Index = 4 ItemData = "sys_set.frx":0757 Left = 2280 List = "sys_set.frx":076D TabIndex = 4 Text = "100ms" Top = 3240 Width = 1215 End Begin VB.ComboBox Combo1 Height = 300 Index = 3 ItemData = "sys_set.frx":079A Left = 2280 List = "sys_set.frx":07A4 TabIndex = 3 Text = "上升沿" Top = 2520 Width = 1215 End Begin VB.ComboBox Combo1 Height = 300 Index = 2 ItemData = "sys_set.frx":07B6 Left = 2280 List = "sys_set.frx":07C6 TabIndex = 2 Text = "保护模式" Top = 1800 Width = 1215 End Begin VB.ComboBox Combo1 Height = 300 Index = 1 ItemData = "sys_set.frx":07F5 Left = 2280 List = "sys_set.frx":0805 TabIndex = 1 Text = "Ia" Top = 1080 Width = 1215 End Begin VB.ComboBox Combo1 Height = 300 Index = 0 ItemData = "sys_set.frx":0819 Left = 2280 List = "sys_set.frx":0826 TabIndex = 0 Text = "面板方式" Top = 480 Width = 1215 End Begin VB.Label Label1 Alignment = 1 'Right Justify Caption = "CT 变比" BeginProperty Font Name = "宋体" Size = 10.5 Charset = 134 Weight = 400 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Index = 9 Left = 5400 TabIndex = 22 Top = 2400 Width = 1455 End Begin VB.Label Label2 Caption = "CT变比" Height = 15 Left = 5280 TabIndex = 21 Top = 2400 Width = 1215 End Begin VB.Label Label1 Alignment = 1 'Right Justify Caption = "星-三角启动切换时间" BeginProperty Font Name = "宋体" Size = 10.5 Charset = 134 Weight = 400 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Index = 8 Left = 4440 TabIndex = 14 Top = 1800 Width = 2415 End Begin VB.Label Label1 Alignment = 1 'Right Justify Caption = "散热时间系数" BeginProperty Font Name = "宋体" Size = 10.5 Charset = 134 Weight = 400 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Index = 7 Left = 5160 TabIndex = 13 Top = 1200 Width = 1695 End Begin VB.Label Label1 Alignment = 1 'Right Justify Caption = "通信站号" BeginProperty Font Name = "宋体" Size = 10.5 Charset = 134 Weight = 400 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Index = 6 Left = 5160 TabIndex = 12 Top = 600 Width = 1695 End Begin VB.Label Label1 Alignment = 1 'Right Justify Caption = "启停出口方式" BeginProperty Font Name = "宋体" Size = 10.5 Charset = 134 Weight = 400 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Index = 5 Left = 240 TabIndex = 11 Top = 4080 Width = 1695 End Begin VB.Label Label1 Alignment = 1 'Right Justify Caption = "跳闸出口方式" BeginProperty Font Name = "宋体" Size = 10.5 Charset = 134 Weight = 400 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Index = 4 Left = 240 TabIndex = 10 Top = 3240 Width = 1695 End Begin VB.Label Label1 Alignment = 1 'Right Justify Caption = "接点检测方式" BeginProperty Font Name = "宋体" Size = 10.5 Charset = 134 Weight = 400 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Index = 3 Left = 240 TabIndex = 9 Top = 2520 Width = 1695 End Begin VB.Label Label1 Alignment = 1 'Right Justify Caption = "控制模式" BeginProperty Font Name = "宋体" Size = 10.5 Charset = 134 Weight = 400 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Index = 2 Left = 240 TabIndex = 8 Top = 1800 Width = 1695 End Begin VB.Label Label1 Alignment = 1 'Right Justify Caption = "模拟量输出" BeginProperty Font Name = "宋体" Size = 10.5 Charset = 134 Weight = 400 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Index = 1 Left = 240 TabIndex = 7 Top = 1080 Width = 1695 End Begin VB.Label Label1 Alignment = 1 'Right Justify Caption = "操作权限" BeginProperty Font Name = "宋体" Size = 10.5 Charset = 134 Weight = 400 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Index = 0 Left = 240 TabIndex = 6 Top = 510 Width = 1695 End End Attribute VB_Name = "s_set" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False Dim hcd(32) As Byte Private Sub Command1_Click()

For i = 0 To 2
    If Combo1(i * 2).ListIndex < 0 Then Combo1(i * 2).ListIndex = 0
    If Combo1(i * 2 + 1).ListIndex < 0 Then Combo1(i * 2 + 1).ListIndex = 0
    hcd(i) = (Combo1(i * 2).ListIndex + 1) * 16 + (Combo1(i * 2 + 1).ListIndex + 1)
    hcd(i + 3) = VScroll1(i).Value
    
Next

hcd(7) = VScroll1(3).Value



hcd(10) = &H34: hcd(11) = &HDA
For i = 0 To 4
    hcd(10) = hcd(10) Xor hcd(i * 2): hcd(11) = hcd(11) Xor hcd(i * 2 + 1)
Next

i = 14 * 8 + &H100

tx_b(16) = Array(&H8, &H10, i \ 256, i Mod 256, 0, &H8, &H10, Hour(Time), Minute(Time), Second(Time), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)

hcd(12) = &HFF: hcd(13) = &HFF: hcd(14) = &H12: hcd(15) = &H34
For i = 7 To 7 + 32:        tx_b(16)(i) = hcd(i - 7):    Next
tx_REQ = 16

End Sub

Private Sub VScroll1_Change(Index As Integer) If Index = 2 Then Text1(2).Text = Format(VScroll1(2).Value / 10, "0.0") Else Text1(Index).Text = VScroll1(Index).Value End If

End Sub