📄 module1.bas
字号:
Attribute VB_Name = "Module1"
Option Explicit
Declare Function GetTickCount Lib "kernel32" () As Long
Public ind As Integer
Public name1 As String
Public number1 As Integer
Public sing As Byte
Sub display() '显示子过程
Dim i As Integer
Dim aa As Boolean
Form_main.Show
For i = 0 To 20
Form_main.Adodc1.RecordSource = "select * from 库存 where 位置=" & i
Form_main.Adodc1.Refresh
If Form_main.Adodc1.Recordset.Fields("状态") = "有托盘" Then
' Form_main.Com1(i).BackColor = &HFF00&
If Form_main.Adodc1.Recordset.Fields("数量") <> 0 Then
If Form_main.Adodc1.Recordset.Fields("名称") = "汽车" Or Form_main.Adodc1.Recordset.Fields("名称") = "轿车" Then
Form_main.Com1(i).Caption = ""
Form_main.Com1(i).Picture = LoadPicture("" & App.Path & "\\11.bmp") '有汽车
Else
Form_main.Com1(i).Picture = LoadPicture("" & App.Path & "\\33.bmp") '有托盘
If Form_main.Adodc1.Recordset.Fields("名称") <> "无物" Then
Form_main.Com1(i).Caption = Form_main.Adodc1.Recordset.Fields("名称") & "(" & Form_main.Adodc1.Recordset.Fields("数量") & ")"
End If
End If
Else
Form_main.Com1(i).Picture = LoadPicture("" & App.Path & "\\33.bmp") '有托盘
Form_main.Com1(i).Caption = ""
End If
Else
Form_main.Com1(i).Picture = LoadPicture("" & App.Path & "\\55.bmp") '无托盘
' Form_main.Com1(i).BackColor = &H80000004 '无托盘
Form_main.Com1(i).Caption = ""
End If
Next i
Debug.Print "diaplay"
End Sub
Sub control(e1 As Byte) '控制子过程
Dim a As Integer
10
If FanHuiZhi(e1) Then
'Form_main.Label1.Caption = "正在执行命令!"
'Form_main.Label1.Caption = "执行完成!"
' Form_main.Label1.Caption = name1
Else
a = MsgBox("通讯超时,请检查 PLC 联接", 5 + 48 + 256, "通讯超时")
Select Case a
Case 4 '重试
GoTo 10
Case 2 '取消
GoTo 9
End Select
End If
If e1 = 0 Then '入库后的ACCESS处理
Form_main.Adodc1.RecordSource = "select * from 库存 where 位置=" & 0
Form_main.Adodc1.Refresh
Form_main.Adodc1.Recordset.Fields("状态") = "无托盘" '进出架上无托盘
Form_main.Adodc1.Recordset.Fields("名称") = "无物"
Form_main.Adodc1.Recordset.Fields("数量") = 0
Form_main.Adodc1.Recordset.Update
Form_main.Adodc1.RecordSource = "select * from 库存 where 位置=" & ind '货架上有托盘
Form_main.Adodc1.Refresh
Form_main.Adodc1.Recordset.Fields("状态") = "有托盘"
Form_main.Adodc1.Recordset.Fields("名称") = name1
Form_main.Adodc1.Recordset.Fields("数量") = number1
Form_main.Adodc1.Recordset.Update
Form_main.Adodc2.RecordSource = "select * from 操作记录"
Form_main.Adodc2.Refresh
Form_main.Adodc2.Recordset.AddNew
Form_main.Adodc2.Recordset.Fields("时间") = Now
Form_main.Adodc2.Recordset.Fields("操作") = "入库"
Form_main.Adodc2.Recordset.Fields("名称") = name1
Form_main.Adodc2.Recordset.Fields("数量") = number1
Form_main.Adodc2.Recordset.Fields("位置") = ind
Form_main.Adodc2.Recordset.AddNew
End If
If e1 = 1 Then '出库后的ACCESS处理
Form_main.Adodc1.RecordSource = "select * from 库存 where 位置=" & ind
Form_main.Adodc1.Refresh
name1 = Form_main.Adodc1.Recordset.Fields("名称")
number1 = Form_main.Adodc1.Recordset.Fields("数量")
Form_main.Adodc1.Recordset.Fields("状态") = "无托盘" '货架上无托盘
Form_main.Adodc1.Recordset.Fields("名称") = "无物"
Form_main.Adodc1.Recordset.Fields("数量") = 0
Form_main.Adodc1.Recordset.Update
Form_main.Adodc1.RecordSource = "select * from 库存 where 位置=" & 0
Form_main.Adodc1.Refresh
Form_main.Adodc1.Recordset.Fields("状态") = "有托盘" '进出架上有托盘
Form_main.Adodc1.Recordset.Fields("名称") = name1
Form_main.Adodc1.Recordset.Fields("数量") = number1
Form_main.Adodc1.Recordset.Update
Form_main.Adodc2.RecordSource = "select * from 操作记录"
Form_main.Adodc2.Refresh
Form_main.Adodc2.Recordset.AddNew
Form_main.Adodc2.Recordset.Fields("时间") = Now
Form_main.Adodc2.Recordset.Fields("操作") = "出库"
Form_main.Adodc2.Recordset.Fields("名称") = name1
Form_main.Adodc2.Recordset.Fields("数量") = number1
Form_main.Adodc2.Recordset.Fields("位置") = ind
Form_main.Adodc2.Recordset.AddNew
End If
Call display
Debug.Print "control"
9
End Sub
Function FanHuiZhi(f1 As Byte) As Boolean '发送程序,返回真假值
Dim buf As String, dt, TT As Long
Dim s_inf(4) As Byte
dt = 100
buf = ""
TT = GetTickCount
s_inf(0) = 35 '35="#"
s_inf(1) = f1
If f1 = 2 Then '2表示回原点
s_inf(2) = 0
s_inf(3) = 0
Else
s_inf(2) = (ind - 1) Mod 5 '左右(0-4)
s_inf(3) = Int((ind - 1) / 5) '上下(0-3)
End If
s_inf(4) = 13 '13=回车键
Form_main.MSComm1.Output = s_inf() '向PLC发命令
Do
buf = buf & Form_main.MSComm1.Input '接受PLC回函
Loop Until InStr(1, buf, "#") > 0 Or GetTickCount - TT >= dt '前一条语句等待收到完毕字符"#",后一条计时间
If InStr(1, buf, "#") > 0 Then '接受了PLC回函 则。。。。。。
' dt = 100000
' Do
' buf = buf & Form_main.MSComm1.Input '接受PLC回函
' Loop Until InStr(1, buf, "A") > 0 Or GetTickCount - TT >= dt '前一条语句等待收到完毕字符"#",后一条计时间
' If InStr(1, buf, "A") > 0 Then '接受了PLC回函 则。。。。。。
FanHuiZhi = True
' name1 = "成功"
' Else
' FanHuiZhi = False
'End If
Else
FanHuiZhi = False
End If
Debug.Print "fanhuizhi"
End Function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -