This repository has been archived on 2025-11-27. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
2024-03-11 16:34:21 +08:00

936 lines
36 KiB
VB.net
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Imports System.Text
Imports System.Threading
Imports Microsoft.VisualBasic.Devices
Imports UTS_Core.DebugLog
Imports UTS_Core.UTSModule
Imports UTS_Core.UTSModule.Station
Imports UTS_Core.UTSModule.Test.Controls
Imports UTS_Core.UTSModule.Test.StatusMonitor
Imports UTS_Core.UTSModule.Test.StatusMonitor.DatabaseStatusMonitor
Imports UTS_Core.UTSModule.Test.StatusMonitor.StationEditStatusMonitor
#Const BM_ITM53 = 0
#Const ZQ_Mars = 1
#If ZQ_Mars Then
#Const ZQ_Mars_P1 = 1
#Const ZQ_Mars_P2 = 1
#Const ZQ_Mars_P3 = 0
#Const ZQ_Phobos_T1 = 0
#Const ZQ_Phobos_T2 = 0
#Const ZQ_Mars_SELECT = ZQ_Mars_P1
#End If
#If BM_ITM53 Then
#Const BM_ITM53_P1 = 1
#Const BM_ITM53_P2 = 1
#Const BM_ITM53_P3 = 1
#Const BM_ITM53_SELECT = BM_ITM53_P1
#End If
Public Class FrmMain
Implements IProcessStation
Implements IProductionLine
Private _utsApp As UtsAppForm
Private _DefaultTestPage As Integer
Private _DefaultPlanPage As Integer
Public Event StationRelease(station As ProcessStation) '项目发布事件
#Region "网络检测模块"
Enum NetWorkStatusEnum
Connected
UnConnected
End Enum
Private _networkStatus As NetWorkStatusEnum = NetWorkStatusEnum.Connected
''' <summary>
''' 根据网络状态修改页面提示
''' </summary>
''' <param name="netStatus"></param>
Private Sub UpdateNetWorkStatus(netStatus As NetWorkStatusEnum)
If StuMain.InvokeRequired Then '判断是否需要开委托
StuMain.Invoke(New Action(Of NetWorkStatusEnum)(AddressOf UpdateNetWorkStatus), New Object() {netStatus})
Return
End If
If netStatus = NetWorkStatusEnum.Connected Then
TssLblNetWorkStatus.Image = ImgMainStatus.Images("网络-绿色64x64.png")
TssLblNetWorkStatus.ToolTipText = $"网络已连接"
ApplicationLog.WriteInfoLog("网络连接状态变更,网络已连接。")
Else
TssLblNetWorkStatus.Image = ImgMainStatus.Images("网络-红色64x64.png")
TssLblNetWorkStatus.ToolTipText = $"网络未连接"
ApplicationLog.WriteWarningLog("网络连接状态变更,网络未连接。")
End If
End Sub
''' <summary>
''' 网络状态变化修改处理事件
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub NetworkAvailabilityChanged(sender As Object, e As NetworkAvailableEventArgs)
If e.IsNetworkAvailable Then
_networkStatus = NetWorkStatusEnum.Connected
Else
_networkStatus = NetWorkStatusEnum.UnConnected
End If
UpdateNetWorkStatus(_networkStatus)
End Sub
''' <summary>
''' 开始监听网络状态
''' </summary>
Private Sub StartMonitorNetworkStatus()
'网络监控
Dim netStatus As New Network
If netStatus.IsAvailable Then
_networkStatus = NetWorkStatusEnum.Connected
Else
_networkStatus = NetWorkStatusEnum.UnConnected
End If
UpdateNetWorkStatus(_networkStatus) '刷新界面网络状态提示
AddHandler netStatus.NetworkAvailabilityChanged, AddressOf NetworkAvailabilityChanged
End Sub
#End Region
#Region "项目站信息修改监测模块"
Private Sub UpdateStationEditStatus(status As StationEditStatusEnum)
If StuMain.InvokeRequired Then '判断是否需要开委托
StuMain.Invoke(New Action(Of StationEditStatusEnum)(AddressOf UpdateStationEditStatus), New Object() {status})
Return
End If
Select Case status
Case StationEditStatusEnum.None
TssLblEditStatus.Image = ImgMainStatus.Images("编辑保存-绿色64x64.png")
TssLblEditStatus.ToolTipText = $"测试流程未修改"
ApplicationLog.WriteInfoLog("测试流程编辑状态变更,未修改。")
Case StationEditStatusEnum.Changed
TssLblEditStatus.Image = ImgMainStatus.Images("编辑保存-红色64x64.png")
TssLblEditStatus.ToolTipText = $"测试流程已修改"
ApplicationLog.WriteInfoLog("测试流程编辑状态变更,已修改。")
Case StationEditStatusEnum.Saved
TssLblEditStatus.Image = ImgMainStatus.Images("编辑保存-绿色64x64.png")
TssLblEditStatus.ToolTipText = $"测试流程已保存"
ApplicationLog.WriteInfoLog("测试流程编辑状态变更,已保存。")
Case Else
Console.WriteLine($"测试流程编辑状态变更,未知状态:{status}。")
ApplicationLog.WriteErrorLog($"测试流程编辑状态变更,未知状态:{status}。")
End Select
End Sub
Private Sub StationEditStatusChanged(sender As Object, e As StationEditStatusChangedEventArgs)
UpdateStationEditStatus(e.Status)
End Sub
Private Sub StartMonitorStationEditStatus()
UpdateStationEditStatus(StationEditStatus)
AddHandler StationEditStatusMonitor.StationEditStatusChanged, AddressOf StationEditStatusChanged
End Sub
#End Region
Private Sub FrmMain_Load(sender As Object, e As EventArgs) Handles Me.Load
ApplicationLog.WriteInfoLog($"{Application.ProductName} {Application.ProductVersion} 运行程序加载中。")
'初始化UTS窗体信息,失败则关闭窗体
If InitializeUtsApp() = False Then Return
ApplicationLog.WriteInfoLog($"服务基础信息:{_utsApp.License.VendorName}-{_utsApp.ServiceGroup}({IIf(_utsApp.ServiceRoles = 0, "C", "S")})-{_utsApp.ServiceAlias}({_utsApp.Register.ServiceIndex})")
InitTabMain() '填充程序可操作页面
'加载上次关闭前页面
ApplicationLog.WriteInfoLog($"PN:{My.Settings.Project} SN:{My.Settings.ProcessStation} 站位信息加载中。")
_utsApp.LoadStation(My.Settings.Project, My.Settings.ProcessStation)
ApplicationLog.WriteInfoLog("站位信息加载完成。")
'初始化窗体页面
InitializeForm()
ApplicationLog.WriteInfoLog("运行程序加载完成。")
End Sub
#Region "数据库同步状态检测模块"
Private Sub UpdateDatabaseStatus(dbStatus As DatabaseSyncStatusEnum)
If StuMain.InvokeRequired Then '判断是否需要开委托
StuMain.Invoke(New Action(Of DatabaseSyncStatusEnum)(AddressOf UpdateDatabaseStatus), New Object() {dbStatus})
Return
End If
Select Case dbStatus
Case DatabaseSyncStatusEnum.Unknown
TssLblDatabaseStatus.Image = ImgMainStatus.Images("数据同步-灰色64x64.png")
TssLblDatabaseStatus.ToolTipText = $"数据库同步信息未知"
ApplicationLog.WriteWarningLog("数据库同步状态变更,未知。")
Case DatabaseSyncStatusEnum.Completed
TssLblDatabaseStatus.Image = ImgMainStatus.Images("数据同步-绿色64x64.png")
TssLblDatabaseStatus.ToolTipText = $"数据库已同步"
ApplicationLog.WriteInfoLog("数据库同步状态变更,已同步。")
Case DatabaseSyncStatusEnum.UnCompleted
TssLblDatabaseStatus.Image = ImgMainStatus.Images("数据同步-红色64x64.png")
TssLblDatabaseStatus.ToolTipText = $"数据库未同步"
ApplicationLog.WriteWarningLog("数据库同步状态变更,未同步。")
Case Else
Console.WriteLine($"数据库同步状态变更,未知类型:{dbStatus}")
ApplicationLog.WriteErrorLog($"数据库同步状态变更,未知类型:{dbStatus}。")
End Select
End Sub
''' <summary>
''' 数据库同步状态修改处理事件
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub DatabaseStatusChanged(sender As Object, e As DatabaseStatusChangedEventArgs)
UpdateDatabaseStatus(e.Status)
End Sub
''' <summary>
''' 开始监控数据库状态
''' </summary>
Private Sub StartMonitorDatabaseStatus()
UpdateDatabaseStatus(DatabaseSyncStatus)
AddHandler DatabaseStatusMonitor.DatabaseSyncStatusChanged, AddressOf DatabaseStatusChanged
End Sub
#End Region
#Region "更新数据库显示模块"
''' <summary>
''' 更新数据库状态
''' </summary>
''' <param name="dbStatus"></param>
Private Sub UpdateDBStatus(dbStatus As Integer)
If StuMain.InvokeRequired Then '判断是否需要开委托
StuMain.Invoke(New Action(Of Integer)(AddressOf UpdateDBStatus), New Object() {dbStatus})
Return
End If
Select Case dbStatus
Case 0
TslblDbStatus.Image = ImgMainStatus.Images("数据库-红色64x64.png")
TslblDbStatus.ToolTipText = $"数据库连接异常"
ApplicationLog.WriteWarningLog($"数据库状态变更,数据库连接异常。")
Case 1
TslblDbStatus.Image = ImgMainStatus.Images("数据库-绿色64x64.png")
TslblDbStatus.ToolTipText = $"数据库连接正常"
ApplicationLog.WriteInfoLog($"数据库状态变更,数据库连接正常。")
Case Else
TslblDbStatus.Image = ImgMainStatus.Images("数据库-灰色64x64.png")
TslblDbStatus.ToolTipText = $"数据库连接未知"
ApplicationLog.WriteErrorLog($"数据库状态变更,数据库连接未知。")
End Select
End Sub
''' <summary>
''' 更新Ftp连接状态
''' </summary>
''' <param name="ftpStatus"></param>
Private Sub UpdateFtpStatus(ftpStatus As Integer)
If StuMain.InvokeRequired Then '判断是否需要开委托
StuMain.Invoke(New Action(Of Integer)(AddressOf UpdateFtpStatus), New Object() {ftpStatus})
Return
End If
Select Case ftpStatus
Case 0
TslblFtpStatus.Image = ImgMainStatus.Images("FTP-红色64x64.png")
TslblFtpStatus.ToolTipText = "Ftp连接异常"
ApplicationLog.WriteWarningLog($"Ftp状态变更,Ftp连接异常。")
Case 1
TslblFtpStatus.Image = ImgMainStatus.Images("FTP-绿色64x64.png")
TslblFtpStatus.ToolTipText = $"Ftp连接正常"
ApplicationLog.WriteInfoLog($"Ftp状态变更,Ftp连接正常。")
Case Else
TslblFtpStatus.Image = ImgMainStatus.Images("FTP-灰色64x64.png")
TslblFtpStatus.ToolTipText = "Ftp连接未知"
ApplicationLog.WriteErrorLog($"Ftp状态变更,Ftp连接未知。")
End Select
End Sub
''' <summary>
''' 更新同步时间
''' </summary>
''' <param name="txt"></param>
Private Sub UpdateSyncTime(txt As String)
If StuMain.InvokeRequired Then '判断是否需要开委托
StuMain.Invoke(New Action(Of String)(AddressOf UpdateSyncTime), New Object() {txt})
Return
End If
If String.IsNullOrEmpty(txt) Then
TssLblDatabaseStatus.Text = "未知"
ApplicationLog.WriteWarningLog($"数据库同步时间变更,未知的同步时间。")
Else
TssLblDatabaseStatus.Text = txt
ApplicationLog.WriteInfoLog($"数据库同步时间变更,最新时间:{txt}。")
End If
End Sub
''' <summary>
''' 更新网上邻居
''' </summary>
''' <param name="txt"></param>
Private Sub UpdateNetworkNeiborhood(txt As String)
If StuMain.InvokeRequired Then '判断是否需要开委托
StuMain.Invoke(New Action(Of String)(AddressOf UpdateNetworkNeiborhood), New Object() {txt})
Return
End If
If String.IsNullOrEmpty(txt) Then
TsLblGroupServices.Text = ""
ApplicationLog.WriteWarningLog($"网上邻居变更,无网上邻居。")
Else
TsLblGroupServices.Text = txt
ApplicationLog.WriteInfoLog($"网上邻居变更,当前组网上邻居:{txt}。")
End If
End Sub
#End Region
#Region "更新时间显示模块"
'Private Sub StartMonitorTimeStatus(state As Object)
' While True
' UpdateTime(Now)
' Thread.Sleep(500)
' End While
'End Sub
''' <summary>
''' 更新时间
''' </summary>
''' <param name="time"></param>
Private Sub UpdateTime(time As DateTime)
If StuMain.InvokeRequired Then '判断是否需要开委托
StuMain.Invoke(New Action(Of DateTime)(AddressOf UpdateTime), New Object() {time})
Return
End If
TsLblTime.Text = $"{time:yyyy-MM-dd HH:mm:ss}"
End Sub
#End Region
Private Function InitializeUtsApp() As Boolean
_utsApp = UtsAppForm.CreateSingleton()
_utsApp.AddStatisticsObserver(Me)
AddHandler _utsApp.DbStatusChanged, AddressOf UpdateDBStatus
AddHandler _utsApp.FtpStatusChanged, AddressOf UpdateFtpStatus
AddHandler _utsApp.SyncTimeChanged, AddressOf UpdateSyncTime
AddHandler _utsApp.ServicesChanged, AddressOf UpdateNetworkNeiborhood
Try
If _utsApp.IsInitialized = False Then
_utsApp.Initialize(ProcessStation.StationTypeEnum.Package) 'Todo:可根据需要限定可选站位
End If
Catch ex As Exception
ApplicationLog.WriteErrorLog($"初始化窗体失败,原因:{ex.Message}。")
MsgBox($"初始化窗体失败,原因:{ex.Message}")
Close()
Return False
End Try
Return True
End Function
Private Sub InitializeForm()
lblServiceID.Text = _utsApp.Register.ServiceIndex.ToString
LblServiceAlias.Text = _utsApp.ServiceAlias.ToString
TsLblService.Text = $"[{IIf(_utsApp.ServiceRoles = 0, "C", "S")}]{_utsApp.License.VendorName}-{_utsApp.ServiceGroup}"
StartMonitorNetworkStatus()
StartMonitorStationEditStatus()
StartMonitorDatabaseStatus()
'定期更新时间
'ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf StartMonitorTimeStatus))
tim_UpdateTime.Start()
End Sub
''' <summary>修改窗体标题</summary>
Private Sub ShowFormTitle(Optional station As ProcessStation = Nothing)
Dim myTitle As String = "AUTS_FunctionTest ( Build: " & Application.ProductVersion
If _utsApp.Account IsNot Nothing Then
myTitle = myTitle & " , 用户 : " & _utsApp.Account.UserName
End If
If station IsNot Nothing AndAlso station.Packet IsNot Nothing Then
myTitle = myTitle & " , 项目 : " & station.ParentProject.Name
myTitle = myTitle & " , 站序 : " & station.ArtworkOrder
myTitle = myTitle & " , 站位 : " & station.Name
myTitle = myTitle & " , 站名 : " & station.Description
myTitle = myTitle & " , 配置文件 : " & station.Packet.FileName
End If
myTitle = myTitle & " )"
Text = myTitle
End Sub
Private Sub InitTabMain()
TabMain.SizeMode = TabSizeMode.Fixed '隐藏TabControl的表头
TabMain.ItemSize = New Size(0, 1)
'根据枚举顺序添加所需页面
' AddProjectFormToTabControl(TabControlEnum.TpProject.ToString(), "Project")
ApplicationLog.WriteInfoLog($"运行程序装载发布页面中。")
AddStationDesignFormToTabControl(TabControlEnum.TpStationDesign.ToString(), "StationDesign")
ApplicationLog.WriteInfoLog($"运行程序装载发布页面完成。")
#If BM_ITM53_P1 Then
ApplicationLog.WriteInfoLog($"运行程序装载编辑页面中。")
AddStationPlanFormToTabControl(TabControlEnum.BM_ITM53_P1_TpStationPlan.ToString(), "StationPlan")
ApplicationLog.WriteInfoLog($"运行程序装载编辑页面完成。")
ApplicationLog.WriteInfoLog($"运行程序装载测试页面中。")
AddStationTestFormToTabControl(TabControlEnum.BM_ITM53_P1_TpStationTest.ToString(), "StationTest")
ApplicationLog.WriteInfoLog($"运行程序装载测试页面完成。")
#If ZQ_Mars_SELECT = BM_ITM53_SELECT Then
TabMain.SelectedIndex = TabControlEnum.TpStationTest
_DefaultTestPage = TabControlEnum.BM_ITM53_P1_TpStationTest
_DefaultPlanPage = TabControlEnum.BM_ITM53_P1_TpStationPlan
#End If
#End If
#If ZQ_Mars_P1 Then
ApplicationLog.WriteInfoLog($"运行程序装载编辑页面中。")
ZQ_Mars_Plan_FormToTabControl(TabControlEnum.ZQ_MARS_P1_TpStationPlan.ToString(), "StationPlan")
ApplicationLog.WriteInfoLog($"运行程序装载编辑页面完成。")
ApplicationLog.WriteInfoLog($"运行程序装载测试页面中。")
ZQ_Mars_Test_FormToTabControl(TabControlEnum.ZQ_MARS_P1_TpStationTest.ToString(), "StationTest")
ApplicationLog.WriteInfoLog($"运行程序装载测试页面完成。")
_DefaultTestPage = TabControlEnum.ZQ_MARS_P1_TpStationTest
_DefaultPlanPage = TabControlEnum.ZQ_MARS_P1_TpStationPlan
#End If
#If ZQ_Mars_P2 Then
ApplicationLog.WriteInfoLog($"运行程序装载编辑页面中。")
ZQ_Mars_Plan_FormToTabControl(TabControlEnum.ZQ_MARS_P2_TpStationPlan.ToString(), "StationPlan")
ApplicationLog.WriteInfoLog($"运行程序装载编辑页面完成。")
ApplicationLog.WriteInfoLog($"运行程序装载测试页面中。")
ZQ_Mars_Test_FormToTabControl(TabControlEnum.ZQ_MARS_P2_TpStationTest.ToString(), "StationTest")
ApplicationLog.WriteInfoLog($"运行程序装载测试页面完成。")
_DefaultTestPage = TabControlEnum.ZQ_MARS_P2_TpStationTest
_DefaultPlanPage = TabControlEnum.ZQ_MARS_P2_TpStationPlan
#End If
#If ZQ_Mars_P3 Then
ApplicationLog.WriteInfoLog($"运行程序装载编辑页面中。")
ZQ_Mars_Plan_FormToTabControl(TabControlEnum.ZQ_MARS_P3_TpStationPlan.ToString(), "StationPlan")
ApplicationLog.WriteInfoLog($"运行程序装载编辑页面完成。")
ApplicationLog.WriteInfoLog($"运行程序装载测试页面中。")
ZQ_Mars_Test_FormToTabControl(TabControlEnum.ZQ_MARS_P3_TpStationTest.ToString(), "StationTest")
ApplicationLog.WriteInfoLog($"运行程序装载测试页面完成。")
_DefaultTestPage = TabControlEnum.ZQ_MARS_P3_TpStationTest
_DefaultPlanPage = TabControlEnum.ZQ_MARS_P3_TpStationPlan
#End If
#If ZQ_Phobos_T1 Then
ApplicationLog.WriteInfoLog($"运行程序装载编辑页面中。")
ZQ_Phobos_Plan_FormToTabControl(TabControlEnum.ZQ_Phobos_T1_TpStationPlan.ToString(), "StationPlan")
ApplicationLog.WriteInfoLog($"运行程序装载编辑页面完成。")
ApplicationLog.WriteInfoLog($"运行程序装载测试页面中。")
ZQ_Phobos_Test_FormToTabControl(TabControlEnum.ZQ_Phobos_T1_TpStationTest.ToString(), "StationTest")
ApplicationLog.WriteInfoLog($"运行程序装载测试页面完成。")
#End If
#If ZQ_Phobos_T2 Then
ApplicationLog.WriteInfoLog($"运行程序装载编辑页面中。")
ZQ_Phobos_Plan_FormToTabControl(TabControlEnum.ZQ_Phobos_T2_TpStationPlan.ToString(), "StationPlan")
ApplicationLog.WriteInfoLog($"运行程序装载编辑页面完成。")
ApplicationLog.WriteInfoLog($"运行程序装载测试页面中。")
ZQ_Phobos_Test_FormToTabControl(TabControlEnum.ZQ_Phobos_T2_TpStationTest.ToString(), "StationTest")
ApplicationLog.WriteInfoLog($"运行程序装载测试页面完成。")
#End If
TabMain.SelectedIndex = _DefaultTestPage
'设置初始页面
End Sub
''' <summary>
''' 添加项目设计窗体到分页控件中
''' </summary>
Private Sub AddStationDesignFormToTabControl(pageName As String, pageText As String)
If TabMain.TabPages.ContainsKey(pageName) Then Return
Dim page As New TabPage With {.Name = pageName, .Text = pageText}
Dim frm As New FrmStationRelease
AddHandler frm.StationRelease, AddressOf Station_Released
frm.ShowForm(page)
TabMain.TabPages.Add(page)
End Sub
Private Sub AddStationPlanFormToTabControl(pageName As String, pageText As String)
If TabMain.TabPages.ContainsKey(pageName) Then Return
Dim page As New TabPage With {.Name = pageName, .Text = pageText}
Dim frm As New BM_ITM53_P1_FrmStationPlan
frm.ShowForm(page)
TabMain.TabPages.Add(page)
End Sub
Private Sub ZQ_Mars_Plan_FormToTabControl(pageName As String, pageText As String)
If TabMain.TabPages.ContainsKey(pageName) Then Return
Dim page As New TabPage With {.Name = pageName, .Text = pageText}
If pageName.ToLower.Contains("p1") Then
Dim frm As New ZQ_Mars_P1_FrmStationPlan
frm.ShowForm(page)
ElseIf pageName.ToLower.Contains("p2") Then
Dim frm As New ZQ_Mars_T2_FrmStationPlan
frm.ShowForm(page)
ElseIf pageName.ToLower.Contains("p3") Then
Dim frm As New ZQ_Mars_P3_FrmStationPlan
frm.ShowForm(page)
End If
TabMain.TabPages.Add(page)
End Sub
Private Sub ZQ_Phobos_Plan_FormToTabControl(pageName As String, pageText As String)
If TabMain.TabPages.ContainsKey(pageName) Then Return
Dim page As New TabPage With {.Name = pageName, .Text = pageText}
If pageName.ToLower.Contains("t1") Then
Dim frm As New ZQ_Phobos_T1_FrmStationPlan
frm.ShowForm(page)
ElseIf pageName.ToLower.Contains("t2") Then
Dim frm As New ZQ_Phobos_T2_FrmStationPlan
frm.ShowForm(page)
ElseIf pageName.ToLower.Contains("t3") Then
'Dim frm As New ZQ_Phobos_T3_FrmStationPlan
'frm.ShowForm(page)
End If
TabMain.TabPages.Add(page)
End Sub
Private Sub AddStationTestFormToTabControl(pageName As String, pageText As String)
If TabMain.TabPages.ContainsKey(pageName) Then Return
Dim page As New TabPage With {.Name = pageName, .Text = pageText}
Dim frm As New BM_ITM53_P1_FrmStationTest
frm.ShowForm(page)
TabMain.TabPages.Add(page)
End Sub
Private Sub ZQ_Mars_Test_FormToTabControl(pageName As String, pageText As String)
If TabMain.TabPages.ContainsKey(pageName) Then Return
Dim page As New TabPage With {.Name = pageName, .Text = pageText}
If pageName.ToLower.Contains("p1") Then
Dim frm As New ZQ_Mars_P1_FrmStationTest
frm.ShowForm(page)
ElseIf pageName.ToLower.Contains("p2") Then
Dim frm As New ZQ_Mars_T2_FrmStationTest
frm.ShowForm(page)
ElseIf pageName.ToLower.Contains("p3") Then
Dim frm As New ZQ_Mars_P3_FrmStationTest
frm.ShowForm(page)
End If
TabMain.TabPages.Add(page)
End Sub
Private Sub ZQ_Phobos_Test_FormToTabControl(pageName As String, pageText As String)
If TabMain.TabPages.ContainsKey(pageName) Then Return
Dim page As New TabPage With {.Name = pageName, .Text = pageText}
If pageName.ToLower.Contains("t1") Then
Dim frm As New ZQ_Phobos_T1_FrmStationTest
frm.ShowForm(page)
ElseIf pageName.ToLower.Contains("t2") Then
Dim frm As New ZQ_Phobos_T2_FrmStationTest
frm.ShowForm(page)
ElseIf pageName.ToLower.Contains("t3") Then
Dim frm As New ZQ_Mars_P3_FrmStationTest
frm.ShowForm(page)
End If
TabMain.TabPages.Add(page)
End Sub
Private Sub TsBtnStationTest_Click(sender As Object, e As EventArgs) Handles TsBtnStationTest.Click
TabMain.SelectedIndex = _DefaultTestPage
End Sub
Private Sub TsBtnStationDesign_Click(sender As Object, e As EventArgs) Handles TsBtnStationDesign.Click
TabMain.SelectedIndex = TabControlEnum.TpStationDesign
End Sub
Private Sub TsBtnStationPlan_Click(sender As Object, e As EventArgs) Handles TsBtnStationPlan.Click
TabMain.SelectedIndex = _DefaultPlanPage
End Sub
Private Sub TabMain_SelectedIndexChanged(sender As Object, e As EventArgs) Handles TabMain.SelectedIndexChanged
Select Case TabMain.SelectedIndex
Case _DefaultTestPage
TsBtnStationTest.BackColor = Color.ForestGreen
TsBtnStationDesign.BackColor = Color.Transparent
TsBtnStationPlan.BackColor = Color.Transparent
TsBtnStationTest.ForeColor = Color.White
TsBtnStationDesign.ForeColor = Color.Black
TsBtnStationPlan.ForeColor = Color.Black
ApplicationLog.WriteInfoLog($"当前页面:测试页面。")
Case TabControlEnum.TpStationDesign
TsBtnStationTest.BackColor = Color.Transparent
TsBtnStationDesign.BackColor = Color.ForestGreen
TsBtnStationPlan.BackColor = Color.Transparent
TsBtnStationTest.ForeColor = Color.Black
TsBtnStationDesign.ForeColor = Color.White
TsBtnStationPlan.ForeColor = Color.Black
ApplicationLog.WriteInfoLog($"当前页面:发布页面。")
Case _DefaultPlanPage
TsBtnStationTest.BackColor = Color.Transparent
TsBtnStationDesign.BackColor = Color.Transparent
TsBtnStationPlan.BackColor = Color.ForestGreen
TsBtnStationTest.ForeColor = Color.Black
TsBtnStationDesign.ForeColor = Color.Black
TsBtnStationPlan.ForeColor = Color.White
ApplicationLog.WriteInfoLog($"当前页面:编辑页面。")
End Select
End Sub
Private Sub TsBtnEditLock_Click(sender As Object, e As EventArgs) Handles TsBtnEditLock.Click
Static failCount As Integer = 1
If TsBtnStationPlan.Visible = False Then
If _utsApp.ProcessStation Is Nothing Then
UtsMsgBox.ShowDialog("请选择项目后再解锁编辑功能。")
Return
End If
Dim pwd As String = UtsInputBox.ShowDialog("请输入编辑密码", $"第{failCount}次编辑解锁", "", True)
If pwd Is Nothing Then Return
If String.Compare(pwd, _utsApp.ProcessStation.Packet.EditPwd, True) = 0 Then
ApplicationLog.WriteInfoLog($"编辑页面已解锁。")
failCount = 0
TsBtnEditLock.Text = "编辑加锁"
TsBtnStationPlan.Visible = True
TabMain.SelectedIndex = _DefaultPlanPage
Else
failCount += 1
ApplicationLog.WriteWarningLog($"编辑页面第[{failCount}]次解锁失败。")
If failCount > 3 Then
ApplicationLog.WriteFatalLog($"编辑页面第[{failCount}]次解锁失败,程序关闭。")
Application.Exit()
End If
End If
Else
If UtsMsgBox.ShowDialog("为防止误操作,请确定关闭编辑功能。", UtsMsgBox.UtsMsgBoxTypeEnum.YesNo) = DialogResult.OK Then
ApplicationLog.WriteInfoLog($"编辑页面已加锁。")
TsBtnEditLock.Text = "编辑解锁"
TsBtnStationPlan.Visible = False
TabMain.SelectedIndex = _DefaultTestPage
End If
End If
End Sub
Private Sub TsBtnReleaseLock_Click(sender As Object, e As EventArgs) Handles TsBtnReleaseLock.Click
Static failCount As Integer = 1
Static isLock As Boolean = True
If TsBtnStationDesign.Visible = False Then
If _utsApp.ProcessStation Is Nothing Then
UtsMsgBox.ShowDialog("请选择项目后再发布编辑功能。")
Return
End If
Dim pwd As String = UtsInputBox.ShowDialog("请输入发布密码", $"第{failCount}次发布解锁", "", True)
If pwd Is Nothing Then Return
If String.Compare(pwd, _utsApp.ProcessStation.Packet.ReleasePwd, True) = 0 Then
ApplicationLog.WriteInfoLog($"发布页面已解锁。")
failCount = 0
isLock = False
TsBtnReleaseLock.Text = "发布加锁"
TsBtnStationDesign.Visible = True
TabMain.SelectedIndex = TabControlEnum.TpStationDesign
Else
failCount += 1
ApplicationLog.WriteWarningLog($"发布页面第[{failCount}]次解锁失败。")
If failCount > 3 Then
ApplicationLog.WriteFatalLog($"发布页面第[{failCount}]次解锁失败,程序关闭。")
Application.Exit()
End If
End If
Else
If UtsMsgBox.ShowDialog("为防止误操作,请确定关闭发布功能。", UtsMsgBox.UtsMsgBoxTypeEnum.YesNo) = DialogResult.OK Then
ApplicationLog.WriteInfoLog($"发布页面已加锁。")
isLock = True
TsBtnReleaseLock.Text = "发布解锁"
TsBtnStationDesign.Visible = False
TabMain.SelectedIndex = _DefaultTestPage
End If
End If
End Sub
Private Sub TsBtnOpenStation_Click(sender As Object, e As EventArgs) Handles TsBtnOpenStation.Click
Try
_utsApp.ChangeStation()
Catch ex As Exception
MsgBox($"ChangeStation Error:{ex.Message}")
End Try
End Sub
Private Sub Station_Released(station As ProcessStation)
ApplicationLog.WriteInfoLog($"主页面站位发布中,TP:{station.Packet.Name}")
ShowFormTitle(station)
RaiseEvent StationRelease(station)
ApplicationLog.WriteInfoLog($"主页面站位发布完成。")
End Sub
Public Sub Station_Changed() Implements IProcessStation.StationChanged
ApplicationLog.WriteInfoLog($"主页面站位变更中PN{_utsApp.ProcessStation.ParentProject.Name} - SN:{_utsApp.ProcessStation.Name} - TP:{_utsApp.ProcessStation.Packet.Name}。")
My.Settings.Project = _utsApp.ProcessStation.ParentProject.Name
My.Settings.ProcessStation = _utsApp.ProcessStation.Name
'项目站包路径
Dim packetName As String = _utsApp.ProcessStation.Packet.Name
UtsPath.StationPacketDirPath = UtsPath.GetStationPacketDirPath(packetName)
UtsPath.StationPacketInfoPath = UtsPath.GetStationPacketInfoPath(packetName)
UtsPath.StationPacketResourceDirPath = UtsPath.GetStationPacketResourceDirPath(packetName)
UtsPath.StationPacketTestPlanDirPath = UtsPath.GetStationPacketTestPlanDirPath(packetName)
TsBtnStationPlan.Visible = False
TsBtnEditLock.Text = "编辑解锁"
TsBtnStationDesign.Visible = False
TsBtnReleaseLock.Text = "发布解锁"
#If ZQ_Mars Then
If _utsApp.ProcessStation.Name.ToLower.Trim.Equals("p1") Then
#If ZQ_Mars_P1 Then
'TabMain.SelectedIndex = TabControlEnum.ZQ_MARS_P3_TpStationTest
_DefaultTestPage = TabControlEnum.ZQ_MARS_P1_TpStationTest
_DefaultPlanPage = TabControlEnum.ZQ_MARS_P1_TpStationPlan
#End If
ElseIf _utsApp.ProcessStation.Name.ToLower.Trim.Equals("p2") Then
#If ZQ_Mars_P2 Then
'TabMain.SelectedIndex = TabControlEnum.ZQ_MARS_P3_TpStationTest
_DefaultTestPage = TabControlEnum.ZQ_MARS_P2_TpStationTest
_DefaultPlanPage = TabControlEnum.ZQ_MARS_P2_TpStationPlan
#End If
ElseIf _utsApp.ProcessStation.Name.ToLower.Trim.Equals("p3") Then
_DefaultTestPage = TabControlEnum.TpStationDesign
#If ZQ_Mars_P3 Then
'TabMain.SelectedIndex = TabControlEnum.ZQ_MARS_P3_TpStationTest
_DefaultTestPage = TabControlEnum.ZQ_MARS_P3_TpStationTest
_DefaultPlanPage = TabControlEnum.ZQ_MARS_P3_TpStationPlan
#End If
ElseIf _utsApp.ProcessStation.Name.ToLower.Trim.Equals("p3") Then
#If ZQ_Phobos_T1 Then
'TabMain.SelectedIndex = TabControlEnum.ZQ_MARS_P3_TpStationTest
_DefaultTestPage = TabControlEnum.ZQ_Phobos_T1_TpStationTest
_DefaultPlanPage = TabControlEnum.ZQ_Phobos_T1_TpStationPlan
#End If
ElseIf _utsApp.ProcessStation.Name.ToLower.Trim.Equals("p3") Then
#If ZQ_Phobos_T2 Then
'TabMain.SelectedIndex = TabControlEnum.ZQ_MARS_P3_TpStationTest
_DefaultTestPage = TabControlEnum.ZQ_Phobos_T2_TpStationTest
_DefaultPlanPage = TabControlEnum.ZQ_Phobos_T2_TpStationPlan
#End If
End If
#End If
#If BM_ITM53 Then
If _utsApp.ProcessStation.Name.ToLower.Trim.Equals("p1") Then
#If BM_ITM53_P1 Then
'TabMain.SelectedIndex = TabControlEnum.BM_ITM53_P1_TpStationTest
_DefaultTestPage = TabControlEnum.BM_ITM53_P1_TpStationTest
_DefaultPlanPage = TabControlEnum.BM_ITM53_P1_TpStationPlan
#End If
ElseIf _utsApp.ProcessStation.Name.ToLower.Trim.Equals("p2") Then
#If BM_ITM53_P2 Then
'TabMain.SelectedIndex = TabControlEnum.BM_ITM53_P2_TpStationTest
_DefaultTestPage = TabControlEnum.BM_ITM53_P2_TpStationTest
_DefaultPlanPage = TabControlEnum.BM_ITM53_P2_TpStationPlan
#End If
ElseIf _utsApp.ProcessStation.Name.ToLower.Trim.Equals("p3") Then
#If BM_ITM53_P3 Then
'TabMain.SelectedIndex = TabControlEnum.ZQ_MARS_P3_TpStationTest
_DefaultTestPage = TabControlEnum.BM_ITM53_P3_TpStationTest
_DefaultPlanPage = TabControlEnum.BM_ITM53_P3_TpStationPlan
#End If
End If
#End If
TabMain.SelectedIndex = _DefaultTestPage
ShowFormTitle(_utsApp.ProcessStation)
ApplicationLog.WriteInfoLog($"主页面站位变更完成。")
End Sub
Public Sub ProductionLineChanged() Implements IProductionLine.ProductionLineChanged
ApplicationLog.WriteInfoLog($"主页面生产线变更中。")
ApplicationLog.WriteInfoLog($"主页面生产线变更完成。")
End Sub
''' <summary>
''' 分页控件包含的页面
''' </summary>
Enum TabControlEnum
''' <summary>发布页面</summary>
TpStationDesign
#If BM_ITM53 Then
''' <summary>编辑页面</summary>
BM_ITM53_P1_TpStationPlan
''' <summary>测试页面</summary>
BM_ITM53_P1_TpStationTest
#End If
#If ZQ_Mars Then
#If ZQ_Mars_P1 Then
''' <summary>ZQ编辑页面</summary>
ZQ_MARS_P1_TpStationPlan
''' <summary>ZQ测试页面</summary>
ZQ_MARS_P1_TpStationTest
#End If
#If ZQ_Mars_P2 Then
''' <summary>ZQ编辑页面</summary>
ZQ_MARS_P2_TpStationPlan
''' <summary>ZQ测试页面</summary>
ZQ_MARS_P2_TpStationTest
#End If
#If ZQ_Mars_P3 Then
''' <summary>ZQ编辑页面</summary>
ZQ_MARS_P3_TpStationPlan
''' <summary>ZQ测试页面</summary>
ZQ_MARS_P3_TpStationTest
#End If
#If ZQ_Phobos_T1 Then
''' <summary>ZQ编辑页面</summary>
ZQ_Phobos_T1_TpStationPlan
''' <summary>ZQ测试页面</summary>
ZQ_Phobos_T1_TpStationTest
#End If
#If ZQ_Phobos_T2 Then
''' <summary>ZQ编辑页面</summary>
ZQ_Phobos_T2_TpStationPlan
''' <summary>ZQ测试页面</summary>
ZQ_Phobos_T2_TpStationTest
#End If
#End If
''' <summary>设置页面(未填充)</summary>
TpSettings
''' <summary>帮助页面(未填充)</summary>
TpHelp
''' <summary>关于页面(未填充)</summary>
TpAbout
End Enum
Private Sub MsiAbout_Click(sender As Object, e As EventArgs) Handles MsiAbout.Click
End Sub
Private Sub FrmMain_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
ApplicationLog.WriteInfoLog($"{Application.ProductName} {Application.ProductVersion} 运行程序关闭中。")
tim_UpdateTime.Stop()
Process.GetCurrentProcess().Kill()
ApplicationLog.WriteInfoLog($"运行程序已关闭。")
End Sub
Private Sub tim_UpdateTime_Tick(sender As Object, e As EventArgs) Handles tim_UpdateTime.Tick
UpdateTime(Now)
End Sub
End Class