Command1BackColor--浏览猎豹浏览器搜狗浏览器浏览器谷歌浏览器qq浏览器
Dim STX As String * 1 Dim ETX As String * 1 Dim cmd_start As String Dim cmd_stop As String Dim cmd_setM8037 As String Dim cmd_rstM8037 As String Dim cmd_writeD0 As String Dim cmd_readD1D2 As String
Sub delay(dt As Single)
Dim aft As Single
aft = Timer + dt
Do
DoEvents
Loop Until Timer > aft End Sub
Function chk_sum(ByVal s As String) As String
Dim i As Integer
Dim sum As Long
For i = 1 To Len(s)
sum = sum + Asc(Mid(s, i, 1))
Next i
chk_sum = Right(Hex(sum), 2) End Function
Private Sub show_plcx(ByVal xx As Integer)
Dim i As Integer
Dim a As Integer
a = 1
For i = 0 To 7
X(i).BackStyle = IIf((xx And a) = a, 1, 0)
a = a * 2
Next i
End Sub
Private Sub Command1_Click()
Static b As Boolean
Timer1.Enabled = False
-1-
delay 0.5
If b Then 'stop
Command1.BackColor = &HFFFF00
Command1.Caption = "Start"
MSComm1.Output = cmd_stop
Else 'start
Command1.BackColor = &H80FF&
Command1.Caption = "Stop"
MSComm1.Output = cmd_start
End If
delay 0.5
Timer1.Enabled = True
b = Not b
End Sub
Private Sub Command2_Click()
Dim s As String
s = Right("000" & Hex(Val(Text1.Text)), 4)
s = cmd_writeD0 & Right(s, 2) & Left(s, 2) & ETX
s = STX & s & chk_sum(s)
MSComm1.Output = s
End Sub
Private Sub Command3_Click()
MSComm1.RThreshold = 12
MSComm1.Output = cmd_readD1D2 End Sub
Private Sub Command4_Click()
Static b As Boolean
Timer1.Enabled = False
delay 0.3
If b Then 'EMS, SETM8037
Command4.Caption = "RUN"
Command4.BackColor = &HFF00&
MSComm1.Output = cmd_setM8037
Command1.Enabled = False
Command1.BackColor = &HFFFF00
Command1.Caption = "Start"
Else 'RUN, RST M8037, SET M8035, SET M8036
Command4.Caption = "EMS"
Command4.BackColor = &HFF&
MSComm1.Output = cmd_rstM8037
delay 0.1
MSComm1.Output = " E7230E 59" 'SET M8035
delay 0.1
MSComm1.Output = " E7240E 5A" 'SET M8036
Command1.Enabled = True
End If
delay 0.3
Timer1.Enabled = True
b = Not b
End Sub
Private Sub Form_Load()
STX = Chr(2)
ETX = Chr(3)
cmd_start = STX & "E70100" & ETX & "40"
cmd_stop = STX & "E80100" & ETX & "41"
cmd_setM8037 = " E7250E 5B"
cmd_rstM8037 = " E8250E 5C"
cmd_writeD0 = "E10400002"
cmd_readD1D2 = STX & "E00400204" & ETX & "D2"
-2-
MSComm1.PortOpen = True
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If MSComm1.PortOpen = True Then MSComm1.PortOpen = False End Sub
Private Sub HScroll1_Change()
Text1.Text = HScroll1.Value
End Sub
Private Sub MSComm1_OnComm()
Dim s As String
Select Case MSComm1.CommEvent
' 藉著取代底下每一個 case 陳述式來處理每個事件與錯誤
' 事件
Case comEvReceive ' 收到最小接收字元數'個字元。
s = CStr(MSComm1.Input)
'Text2.Text = Text2.Text & "_" & s & "_" & vbCrLf
If Len(s) > 11 Then
Label2.Caption = Val("&H" & Mid(s, 4, 2) & Mid(s, 2, 2))
Call show_plcx(Val("&H" & Mid(s, 8, 2) & Mid(s, 6, 2)))
End If
MSComm1.RThreshold = 1
Case comEvSend ' 傳輸暫存區有最小傳輸字元數個字元。 '
Case comEvEOF ' 輸入資料流中發現 EOF 字元
End Select
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim i As Integer
If KeyAscii = 13 Then 'press enter
i = Val(Text1.Text)
If i > HScroll1.Max Then i = HScroll1.Max
If i < HScroll1.Min Then i = HScroll1.Min
Text1.Text = i
HScroll1.Value = i
End If
End Sub
Private Sub Timer1_Timer()
MSComm1.RThreshold = 12
MSComm1.Output = cmd_readD1D2
End Sub
-3-