Browse Source

1.修改topView ui
2.添加cycle 跑动画功能

lixiang 1 year ago
parent
commit
9231cab4b9

+ 39 - 0
Venus/Venus_MainPages/Converters/SystemStateConverter.cs

@@ -0,0 +1,39 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Data;
+using System.Windows.Media;
+using Venus_Core;
+
+namespace Venus_MainPages.Converters
+{
+    internal class SystemStateConverter : IValueConverter
+    {
+        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
+        {
+            RtState currentState = (RtState)Enum.Parse(typeof(RtState), value.ToString());
+            switch (currentState)
+            {
+                case RtState.Init:
+                    return new SolidColorBrush(Colors.Yellow);
+
+                case RtState.Idle:
+                    return new SolidColorBrush(Colors.WhiteSmoke);
+
+                case RtState.Error:
+                    return new SolidColorBrush(Colors.Red);
+
+                default:
+                    return new SolidColorBrush(Colors.Lime);
+
+            }
+        }
+
+        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
+        {
+            return null;
+        }
+    }
+}

+ 1 - 0
Venus/Venus_MainPages/Venus_MainPages.csproj

@@ -117,6 +117,7 @@
     <Compile Include="Converters\LLStateConverter.cs" />
     <Compile Include="Converters\MultiBindingConverter.cs" />
     <Compile Include="Converters\PMStateConverter.cs" />
+    <Compile Include="Converters\SystemStateConverter.cs" />
     <Compile Include="Converters\TMStateConverter.cs" />
     <Compile Include="MainPageModule.cs" />
     <Compile Include="PMS\IUiRecipeManager.cs" />

+ 112 - 5
Venus/Venus_MainPages/ViewModels/TMViewModel.cs

@@ -4,6 +4,7 @@ using MECF.Framework.Common.DataCenter;
 using MECF.Framework.Common.Equipment;
 using MECF.Framework.Common.OperationCenter;
 using MECF.Framework.Common.Schedulers;
+using Microsoft.VisualBasic;
 using OpenSEMI.ClientBase;
 using Prism.Commands;
 using Prism.Mvvm;
@@ -98,6 +99,18 @@ namespace Venus_MainPages.ViewModels
 
         private List<TMModule> m_TMModules= new List<TMModule>();
 
+        private bool m_CycleEnable;
+        private string m_OriginalCycleSelectedItem;
+        private string m_ToCycleSelectedItem;
+        private bool m_PMAIsCycle;
+        private bool m_PMBIsCycle;
+        private bool m_PMCIsCycle;
+        private bool m_PMDIsCycle;
+
+        private int m_CycleCount;
+
+
+
         #endregion
 
         #region 属性
@@ -658,6 +671,47 @@ namespace Venus_MainPages.ViewModels
             get { return m_TMModules; }
             set { SetProperty(ref m_TMModules, value); }
         }
+        public bool CycleEnable
+        {
+            get { return m_CycleEnable; }
+            set { SetProperty(ref m_CycleEnable, value); }
+        }
+        public string OriginalCycleSelectedItem
+        {
+            get { return m_OriginalCycleSelectedItem; }
+            set { SetProperty(ref m_OriginalCycleSelectedItem, value); }
+        }
+        public string ToCycleSelectedItem
+        {
+            get { return m_ToCycleSelectedItem; }
+            set { SetProperty(ref m_ToCycleSelectedItem, value); }
+        }
+        public bool PMAIsCycle
+        {
+            get { return m_PMAIsCycle; }
+            set { SetProperty(ref m_PMAIsCycle, value); }
+        }
+        public bool PMBIsCycle
+        {
+            get { return m_PMBIsCycle; }
+            set { SetProperty(ref m_PMBIsCycle, value); }
+        }
+        public bool PMCIsCycle
+        {
+            get { return m_PMCIsCycle; }
+            set { SetProperty(ref m_PMCIsCycle, value); }
+        }
+        public bool PMDIsCycle
+        {
+            get { return m_PMDIsCycle; }
+            set { SetProperty(ref m_PMDIsCycle, value); }
+        }
+        public int CycleCount
+        {
+            get { return m_CycleCount; }
+            set { SetProperty(ref m_CycleCount, value); }
+        }
+        
         #endregion
 
         #region 命令
@@ -711,7 +765,16 @@ namespace Venus_MainPages.ViewModels
         private DelegateCommand _StartCycleCommand;
         public DelegateCommand StartCycleCommand =>
             _StartCycleCommand ?? (_StartCycleCommand = new DelegateCommand(OnStartCycle));
-        
+
+        private DelegateCommand _StopCycleCommand;
+
+        public DelegateCommand StopCycleCommand =>
+            _StopCycleCommand ?? (_StopCycleCommand = new DelegateCommand(OnStopCycle));
+
+        private DelegateCommand _SystemHomeCommand;
+
+        public DelegateCommand SystemHomeCommand =>
+            _SystemHomeCommand ?? (_SystemHomeCommand = new DelegateCommand(OnSystemHome));
         #endregion
 
         #region 构造函数
@@ -1022,13 +1085,57 @@ namespace Venus_MainPages.ViewModels
         }
         private void OnStartCycle()
         {
+            if (CycleEnable == false)
+            {
+                return;
+            }
             List<string> strings = new List<string>();
-            strings.Add("LLA");
-            strings.Add("PMA");
-            strings.Add("LLB");
+            if (OriginalCycleSelectedItem != "")
+            {
+                strings.Add(OriginalCycleSelectedItem);
+            }
+            else
+            {
+                return;
+            }
+           
+            if (PMAIsCycle==true)
+            {
+                strings.Add("PMA");
+            }
+            if (PMBIsCycle == true)
+            {
+                strings.Add("PMB");
+            }
+            if (PMCIsCycle == true)
+            {
+                strings.Add("PMC");
+            }
+            if (PMDIsCycle == true)
+            {
+                strings.Add("PMD");
+            }
+            if (ToCycleSelectedItem != "")
+            {
+                strings.Add(ToCycleSelectedItem);
+            }
+            else
+            {
+                return;
+            }
+            InvokeClient.Instance.Service.DoOperation("TMCycle.Start", strings.ToArray(),CycleCount);
+
+        }
 
+        private void OnStopCycle()
+        {
+
+            InvokeClient.Instance.Service.DoOperation("TMCycle.Abort");
 
-            InvokeClient.Instance.Service.DoOperation($"TMCycle", strings.ToArray(),5);
+        }
+        private void OnSystemHome()
+        { 
+            InvokeClient.Instance.Service.DoOperation("System.Home");
 
         }
         #endregion

+ 6 - 0
Venus/Venus_MainPages/ViewModels/TopViewModel.cs

@@ -185,6 +185,12 @@ namespace Venus_MainPages.ViewModels
             m_RtDataKeys.Add("TM.FsmState");
             m_RtDataKeys.Add("LLA.FsmState");
             m_RtDataKeys.Add("LLB.FsmState");
+
+
+            m_RtDataKeys.Add("EFEM.FsmState");
+
+            m_RtDataKeys.Add("SYSTEM.FsmState");
+
             m_RtDataKeys.Add("PMA.IsSlitDoorClosed");
             m_RtDataKeys.Add($"{ModuleName}.SignalTower.DeviceData");
         }

+ 1 - 1
Venus/Venus_MainPages/Views/OperationOverView.xaml

@@ -40,7 +40,7 @@
                     <userControls:TMChamber x:Name="PMC" Canvas.Top="-38"  Canvas.Left="588" Width="140" Height="140" RotateTransformValue="30"   DoorIsOpen="{Binding RtDataValues[PMC.IsSlitDoorClosed],Converter={StaticResource BoolToBool}}" RobotWafer="{Binding PMCWafer}" />
                     <userControls:TMChamber x:Name="PMD" Canvas.Top="160"  Canvas.Left="788" Width="140" Height="140" RotateTransformValue="90"   DoorIsOpen="{Binding RtDataValues[PMD.IsSlitDoorClosed],Converter={StaticResource BoolToBool}}" RobotWafer="{Binding PMDWafer}" />
 
-                    <userControls:EFEM Width="600" Height="300" Canvas.Left="200" Canvas.Top="462"/>
+                    <userControls:EFEM Width="600" Height="300" Canvas.Left="200" Canvas.Top="474"/>
 
                     <customControls:WaferRobotControl OriginT="PMA"    Canvas.Left="400" Canvas.Top="460"   Width="200" Height="300"    RobotTAction="{Binding Robot1TAction}" RobotXAction="{Binding Robot1XAction}" RobotWafer="{Binding BladeAWafer}"/>
                     <customControls:WaferRobotControl OriginT="PMD"    Canvas.Left="400" Canvas.Top="460"   Width="200" Height="300"    RobotTAction="{Binding Robot2TAction}" RobotXAction="{Binding Robot2XAction}"  RobotWafer="{Binding BladeBWafer}"/>

+ 12 - 11
Venus/Venus_MainPages/Views/TMView.xaml

@@ -245,10 +245,10 @@
                             <ColumnDefinition/>
                         </Grid.ColumnDefinitions>
                         <TextBlock Text="TM Cycle Enable"  Grid.ColumnSpan="2" Padding="0,5,0,5" Background="#D0D8E8" />
-                        <CheckBox  Grid.Column="2" Margin="5" Grid.ColumnSpan="4"/>
+                        <CheckBox  Grid.Column="2" Margin="5" Grid.ColumnSpan="4" IsChecked="{Binding CycleEnable}"/>
                         <TextBlock Text="TM Cycle Count"             Grid.Row="1" Grid.ColumnSpan="2" Padding="0,5,0,5" Background="#D0D8E8"/>
                         <TextBlock Text="TM Cycle Count Remained"    Grid.Row="1" Grid.Column="3" Grid.ColumnSpan="2" Padding="0,5,0,5" Background="#D0D8E8"/>
-                        <TextBox Grid.Row="1" Grid.Column="2" BorderThickness="0" VerticalContentAlignment="Center" Padding="36,0,0,0"/>
+                        <TextBox Grid.Row="1" Grid.Column="2" BorderThickness="0" VerticalContentAlignment="Center" Padding="36,0,0,0" Text="{Binding CycleCount}"/>
                     </Grid>
                 </Border>
             </Grid>
@@ -284,19 +284,20 @@
 
                         <StackPanel  Orientation="Horizontal" HorizontalAlignment="Center">
                             <TextBlock Text="Origin: " Padding="0,8,0,0"/>
-                            <ComboBox Width="100" Margin="0,5,5,0" ItemsSource="{Binding OriginalCycle}"/>
+                            <ComboBox Width="100" Margin="0,5,5,0" ItemsSource="{Binding OriginalCycle}" SelectedItem="{Binding OriginalCycleSelectedItem}"/>
                             <TextBlock Text="To: "     Padding="10,8,0,0"/>
-                            <ComboBox Width="100" Margin="0,5,5,0" ItemsSource="{Binding ToCycle}"/>
+                            <ComboBox Width="100" Margin="0,5,5,0" ItemsSource="{Binding ToCycle}" SelectedItem="{Binding ToCycleSelectedItem}"/>
                         </StackPanel>
                         <StackPanel  Grid.Row="1" Orientation="Horizontal" HorizontalAlignment="Center">
-                            <CheckBox Content="PMA" Margin="0,10,10,10" Visibility="{Binding PMAIsInstalled,Converter={StaticResource bool2VisibilityConverter}}"/>
-                            <CheckBox Content="PMB" Margin="0,10,10,10" Visibility="{Binding PMBIsInstalled,Converter={StaticResource bool2VisibilityConverter}}"/>
-                            <CheckBox Content="PMC" Margin="0,10,10,10" Visibility="{Binding PMCIsInstalled,Converter={StaticResource bool2VisibilityConverter}}"/>
-                            <CheckBox Content="PMD" Margin="0,10,10,10" Visibility="{Binding PMDIsInstalled,Converter={StaticResource bool2VisibilityConverter}}"/>
+                            <CheckBox Content="PMA" Margin="0,10,10,10" Visibility="{Binding PMAIsInstalled,Converter={StaticResource bool2VisibilityConverter}}" IsChecked="{Binding PMAIsCycle}"/>
+                            <CheckBox Content="PMB" Margin="0,10,10,10" Visibility="{Binding PMBIsInstalled,Converter={StaticResource bool2VisibilityConverter}}" IsChecked="{Binding PMBIsCycle}"/>
+                            <CheckBox Content="PMC" Margin="0,10,10,10" Visibility="{Binding PMCIsInstalled,Converter={StaticResource bool2VisibilityConverter}}" IsChecked="{Binding PMCIsCycle}"/>
+                            <CheckBox Content="PMD" Margin="0,10,10,10" Visibility="{Binding PMDIsInstalled,Converter={StaticResource bool2VisibilityConverter}}" IsChecked="{Binding PMDIsCycle}"/>
                         </StackPanel>
                         <StackPanel Orientation="Horizontal" Grid.Row="2" HorizontalAlignment="Center">
+                            <Button Content="Home"  Margin="0,0,10,10"   Width="80" Height="25" Command="{Binding SystemHomeCommand}"/>
                             <Button Content="Start"  Margin="0,0,10,10"  Width="80" Height="25" Command="{Binding StartCycleCommand}"/>
-                            <Button Content="Stop"   Margin="10,0,10,10" Width="80" Height="25"/>
+                            <Button Content="Stop"   Margin="10,0,10,10" Width="80" Height="25" Command="{Binding StopCycleCommand}"/>
                             <Button Content="Pause"  Margin="10,0,10,10" Width="80" Height="25"/>
                             <Button Content="Resume" Margin="10,0,0,10"  Width="80" Height="25"/>
                         </StackPanel>
@@ -443,8 +444,8 @@
 
 
         <Canvas Canvas.Top="200" Canvas.Left="680">
-            <userControls:FOUPFrontView UnitData="{Binding LLAModuleInfo}" VerticalAlignment="Top" Canvas.Top="350" Canvas.Left="226" Visibility="{Binding LLAIsInstalled,Converter={StaticResource bool2VisibilityConverter}}"/>
-            <userControls:FOUPFrontView UnitData="{Binding LLBModuleInfo}" VerticalAlignment="Top" Canvas.Top="350" Canvas.Left="446" Visibility="{Binding LLBIsInstalled,Converter={StaticResource bool2VisibilityConverter}}"/>
+            <userControls:FOUPFrontView UnitData="{Binding LLAModuleInfo}" VerticalAlignment="Top" Canvas.Top="360" Canvas.Left="226" Visibility="{Binding LLAIsInstalled,Converter={StaticResource bool2VisibilityConverter}}"/>
+            <userControls:FOUPFrontView UnitData="{Binding LLBModuleInfo}" VerticalAlignment="Top" Canvas.Top="360" Canvas.Left="446" Visibility="{Binding LLBIsInstalled,Converter={StaticResource bool2VisibilityConverter}}"/>
             <Viewbox Width="350" Height="600" Stretch="Fill" >
                 <Canvas Canvas.Top="100" Width="450" Height="800">
                     <userControls:MainTM Width="300" Height="250" Canvas.Left="380" Canvas.Top="90"/>

+ 60 - 96
Venus/Venus_MainPages/Views/TopView.xaml

@@ -11,117 +11,79 @@
              xmlns:deviceControl="clr-namespace:Aitex.Core.UI.DeviceControl;assembly=MECF.Framework.UI.Core"
              xmlns:converters="clr-namespace:Venus_Themes.Converters;assembly=Venus_Themes"
              xmlns:converters2="clr-namespace:Venus_MainPages.Converters"
+             xmlns:userControls="clr-namespace:Venus_Themes.UserControls;assembly=Venus_Themes"
              mc:Ignorable="d" 
-             d:DesignHeight="100" d:DesignWidth="1800" FontSize="20" x:Name="topView">
+             d:DesignHeight="110" d:DesignWidth="1800" FontSize="20" x:Name="topView">
     <UserControl.Resources>
         <converters:StringToColorConverter x:Key="StringToColorConverter"/>
         <converters2:EventItemToStringConverter x:Key="EventItemToStringConverter"/>
         <converters2:PMStateConverter x:Key="PMStateConverter"/>
         <converters2:TMStateConverter x:Key="TMStateConverter"/>
         <converters2:LLStateConverter x:Key="LLStateConverter"/>
+        <converters2:SystemStateConverter x:Key="SystemStateConverter"/>
+
 
 
     </UserControl.Resources>
-    <StackPanel Background="{DynamicResource BottomFrame_BG}" Orientation="Horizontal">
-        <TextBlock Style="{StaticResource textBlockStyle}" Text="{Binding Title}" FontSize="60"   VerticalAlignment="Center" Margin="10,0,0,0" FontStyle="Italic" />
+    <Canvas Background="{StaticResource Login_BG}">
+        <TextBlock Style="{StaticResource textBlockStyle}" Text="{Binding Title}" FontSize="60"    FontStyle="Italic" Canvas.Left="5"/>
+        <TextBlock Text="{Binding SoftwareVersion}" Foreground="White"    FontSize="20"  Canvas.Left="70" Canvas.Top="80" />
+
+        <userControls:StateTitle Title="System"  TextBoxValue="{Binding RtDataValues[SYSTEM.FsmState]}" TextBoxColor="{Binding RtDataValues[SYSTEM.FsmState],Converter={StaticResource SystemStateConverter}}" Canvas.Left="220"  Canvas.Top="5"/>
+        <userControls:StateTitle Title="EFEM"    TextBoxValue="{Binding RtDataValues[EFEM.FsmState]}" TextBoxColor="{Binding RtDataValues[EFEM.FsmState],Converter={StaticResource PMStateConverter}}" Canvas.Left="520"  Canvas.Top="5"/>
+        <userControls:StateTitle Title="LLA"     TextBoxValue="{Binding RtDataValues[LLA.FsmState]}" TextBoxColor="{Binding RtDataValues[LLA.FsmState],Converter={StaticResource LLStateConverter}}" Canvas.Left="820"  Canvas.Top="5"/>
+        <userControls:StateTitle Title="LLB"     TextBoxValue="{Binding RtDataValues[LLB.FsmState]}" TextBoxColor="{Binding RtDataValues[LLB.FsmState],Converter={StaticResource LLStateConverter}}" Canvas.Left="1120"  Canvas.Top="5"/>
+
+        <userControls:StateTitle Title="PMA"     TextBoxValue="{Binding RtDataValues[PMA.FsmState]}" TextBoxColor="{Binding RtDataValues[PMA.FsmState],Converter={StaticResource PMStateConverter}}" Canvas.Left="220"  Canvas.Top="40"/>
+        <userControls:StateTitle Title="PMB"     TextBoxValue="{Binding RtDataValues[PMB.FsmState]}" TextBoxColor="{Binding RtDataValues[PMB.FsmState],Converter={StaticResource PMStateConverter}}" Canvas.Left="520"  Canvas.Top="40"/>
+
+        <userControls:StateTitle Title="PMC"     TextBoxValue="{Binding RtDataValues[PMC.FsmState]}" TextBoxColor="{Binding RtDataValues[PMC.FsmState],Converter={StaticResource PMStateConverter}}" Canvas.Left="820"  Canvas.Top="40"/>
+        <userControls:StateTitle Title="PMD"     TextBoxValue="{Binding RtDataValues[PMD.FsmState]}" TextBoxColor="{Binding RtDataValues[PMD.FsmState],Converter={StaticResource PMStateConverter}}" Canvas.Left="1120" Canvas.Top="40"/>
 
-        <Grid Width="1710"  unity:GridOptions.ShowBorder="True" unity:GridOptions.LineBrush="White" Margin="15,1,0,0"  >
-            <Grid.RowDefinitions>
-                <RowDefinition/>
-                <RowDefinition/>
-            </Grid.RowDefinitions>
-            <Grid.ColumnDefinitions>
-                <ColumnDefinition Width="60"/>
-                <ColumnDefinition Width="200"/>
-                <ColumnDefinition Width="60"/>
-                <ColumnDefinition Width="200"/>
-                <ColumnDefinition Width="60"/>
-                <ColumnDefinition Width="200"/>
-                <ColumnDefinition Width="60"/>
-                <ColumnDefinition Width="200"/>
-                <ColumnDefinition />
-                <ColumnDefinition Width="40"/>
-            </Grid.ColumnDefinitions>
-            <TextBlock Text="PMA" Foreground="White"   HorizontalAlignment="Center" VerticalAlignment="Center"/>
-            <TextBlock Text="{Binding RtDataValues[PMA.FsmState]}" Background="{Binding RtDataValues[PMA.FsmState],Converter={StaticResource PMStateConverter}}"  Grid.Column="1"   Margin="1,1,1,0" Padding="0,7,0,0" Block.TextAlignment="Center" FontSize="20" VerticalAlignment="Stretch" TextBlock.TextAlignment="Center" />
-            <TextBlock Text="PMB" Foreground="White"   HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Column="2"/>
-            <TextBlock Text="{Binding RtDataValues[PMB.FsmState]}" Background="{Binding RtDataValues[PMB.FsmState],Converter={StaticResource PMStateConverter}}"  Grid.Column="3"   Margin="1" Padding="0,7,0,0" Block.TextAlignment="Center" FontSize="20" VerticalAlignment="Stretch" TextBlock.TextAlignment="Center" />
-            <TextBlock Text="PMC" Foreground="White"   HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Column="4"/>
-            <TextBlock Text="{Binding RtDataValues[PMC.FsmState]}" Background="{Binding RtDataValues[PMC.FsmState],Converter={StaticResource PMStateConverter}}"  Grid.Column="5"   Margin="1" Padding="0,7,0,0" Block.TextAlignment="Center" FontSize="20" VerticalAlignment="Stretch" TextBlock.TextAlignment="Center" />
-            <TextBlock Text="PMD" Foreground="White"   HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Column="6"/>
-            <TextBlock Text="{Binding RtDataValues[PMD.FsmState]}" Background="{Binding RtDataValues[PMD.FsmState],Converter={StaticResource PMStateConverter}}"  Grid.Column="7"   Margin="1" Padding="0,7,0,0" Block.TextAlignment="Center" FontSize="20" VerticalAlignment="Stretch" TextBlock.TextAlignment="Center" />
-            <StackPanel Orientation="Horizontal" Grid.Column="8"  HorizontalAlignment="Center">
-                <TextBlock Text="{DynamicResource Version}"  Foreground="White" FontSize="20" TextAlignment="Center" HorizontalAlignment="Center" VerticalAlignment="Center"/>
-                <TextBlock Text="{Binding SoftwareVersion}" Foreground="White"    FontSize="20" TextAlignment="Center" HorizontalAlignment="Center" VerticalAlignment="Center" Padding="8,2,0,0"/>
-            </StackPanel>
-            
-            <TextBlock Text="TM" Foreground="White"   HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Row="1"/>
-            <TextBlock Text="{Binding RtDataValues[TM.FsmState]}" Background="{Binding RtDataValues[TM.FsmState],Converter={StaticResource TMStateConverter}}"  Grid.Column="1" Grid.Row="1"  Margin="1" Padding="0,7,0,0" Block.TextAlignment="Center" FontSize="20" VerticalAlignment="Stretch" TextBlock.TextAlignment="Center" />
+        <userControls:StateTitle Title="TM"      TextBoxValue="{Binding RtDataValues[TM.FsmState]}"  TextBoxColor="{Binding RtDataValues[TM.FsmState],Converter={StaticResource TMStateConverter}}"  Canvas.Left="220"  Canvas.Top="75"/>
 
-            <TextBlock Text="LLA" Foreground="White"   HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Row="1" Grid.Column="2"/>
-            <TextBlock Text="{Binding RtDataValues[LLA.FsmState]}" Background="{Binding RtDataValues[LLA.FsmState],Converter={StaticResource LLStateConverter}}"  Grid.Column="3" Grid.Row="1"  Margin="1" Padding="0,7,0,0" Block.TextAlignment="Center" FontSize="20" VerticalAlignment="Stretch" TextBlock.TextAlignment="Center" />
-            <TextBlock Text="LLB" Foreground="White"   HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Row="1" Grid.Column="4"/>
-            <TextBlock Text="{Binding RtDataValues[LLB.FsmState]}" Background="{Binding RtDataValues[LLB.FsmState],Converter={StaticResource LLStateConverter}}"  Grid.Column="5" Grid.Row="1"  Margin="1" Padding="0,7,0,0" Block.TextAlignment="Center" FontSize="20" VerticalAlignment="Stretch" TextBlock.TextAlignment="Center" />
-            <TextBlock Text="Log" Grid.Row="1"  Grid.Column="6" Foreground="White"  TextAlignment="Center" HorizontalAlignment="Center" VerticalAlignment="Center"/>
-            <StackPanel Orientation="Horizontal" Grid.Column="7"  Grid.Row="1" Grid.ColumnSpan="2" >
-                <ComboBox  Width="690"
+        <Label Content="Log" Style="{StaticResource TopLable_LeftTop}" Canvas.Left="520" Width="100" Canvas.Top="75" BorderThickness="1" BorderBrush="White"  HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Height="34"/>
+        <ComboBox  Width="896" Canvas.Left="620" Canvas.Top="77" Height="32"
                                        ItemsSource="{Binding EventLogList}"   
                                        SelectedIndex="{Binding EventLogListSelectedIndex}"
                                        VerticalContentAlignment="Center" FontSize="15"  >
-                    <ComboBox.ItemTemplate>
-                        <DataTemplate>
-                            <StackPanel Orientation="Horizontal">
-                                <TextBlock FontSize="20" Text="{Binding ElementName=topView,Path=DataContext.CurrentEventItem,Converter={StaticResource EventItemToStringConverter}}" Foreground="{Binding ElementName=topView,Path=DataContext.CurrentEventItem.Level,Converter={StaticResource StringToColorConverter}}"/>
-                            </StackPanel>
-                        </DataTemplate>
-                    </ComboBox.ItemTemplate>
-                    <ComboBox.ItemContainerStyle>
-                        <Style TargetType="ComboBoxItem">
-                            <Setter Property="Template">
-                                <Setter.Value>
-                                    <ControlTemplate TargetType="ComboBoxItem">
-                                        <TextBlock FontSize="20" Text="{Binding .,Converter={StaticResource EventItemToStringConverter}}"  FontFamily="宋体"
+            <ComboBox.ItemTemplate>
+                <DataTemplate>
+                    <StackPanel Orientation="Horizontal">
+                        <TextBlock FontSize="20" Text="{Binding ElementName=topView,Path=DataContext.CurrentEventItem,Converter={StaticResource EventItemToStringConverter}}" Foreground="{Binding ElementName=topView,Path=DataContext.CurrentEventItem.Level,Converter={StaticResource StringToColorConverter}}"/>
+                    </StackPanel>
+                </DataTemplate>
+            </ComboBox.ItemTemplate>
+            <ComboBox.ItemContainerStyle>
+                <Style TargetType="ComboBoxItem">
+                    <Setter Property="Template">
+                        <Setter.Value>
+                            <ControlTemplate TargetType="ComboBoxItem">
+                                <TextBlock FontSize="20" Text="{Binding .,Converter={StaticResource EventItemToStringConverter}}"  FontFamily="宋体"
                                                    Foreground="{Binding Level,Converter={StaticResource StringToColorConverter}}">
 
-                                            <TextBlock.Style>
-                                                <Style>
-                                                    <Style.Triggers>
-                                                        <Trigger Property="TextBlock.IsMouseOver" Value="true">
-                                                            <Setter Property="TextBlock.Background" Value="Silver"/>
-                                                        </Trigger>
-                                                    </Style.Triggers>
-                                                </Style>
-                                            </TextBlock.Style>
-                                        </TextBlock>
-                                    </ControlTemplate>
-                                </Setter.Value>
-                            </Setter>
-                            <Setter Property="Background"  Value="{Binding Level,Converter={StaticResource StringToColorConverter}}"/>
-                        </Style>
-                    </ComboBox.ItemContainerStyle>
-                </ComboBox>
-                <Button  Content="Skip"   BorderThickness="0,0,1,0"  BorderBrush="White"        Style="{StaticResource SysBtnStyle}"   Command="{Binding SkipCommand}" Width="70"    FontSize="15"/>
-                <Button  Content="Clear"  BorderThickness="0"        BorderBrush="Transparent"  Style="{StaticResource SysBtnStyle}"   Command="{Binding ClearCommand}" Width="70"   FontSize="15"/>
-            </StackPanel>
+                                    <TextBlock.Style>
+                                        <Style>
+                                            <Style.Triggers>
+                                                <Trigger Property="TextBlock.IsMouseOver" Value="true">
+                                                    <Setter Property="TextBlock.Background" Value="Silver"/>
+                                                </Trigger>
+                                            </Style.Triggers>
+                                        </Style>
+                                    </TextBlock.Style>
+                                </TextBlock>
+                            </ControlTemplate>
+                        </Setter.Value>
+                    </Setter>
+                    <Setter Property="Background"  Value="{Binding Level,Converter={StaticResource StringToColorConverter}}"/>
+                </Style>
+            </ComboBox.ItemContainerStyle>
+        </ComboBox>
+        <Button  Content="Skip"   BorderThickness="0,0,1,0"  BorderBrush="White"        Style="{StaticResource SysBtnStyle}"   Command="{Binding SkipCommand}"  Width="70"    FontSize="15" Canvas.Left="1520" Canvas.Top="77" Height="30"/>
+        <Button  Content="Clear"  BorderThickness="0"        BorderBrush="Transparent"  Style="{StaticResource SysBtnStyle}"   Command="{Binding ClearCommand}" Width="70"    FontSize="15" Canvas.Left="1600"  Canvas.Top="77" Height="30"/>
 
-
-
-            <!--<StackPanel Orientation="Horizontal" Grid.Column="8"  Grid.Row="1"  HorizontalAlignment="Center">
-                <TextBlock  Text=" 语言:" Foreground="White"    VerticalAlignment="Center"/>
-
-                <ToggleButton    Style="{StaticResource ToggleButtonStyle1}">
-                    <i:Interaction.Triggers>
-                        <i:EventTrigger EventName="Checked">
-                            <i:InvokeCommandAction Command="{Binding SwichLanguageCommand}"/>
-                        </i:EventTrigger>
-                        <i:EventTrigger EventName="Unchecked">
-                            <i:InvokeCommandAction Command="{Binding SwichLanguageCommand}"/>
-                        </i:EventTrigger>
-                    </i:Interaction.Triggers>
-                </ToggleButton>
-            </StackPanel>-->
-            
-            <Viewbox  Height="80"  Grid.Column="9"  Grid.RowSpan="2" Margin="0,5,0,0">
+        <Border Height="100" Width="40" Canvas.Right="10" Canvas.Top="5"  BorderBrush="White" BorderThickness="1" Background="White">
+            <Viewbox  Height="90"   >
                 <deviceControl:AITSignalTower  
                                               IsRedLightOn="{Binding SignalTowerData.IsRedLightOn}"
                                               IsYellowLightOn="{Binding SignalTowerData.IsYellowLightOn}"
@@ -129,7 +91,9 @@
                                               IsBlueLightOn="{Binding SignalTowerData.IsBlueLightOn}"
                                               IsBuzzerOn="{Binding SignalTowerData.IsBuzzerOn}"/>
             </Viewbox>
-        </Grid>
-      
-    </StackPanel>
+        </Border>
+ 
+
+    </Canvas>
+   
 </UserControl>

+ 25 - 1
Venus/Venus_RT/Modules/RouteManager.cs

@@ -133,7 +133,31 @@ namespace Venus_RT.Modules
             OP.Subscribe("CreateWafer", InvokeCreateWafer);
 
             OP.Subscribe("DeleteWafer", InvokeDeleteWafer);
+
+
+            OP.Subscribe("System.Home", (cmd, args) => CheckToPostMessage((int)MSG.HOME, args));
+            OP.Subscribe("TMCycle.Start", (cmd, args) => CheckToPostMessage((int)MSG.TMCycle, args));
+            OP.Subscribe("TMCycle.Abort", (cmd, args) => CheckToPostMessage((int)MSG.ABORT, args));
+
+
+            DATA.Subscribe("SYSTEM.FsmState", () => (((RtState)fsm.State).ToString()));
+
+
+        }
+        public bool CheckToPostMessage(int msg, params object[] args)
+        {
+            if (!fsm.FindTransition(fsm.State, msg))
+            {
+                LOG.Write(eEvent.WARN_FSM_WARN, ModuleName.TM, $"TM is in {(RtState)fsm.State} state,can not do {(MSG)msg}");
+                return false;
+            }
+
+            Running = true;
+            fsm.PostMsg(msg, args);
+
+            return true;
         }
+
         private bool InvokeCreateWafer(string arg1, object[] args)
         {
             ModuleName chamber = ModuleHelper.Converter(args[0].ToString());
@@ -329,7 +353,7 @@ namespace Venus_RT.Modules
 
         private bool FsmStartTMCycle(object[] objs)
         {
-            return _TMCycle.Start() == RState.Running;
+            return _TMCycle.Start(objs) == RState.Running;
         }
 
         private bool FsmMonitorTMCycle(object[] objs)

+ 0 - 4
Venus/Venus_RT/Modules/TM/TMEntity.cs

@@ -113,7 +113,6 @@ namespace Venus_RT.Modules
         private readonly MFPMRetractRoutine _pmRetractRoutine;
         private readonly MFPMExtendRoutine  _pmExtendRoutine;
 
-        //private readonly TMCycle _TMCycle;
 
         public TMEntity()
         {
@@ -139,7 +138,6 @@ namespace Venus_RT.Modules
             _pmRetractRoutine = new MFPMRetractRoutine(_tm, _robot);
             _pmExtendRoutine  = new MFPMExtendRoutine(_tm, _robot);
 
-            //_TMCycle = new TMCycle();
 
 
             WaferManager.Instance.SubscribeLocation(ModuleName.TM, 2);
@@ -167,8 +165,6 @@ namespace Venus_RT.Modules
             OP.Subscribe($"TM.{RtOperation.Purge}", (cmd, args) => CheckToPostMessage((int)MSG.Purge));
             OP.Subscribe($"TM.{RtOperation.Abort}", (cmd, args) => CheckToPostMessage((int)MSG.Abort));
 
-            OP.Subscribe("TMCycle", (cmd, args) => CheckToPostMessage((int)MSG.TMCycle, args));
-
 
 
 

+ 3 - 2
Venus/Venus_Themes/Styles/Skin.xaml

@@ -197,8 +197,9 @@
 
     <!-- Login Page -->
     <LinearGradientBrush x:Key="Login_BG" EndPoint="0.5,1" StartPoint="0.5,0">
-        <GradientStop Color="#FF005087" Offset="0"/>
-        <GradientStop Color="#FFABDDFF" Offset="1"/>
+        <GradientStop Color="#005087" Offset="0"/>
+
+        <GradientStop Color="#69C2FF" Offset="1"/>
     </LinearGradientBrush>
     <RadialGradientBrush x:Key="Login_BG_Highlight">
         <GradientStop Color="#FF69C2FF" Offset="0"/>

File diff suppressed because it is too large
+ 58 - 0
Venus/Venus_Themes/Themes/Generic.xaml


+ 5 - 0
Venus/Venus_Themes/UserControls/LoadLockLeft.xaml

@@ -77,6 +77,11 @@
                        DataContext="{Binding ElementName=LeftLoadLock, Path=RobotWafer}"  HorizontalAlignment="Center" VerticalAlignment="Center">
                 </ctrl:Slot>
             </Viewbox>
+            
+            <Rectangle  Fill="Silver" Width="142"  VerticalAlignment="Top"    Height="20"  Canvas.Top="200" Canvas.Left="-1"/>
+            <Rectangle  Fill="DimGray" Width="142"  VerticalAlignment="Top"    Height="20"  Canvas.Top="200" Canvas.Left="-1"/>
+            <Rectangle  Fill="DimGray" Width="142"  VerticalAlignment="Top"    Height="20"  Canvas.Top="200" Canvas.Left="-1"/>
+           
         </Canvas>
             
         

+ 4 - 1
Venus/Venus_Themes/UserControls/LoadLockRight.xaml

@@ -33,7 +33,7 @@
     </UserControl.Resources>
     <Viewbox Stretch="Fill" >
         <Canvas Width="200" Height="200">
-            <Polygon Stroke="Black"  StrokeThickness="2" Points="200,200 200,100 164,0 0,90 80,200">
+            <Polygon Stroke="Black"  StrokeThickness="2" Points="200,200 200,100 164,0 0,90 60,200">
                 <Polygon.Fill>
                     <LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
                         <GradientStop Color="Silver" Offset="0.0" />
@@ -77,6 +77,9 @@
                        DataContext="{Binding ElementName=RightLoadLock, Path=RobotWafer}"  HorizontalAlignment="Center" VerticalAlignment="Center">
                 </ctrl:Slot>
             </Viewbox>
+            <Rectangle  Fill="Silver" Width="142"  VerticalAlignment="Top"    Height="20"  Canvas.Top="200" Canvas.Left="59"/>
+            <Rectangle  Fill="DimGray" Width="142"  VerticalAlignment="Top"    Height="20"  Canvas.Top="200" Canvas.Left="59"/>
+            <Rectangle  Fill="DimGray" Width="142"  VerticalAlignment="Top"    Height="20"  Canvas.Top="200" Canvas.Left="59"/>
         </Canvas>
     </Viewbox>
 </UserControl>

+ 1 - 32
Venus/Venus_Themes/UserControls/Pump.xaml.cs

@@ -40,37 +40,6 @@ namespace Venus_Themes.UserControls
                 this.SetValue(IsOpenProperty, value);
               
             }
-        }
-
-        //private  bool m_Test;
-        //public  bool Test
-        //{
-        //    set {
-        //        check1.IsChecked = true;
-        //        m_Test = value;
-        //    }
-        //}
-
-        //private void RadioButton_Checked(object sender, RoutedEventArgs e)
-        //{
-        //    IsOpen = true;
-        //}
-
-        //private void RadioButton_Unchecked(object sender, RoutedEventArgs e)
-        //{
-        //    IsOpen = false;
-        //}
-        //private static void propertyChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
-        //{
-        //    Pump pump = d as Pump;
-        //    if ((bool)e.NewValue == true)
-        //    {
-        //        pump.check1.IsChecked = true;
-        //    }
-        //    else
-        //    { 
-        //        pump.check2.IsChecked = true;
-        //    }
-        //}
+        }   
     }
 }

+ 14 - 0
Venus/Venus_Themes/UserControls/StateTitle.xaml

@@ -0,0 +1,14 @@
+<UserControl x:Class="Venus_Themes.UserControls.StateTitle"
+             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
+             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
+             xmlns:local="clr-namespace:Venus_Themes.UserControls"
+             mc:Ignorable="d" 
+             d:DesignHeight="40" d:DesignWidth="800" x:Name="stateTitle">
+    <StackPanel Orientation="Horizontal">
+
+        <Label Style="{StaticResource TopLable_LeftTop}" Content="{Binding ElementName=stateTitle,Path=Title}"  HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Width="100" BorderBrush="White" BorderThickness="1"/>
+        <TextBox Style="{StaticResource TextBox_Top}" Text="{Binding ElementName=stateTitle,Path=TextBoxValue}"  Background="{Binding ElementName=stateTitle,Path=TextBoxColor}" Width="200" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" BorderThickness="1" BorderBrush="Black" FontSize="25"/>
+    </StackPanel>
+</UserControl>

+ 51 - 0
Venus/Venus_Themes/UserControls/StateTitle.xaml.cs

@@ -0,0 +1,51 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace Venus_Themes.UserControls
+{
+    /// <summary>
+    /// StateTitle.xaml 的交互逻辑
+    /// </summary>
+    public partial class StateTitle : UserControl
+    {
+        public StateTitle()
+        {
+            InitializeComponent();
+        }
+        public static readonly DependencyProperty TextBoxColorProperty = DependencyProperty.Register(
+     "TextBoxColor", typeof(SolidColorBrush), typeof(StateTitle));
+        public SolidColorBrush TextBoxColor
+        {
+            get { return (SolidColorBrush)this.GetValue(TextBoxColorProperty); }
+            set { this.SetValue(TextBoxColorProperty, value); }
+        }
+
+        public static readonly DependencyProperty TextBoxValueProperty = DependencyProperty.Register(
+    "TextBoxValue", typeof(string), typeof(StateTitle));
+        public string TextBoxValue
+        {
+            get { return (string)this.GetValue(TextBoxValueProperty); }
+            set { this.SetValue(TextBoxValueProperty, value); }
+        }
+
+        public static readonly DependencyProperty TitleProperty = DependencyProperty.Register(
+   "Title", typeof(string), typeof(StateTitle));
+        public string Title
+        {
+            get { return (string)this.GetValue(TitleProperty); }
+            set { this.SetValue(TitleProperty, value); }
+        }
+    }
+}

+ 1 - 1
Venus/Venus_Themes/UserControls/TextboxWithLabel.xaml.cs

@@ -47,7 +47,7 @@ namespace Venus_Themes.UserControls
         public SolidColorBrush TextBoxColor
         {
             get { return (SolidColorBrush)this.GetValue(TextBoxColorProperty); }
-            set { this.SetValue(LabelValueProperty, value); }
+            set { this.SetValue(TextBoxColorProperty, value); }
         }
 
         public static readonly DependencyProperty IsReadOnlyProperty = DependencyProperty.Register(

+ 7 - 0
Venus/Venus_Themes/Venus_Themes.csproj

@@ -151,6 +151,9 @@
     <Compile Include="UserControls\purge.xaml.cs">
       <DependentUpon>purge.xaml</DependentUpon>
     </Compile>
+    <Compile Include="UserControls\StateTitle.xaml.cs">
+      <DependentUpon>StateTitle.xaml</DependentUpon>
+    </Compile>
     <Compile Include="UserControls\TextboxWithLabel.xaml.cs">
       <DependentUpon>TextboxWithLabel.xaml</DependentUpon>
     </Compile>
@@ -314,6 +317,10 @@
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
     </Page>
+    <Page Include="UserControls\StateTitle.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
     <Page Include="UserControls\TextboxWithLabel.xaml">
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>

+ 1 - 1
Venus/Venus_UI/Views/ShellView.xaml

@@ -145,7 +145,7 @@
     <Grid>
         
         <Grid.RowDefinitions>
-            <RowDefinition Height="90"/>
+            <RowDefinition Height="110"/>
             <RowDefinition/>
             <RowDefinition Height="48"/>
         </Grid.RowDefinitions>