📄 串口.frm
字号:
Begin VB.Label Label8
BackColor = &H00E0E0E0&
Caption = "S_CLK"
BeginProperty Font
Name = "Arial"
Size = 12
Charset = 0
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 840
TabIndex = 5
Top = 1080
Width = 1095
End
Begin VB.Label Label9
BackColor = &H00E0E0E0&
Caption = "M_EXYNC"
BeginProperty Font
Name = "Arial"
Size = 12
Charset = 0
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 3360
TabIndex = 4
Top = 1320
Width = 1455
End
Begin VB.Label Label10
BackColor = &H00E0E0E0&
Caption = "S_EXYNC"
BeginProperty Font
Name = "Arial"
Size = 12
Charset = 0
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 3360
TabIndex = 3
Top = 480
Width = 1455
End
Begin VB.Label Label11
BackColor = &H00E0E0E0&
Caption = "M_TIME"
BeginProperty Font
Name = "Arial"
Size = 12
Charset = 0
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 6000
TabIndex = 2
Top = 1200
Width = 1455
End
Begin VB.Label Label12
BackColor = &H00E0E0E0&
Caption = "S_TIME"
BeginProperty Font
Name = "Arial"
Size = 12
Charset = 0
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 6000
TabIndex = 1
Top = 1080
Width = 1455
End
End
Begin MSCommLib.MSComm com1
Left = 10080
Top = 8040
_ExtentX = 1005
_ExtentY = 1005
_Version = 393216
DTREnable = -1 'True
InputLen = 1
RThreshold = 1
BaudRate = 1200
SThreshold = 1
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Dim switch '时序板工作标志
Dim s_falg '状态检测标志
'接受来自C51的串口数据,进行状态检测
Private Sub com1_OnComm()
Dim intnum
intnum = com1.Input
If s_flag = 0 Then '可以检测
If switch = 0 Then '目前是主时钟电路工作
Select Case intnum
Case 0
Shape1(0).FillColor = RGB(255, 0, 0)
Case 2
Shape1(2).FillColor = RGB(255, 0, 0)
Case 4
Shape1(4).FillColor = RGB(255, 0, 0)
End Select
End If
If switch = 1 Then '目前是备时钟电路工作
Select Case intnum
Case 1
Shape1(1).FillColor = RGB(255, 0, 0)
Case 3
Shape1(3).FillColor = RGB(255, 0, 0)
Case 5
Shape1(5).FillColor = RGB(255, 0, 0)
End Select
End If
End If
End Sub
'选择速高比后,才可以进行选择侧摆角度
Private Sub Combo1_click()
Combo2.Enabled = True
End Sub
'选择完速高比和测摆角度后,才可以发送
Private Sub Combo2_click()
Command1.Enabled = True
End Sub
'速高比、测摆角的发送
Private Sub Command1_Click()
'常量定义
Const pi = 3.14159265358979
'变量定义
Dim tint, ww As Single
Dim tcod, tsen As Integer
Dim he, she
'积分时间计算与速高比发送
ww = Val(Combo2.Text)
If Combo1.Text = "7.08/500" Then
tint = 10.128 / ((11) * Cos(ww / 180 * pi) * (7.08 / 500))
com1.Output = "0" + Combo2.Text
'在下面两个速高比条件下,仅进行了计算,未模拟发送
ElseIf Combo1.Text = "7.08/600" Then
tint = 10.128 / ((11) * Cos(ww / 180 * pi) * (7.08 / 600))
ElseIf Combo1.Text = "7.08/450" Then
tint = 10.128 / ((11) * Cos(ww / 180 * pi) * (7.08 / 450))
End If
'积分时间显示
Text2.Text = Left(CStr(tint), 5)
'控制码解算
tcod = Val(Text2.Text) * 1000
tsen = tcod / 20.8 - 128 - 2048 - 950
'控制码显示
he = Hex(tsen)
If Len(she) < 10 Then
For i = 1 To 4 - Len(he)
he = "0" + he
Next
End If
'16进值显示
Label6.Caption = "HEX:" + Right(CStr(he), 3)
'转换为2进值
she = hex2bin(Right(CStr(he), 3))
'2进值显示
Label5.Caption = "BIN:" + she
Shape1(6).FillColor = RGB(0, 255, 0)
Shape1(7).FillColor = RGB(255, 0, 0)
End Sub
'结束程序
Private Sub Command2_Click()
com1.PortOpen = False
End
End Sub
'软复位发送
Private Sub Command3_Click()
com1.Output = "500"
End Sub
'选择主时钟工作
Private Sub Command5_Click()
s_flag = 1
com1.Output = "600"
'写主时钟工作标志
switch = 0
Command5.Enabled = False
Command4.Enabled = True
'检测灯设置
Shape1(1).FillColor = RGB(255, 255, 255)
Shape1(3).FillColor = RGB(255, 255, 255)
Shape1(5).FillColor = RGB(255, 255, 255)
Shape1(0).FillColor = RGB(0, 255, 0)
Shape1(2).FillColor = RGB(0, 255, 0)
Shape1(4).FillColor = RGB(0, 255, 0)
s_falg = 0
End Sub
'选择备时钟工作
Private Sub Command4_Click()
s_flag = 1
com1.Output = "700"
'写备时钟工作标志
switch = 1
Command4.Enabled = False
Command5.Enabled = True
'检测灯设置
Shape1(0).FillColor = RGB(255, 255, 255)
Shape1(2).FillColor = RGB(255, 255, 255)
Shape1(4).FillColor = RGB(255, 255, 255)
Shape1(1).FillColor = RGB(0, 255, 0)
Shape1(3).FillColor = RGB(0, 255, 0)
Shape1(5).FillColor = RGB(0, 255, 0)
s_falg = 0
End Sub
Private Sub Command6_Click()
Shape1(7).FillColor = RGB(0, 255, 0)
Shape1(6).FillColor = RGB(255, 0, 0)
End Sub
'程序初始化
Private Sub Form_Load()
'初始化combo1
Combo1.AddItem ("7.08/500")
Combo1.AddItem ("7.08/600")
Combo1.AddItem ("7.08/450")
Combo2.AddItem ("00")
Combo2.AddItem ("01")
Combo2.AddItem ("02")
Combo2.AddItem ("03")
Combo2.AddItem ("04")
Combo2.AddItem ("05")
Combo2.AddItem ("06")
Combo2.AddItem ("07")
Combo2.AddItem ("08")
Combo2.AddItem ("09")
Combo2.AddItem ("10")
Combo2.AddItem ("11")
Combo2.AddItem ("12")
Combo2.AddItem ("13")
Combo2.AddItem ("14")
Combo2.AddItem ("15")
Combo2.AddItem ("16")
Combo2.AddItem ("17")
Combo2.AddItem ("18")
Combo2.AddItem ("19")
Combo2.AddItem ("20")
Combo2.AddItem ("21")
Combo2.AddItem ("22")
Combo2.AddItem ("23")
Combo2.AddItem ("24")
Combo2.AddItem ("25")
Combo2.AddItem ("26")
Combo2.AddItem ("27")
Combo2.AddItem ("28")
Combo2.AddItem ("29")
Combo2.AddItem ("30")
'置初始状态
switch = 0 '默认主时钟电路工作
s_flag = 0
'设置串口工作状态
com1.CommPort = 1
com1.Settings = "1200,n,8,1"
If com1.PortOpen = False Then
com1.PortOpen = True
com1.OutBufferCount = 0
com1.InBufferCount = 0
End If
'检测灯设置
Shape1(1).FillColor = RGB(255, 255, 255)
Shape1(3).FillColor = RGB(255, 255, 255)
Shape1(5).FillColor = RGB(255, 255, 255)
Shape1(0).FillColor = RGB(0, 255, 0)
Shape1(2).FillColor = RGB(0, 255, 0)
Shape1(4).FillColor = RGB(0, 255, 0)
Command5.Enabled = False
End Sub
'16进制转换为2进制函数
Public Function hex2bin(SourceHex As String) As String
Dim StrTemp As String '临时的交换,也可不定义直接对SourceHex进行修改,如果SourceHex不再有用的话.
Dim StrLen As Integer
hex2bin = ""
StrTemp = StrConv(SourceHex, 1)
For i = 1 To Len(SourceHex)
Select Case Left(StrTemp, 1)
Case 0
hex2bin = hex2bin + "0000"
Case 1
hex2bin = hex2bin + "0001"
Case 2
hex2bin = hex2bin + "0010"
Case 3
hex2bin = hex2bin + "0011"
Case 4
hex2bin = hex2bin + "0100"
Case 5
hex2bin = hex2bin + "0101"
Case 6
hex2bin = hex2bin + "0110"
Case 7
hex2bin = hex2bin + "0111"
Case 8
hex2bin = hex2bin + "1000"
Case 9
hex2bin = hex2bin + "1001"
Case "A"
hex2bin = hex2bin + "1010"
Case "B"
hex2bin = hex2bin + "1011"
Case "C"
hex2bin = hex2bin + "1100"
Case "D"
hex2bin = hex2bin + "1101"
Case "E"
hex2bin = hex2bin + "1110"
Case "F"
hex2bin = hex2bin + "1111"
End Select
StrTemp = Mid(StrTemp, 2, Len(StrTemp) - 1)
Next i
For i = 0 To 1 '去掉前面的两个零
If Left(hex2bin, 1) = "0" Then
hex2bin = Mid(hex2bin, 2, Len(hex2bin) - 1)
End If
Next
End Function
Private Sub Label24_Click()
End Sub
Private Sub Label25_Click()
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -