Merge branch 'develop' of http://112.124.35.216:65000/Sic-Software/MoS2 into develop
This commit is contained in:
commit
698c329ecc
@ -362,15 +362,15 @@
|
||||
</IoSensorWaterFlowTemp>
|
||||
|
||||
<IoGasBoxTemps classType="Aitex.Core.RT.Device.Devices.IoLineHeater" assembly="MECF.Framework.RT.EquipmentLibrary">
|
||||
<IoGasBoxTemp id="HeatTMAPanelTemp" display="TMAPanelTemp(ATC-1)" aiHeatTMA="AI_HeatTMAPanel" scBasePath="PM.{module}.LineHeaterTemp" scAlarmHigh="加热带温区1" scWarningLog="" doLineHeaterEnable="DO_LineHeaterEnable"/>
|
||||
<IoGasBoxTemp id="HeatTMAPanelTemp" display="TMAPanelTemp(ATC-1)" aiHeatTMA="AI_HeatTMA" scBasePath="PM.{module}.LineHeaterTemp" scAlarmHigh="加热带温区1" scWarningLog="" doLineHeaterEnable="DO_LineHeaterEnable"/>
|
||||
<IoGasBoxTemp id="HeatTCSPanelTemp" display="TCSPanelTemp(ATC-2)" aiHeatTMA="AI_HeatTCSPanel" scBasePath="PM.{module}.LineHeaterTemp" scAlarmHigh="加热带温区2" scWarningLog="" doLineHeaterEnable="DO_LineHeaterEnable"/>
|
||||
<IoGasBoxTemp id="HeatinsidePanelTemp" display="insidePanelTemp(ATC-3)" aiHeatTMA="AI_HeatinsidePanel" scBasePath="PM.{module}.LineHeaterTemp" scAlarmHigh="加热带温区3" scWarningLog="" doLineHeaterEnable="DO_LineHeaterEnable"/>
|
||||
<IoGasBoxTemp id="HeatoutsidePanelTemp" display="outsidePanelTemp(ATC-4)" aiHeatTMA="AI_HeatoutsidePanel" scBasePath="PM.{module}.LineHeaterTemp" scAlarmHigh="加热带温区4" scWarningLog="" doLineHeaterEnable="DO_LineHeaterEnable"/>
|
||||
<IoGasBoxTemp id="HeatoutsideSHTemp" display="outsideSHTemp(ATC-5)" aiHeatTMA="AI_HeatoutsideSH" scBasePath="PM.{module}.LineHeaterTemp" scAlarmHigh="加热带温区5" scWarningLog="" doLineHeaterEnable="DO_LineHeaterEnable"/>
|
||||
<IoGasBoxTemp id="HeatLeakBypassTemp" display="LeakBypassTemp(ATC-6)" aiHeatTMA="AI_HeatLeakBypass" scBasePath="PM.{module}.LineHeaterTemp" scAlarmHigh="加热带温区6" scWarningLog="" doLineHeaterEnable="DO_LineHeaterEnable"/>
|
||||
|
||||
<IoGasBoxTemp id="HeatTailFilter" display="HeatTailFilter" aiHeatTMA="AI_HeatTailFilter" scBasePath="PM.{module}.LineHeaterTemp" scAlarmHigh="PumpLineTempLimt" scWarningLog="PumpLineTempAlarm" doLineHeaterEnable="" />
|
||||
<IoGasBoxTemp id="HeatTailPipe" display="HeatTailPipe" aiHeatTMA="AI_HeatTailPipe" scBasePath="PM.{module}.LineHeaterTemp" scAlarmHigh="PumpLineTempLimt" scWarningLog="PumpLineTempAlarm" doLineHeaterEnable=""/>
|
||||
<!--<IoGasBoxTemp id="HeatTailFilter" display="HeatTailFilter" aiHeatTMA="AI_HeatTailFilter" scBasePath="PM.{module}.LineHeaterTemp" scAlarmHigh="PumpLineTempLimt" scWarningLog="PumpLineTempAlarm" doLineHeaterEnable="" />
|
||||
<IoGasBoxTemp id="HeatTailPipe" display="HeatTailPipe" aiHeatTMA="AI_HeatTailPipe" scBasePath="PM.{module}.LineHeaterTemp" scAlarmHigh="PumpLineTempLimt" scWarningLog="PumpLineTempAlarm" doLineHeaterEnable=""/>-->
|
||||
</IoGasBoxTemps>
|
||||
<IoPumps classType="Aitex.Core.RT.Device.Devices.IoPump" assembly="MECF.Framework.RT.EquipmentLibrary">
|
||||
<IoPump id="Pump" module="" display="Pump" schematicId="Pump" unit="" aioType="" diDryPumpAlarm="DI_DryPumpAlarm" diPumpExhaustPress="DI_PumpExhaustPressSW" diDryPumpFlow="DI_DryPumpFlowSW" diDryPump1Running="DI_DryPump1Running" diDryPump1Warning="DI_DryPump1Warning" />
|
||||
|
||||
@ -211,15 +211,15 @@
|
||||
</IoPressures>
|
||||
|
||||
<IoGasBoxTemps classType="Aitex.Core.RT.Device.Devices.IoLineHeater" assembly="MECF.Framework.RT.EquipmentLibrary">
|
||||
<IoGasBoxTemp id="HeatTMAPanelTemp" display="TMAPanelTemp(ATC-1)" aiHeatTMA="AI_HeatTMAPanel" scBasePath="PM.{module}.LineHeaterTemp" scAlarmHigh="加热带温区1" scWarningLog="" doLineHeaterEnable="DO_LineHeaterEnable"/>
|
||||
<IoGasBoxTemp id="HeatTMAPanelTemp" display="TMAPanelTemp(ATC-1)" aiHeatTMA="AI_HeatTMA" scBasePath="PM.{module}.LineHeaterTemp" scAlarmHigh="加热带温区1" scWarningLog="" doLineHeaterEnable="DO_LineHeaterEnable"/>
|
||||
<IoGasBoxTemp id="HeatTCSPanelTemp" display="TCSPanelTemp(ATC-2)" aiHeatTMA="AI_HeatTCSPanel" scBasePath="PM.{module}.LineHeaterTemp" scAlarmHigh="加热带温区2" scWarningLog="" doLineHeaterEnable="DO_LineHeaterEnable"/>
|
||||
<IoGasBoxTemp id="HeatinsidePanelTemp" display="insidePanelTemp(ATC-3)" aiHeatTMA="AI_HeatinsidePanel" scBasePath="PM.{module}.LineHeaterTemp" scAlarmHigh="加热带温区3" scWarningLog="" doLineHeaterEnable="DO_LineHeaterEnable"/>
|
||||
<IoGasBoxTemp id="HeatoutsidePanelTemp" display="outsidePanelTemp(ATC-4)" aiHeatTMA="AI_HeatoutsidePanel" scBasePath="PM.{module}.LineHeaterTemp" scAlarmHigh="加热带温区4" scWarningLog="" doLineHeaterEnable="DO_LineHeaterEnable"/>
|
||||
<IoGasBoxTemp id="HeatoutsideSHTemp" display="outsideSHTemp(ATC-5)" aiHeatTMA="AI_HeatoutsideSH" scBasePath="PM.{module}.LineHeaterTemp" scAlarmHigh="加热带温区5" scWarningLog="" doLineHeaterEnable="DO_LineHeaterEnable"/>
|
||||
<IoGasBoxTemp id="HeatLeakBypassTemp" display="LeakBypassTemp(ATC-6)" aiHeatTMA="AI_HeatLeakBypass" scBasePath="PM.{module}.LineHeaterTemp" scAlarmHigh="加热带温区6" scWarningLog="" doLineHeaterEnable="DO_LineHeaterEnable"/>
|
||||
|
||||
<IoGasBoxTemp id="HeatTailFilter" display="HeatTailFilter" aiHeatTMA="AI_HeatTailFilter" scBasePath="PM.{module}.LineHeaterTemp" scAlarmHigh="PumpLineTempLimt" scWarningLog="PumpLineTempAlarm" doLineHeaterEnable="" />
|
||||
<IoGasBoxTemp id="HeatTailPipe" display="HeatTailPipe" aiHeatTMA="AI_HeatTailPipe" scBasePath="PM.{module}.LineHeaterTemp" scAlarmHigh="PumpLineTempLimt" scWarningLog="PumpLineTempAlarm" doLineHeaterEnable=""/>
|
||||
<!--<IoGasBoxTemp id="HeatTailFilter" display="HeatTailFilter" aiHeatTMA="AI_HeatTailFilter" scBasePath="PM.{module}.LineHeaterTemp" scAlarmHigh="PumpLineTempLimt" scWarningLog="PumpLineTempAlarm" doLineHeaterEnable="" />
|
||||
<IoGasBoxTemp id="HeatTailPipe" display="HeatTailPipe" aiHeatTMA="AI_HeatTailPipe" scBasePath="PM.{module}.LineHeaterTemp" scAlarmHigh="PumpLineTempLimt" scWarningLog="PumpLineTempAlarm" doLineHeaterEnable=""/>-->
|
||||
</IoGasBoxTemps>
|
||||
<IoPumps classType="Aitex.Core.RT.Device.Devices.IoPump" assembly="MECF.Framework.RT.EquipmentLibrary">
|
||||
<IoPump id="Pump" module="" display="Pump" schematicId="Pump" unit="" aioType="" diDryPumpAlarm="DI_DryPumpAlarm" diPumpExhaustPress="DI_PumpExhaustPressSW" diDryPumpFlow="DI_DryPumpFlowSW" diDryPump1Running="DI_DryPump1Running" diDryPump1Warning="DI_DryPump1Warning" />
|
||||
|
||||
@ -11,6 +11,7 @@
|
||||
<!--<menuItem id="EFEM" resKey="EFEM" viewmodel="SicUI.Client.Models.Platform.TM.EFEMViewModel,SicUI" />-->
|
||||
<!--<menuItem id="EFEM" resKey="EFEM" viewmodel="SicUI.Models.Maintenances.TM.EFEM2ViewModel,SicUI" />-->
|
||||
<menuItem id="Device" resKey="Device" viewmodel="SicUI.Client.Models.Platform.TM.DeviceViewModel,SicUI" />
|
||||
<menuItem id="Vision" resKey="Vision" viewmodel="SicUI.Client.Models.Platform.TM.Device2ViewModel,SicUI" />
|
||||
<menuItem id="ioPlatform" resKey="Platform IO" System="TM.io" viewmodel="MECF.Framework.UI.Client.CenterViews.Maitenances.IO3.IO3ViewModel,MECF.Framework.UI.Client" />
|
||||
<menuItem id="LeakCheck" resKey="LeakCheck" viewmodel="SicUI.Client.Models.Platform.LeakCheck.TMLeakCheckViewModel,SicUI" />
|
||||
</menuItem>
|
||||
|
||||
@ -2196,6 +2196,22 @@
|
||||
<config default="10" name="AlignerTimeout" description="ALigner time out" max="600" min="1" paramter="" tag="" unit="s" type="Integer" />
|
||||
<config default="10" name="AlignerMoveToCenterTimeOut" description="ALigner time out" max="600" min="1" paramter="" tag="" unit="s" type="Integer" />
|
||||
</configs>
|
||||
<configs name="HikGigeCamera">
|
||||
<config default="false" name="EnableDevice" description="是否使能HikGigeCamera" max="" min="" paramter="" tag="" unit="" type="Bool" />
|
||||
<config default="D:\VMImage\" name="ImageFilePath" description="原图像保存位置" max="" min="" paramter="" tag="" unit="" type="String" />
|
||||
<config default="00C19213367" name="Address" description="HikGigeCamera SerialNumber" max="" min="" paramter="" tag="" unit="" type="String" />
|
||||
<config default="1280" name="Width" description="HikGigeCamera Width" max="10000" min="0" paramter="" tag="" unit="" type="Integer" />
|
||||
<config default="960" name="Height" description="HikGigeCamera Height" max="10000" min="0" paramter="" tag="" unit="" type="Integer" />
|
||||
</configs>
|
||||
<configs name="HikVisionMaster">
|
||||
<config default="false" name="EnableDevice" description="是否使能HikVisionMaster" max="" min="" paramter="" tag="" unit="" type="Bool" />
|
||||
<config default="D:\VMImage\Input" name="LocalImageFilePath" description="本地测试图像路径" max="" min="" paramter="" tag="" unit="" type="String" />
|
||||
<config default="D:\VMSolution\123.sol" name="VMSolutionAddress" description="Solution local address" max="" min="" paramter="" tag="" unit="" type="String" />
|
||||
<config default="100,200,200,300,300,100" name="SampleData" description="Load腔Group检查的模板" max="" min="" paramter="" tag="" unit="" type="String" visible="false"/>
|
||||
<config default="100,200,200,300,300,100" name="SampleData2" description="Load腔Place检查的模板" max="" min="" paramter="" tag="" unit="" type="String" visible="false"/>
|
||||
<config default="10" name="Tolerance" description="Load腔Group后圆心偏移上下限,超出此值NG" max="900" min="0" paramter="" tag="" unit="" type="Double" />
|
||||
<config default="10" name="Tolerance2" description="Load腔PlaceWafer后圆心偏移上下限,超出此值NG" max="900" min="0" paramter="" tag="" unit="" type="Double" />
|
||||
</configs>
|
||||
<configs name="P116PIDTC" visible="false">
|
||||
<config default="false" name="EnableDevice" description="Temp Omron install" max="" min="" paramter="" tag="" unit="" type="Bool" />
|
||||
<config default="COM36" name="Address" description="Temp Omron address" max="" min="" paramter="" tag="" unit="" type="String" />
|
||||
|
||||
@ -3,6 +3,7 @@ using Aitex.Core.RT.SCCore;
|
||||
using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Breakers.NSXCOM;
|
||||
using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.UPS;
|
||||
using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Temps;
|
||||
using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.MachineVision.HikVision;
|
||||
|
||||
namespace SicRT.Instances
|
||||
{
|
||||
@ -79,6 +80,19 @@ namespace SicRT.Instances
|
||||
QueueDevice(EATONUPS2);
|
||||
}
|
||||
|
||||
//强制构造vm类,是否加载放入构造函数中
|
||||
var hikvm = new HikVisionMasterSDK("LoadLock", "HikVisionMaster", "HikVisionMaster",
|
||||
SC.GetConfigItem("HikVisionMaster.EnableDevice").BoolValue);
|
||||
hikvm.Initialize();
|
||||
QueueDevice(hikvm);
|
||||
|
||||
if (SC.GetConfigItem("HikGigeCamera.EnableDevice").BoolValue)
|
||||
{
|
||||
var hikc = new HikGigeCamera("LoadLock", "HikGigeCamera", "HikGigeCamera");
|
||||
hikc.Initialize();
|
||||
QueueDevice(hikc);
|
||||
}
|
||||
|
||||
//if (SC.GetConfigItem("AKunTemp.EnableDevice").BoolValue)
|
||||
//{
|
||||
// var AkOptics = new AKunTemp("PM1", "AKunTemp");
|
||||
|
||||
31
App/SicUI/Controls/CameraControl.xaml
Normal file
31
App/SicUI/Controls/CameraControl.xaml
Normal file
@ -0,0 +1,31 @@
|
||||
<UserControl x:Class="SicUI.Controls.CameraControl"
|
||||
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:SicUI.Controls"
|
||||
xmlns:deviceControl="clr-namespace:Aitex.Core.UI.DeviceControl;assembly=MECF.Framework.UI.Core"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="480" d:DesignWidth="520" Unloaded="CameraControl_Unloaded" Loaded="CameraControl_loaded">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="35"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="35"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Label HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Content="CCD采集" Style="{DynamicResource Table_TitleStyle}" />
|
||||
<Border Grid.Row="1" Background="{DynamicResource Table_BG_Title}" BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1">
|
||||
<Image x:Name="imageControl" Width="480" Height="360"/>
|
||||
</Border>
|
||||
<Border Grid.Row="2" Background="{DynamicResource Table_BG_Content}" BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock Text="Connection:" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="12 3"/>
|
||||
<deviceControl:AITSensor Margin="12 3" HorizontalAlignment="Center" VerticalAlignment="Center" CustomColorOff="Gray" CustomColorOn="Lime" LightOnValue="{Binding CamConnection}" IsCustomRender="True" />
|
||||
<Button Content="采集" Width="80" Margin="12 3" Click="ButtonGrab_Click"/>
|
||||
<Button Content="连续采集" Width="80" Click="ButtonGrabbing_Click" Margin="12 3"/>
|
||||
<Button Content="停止" Width="80" Click="ButtonStop_Click" Margin="12 3"/>
|
||||
<TextBlock Text="{Binding CamMessage}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="12 3"/>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</Grid>
|
||||
</UserControl>
|
||||
160
App/SicUI/Controls/CameraControl.xaml.cs
Normal file
160
App/SicUI/Controls/CameraControl.xaml.cs
Normal file
@ -0,0 +1,160 @@
|
||||
using Aitex.Core.RT.Log;
|
||||
using CommandLine;
|
||||
using MECF.Framework.Common.DataCenter;
|
||||
using SicUI.Controls.M2C4Parts;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Imaging;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
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;
|
||||
using System.Windows.Threading;
|
||||
using VM.PlatformSDKCS;
|
||||
|
||||
namespace SicUI.Controls
|
||||
{
|
||||
/// <summary>
|
||||
/// CameraControl.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class CameraControl : UserControl
|
||||
{
|
||||
|
||||
private WriteableBitmap _bitmap;
|
||||
private Int32Rect _rect;
|
||||
private CancellationTokenSource _cts;
|
||||
|
||||
public CameraControl()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
// 获取摄像头分辨率
|
||||
var width = (int)QueryDataClient.Instance.Service.GetConfig("HikGigeCamera.Width");
|
||||
var height = (int)QueryDataClient.Instance.Service.GetConfig("HikGigeCamera.Height");
|
||||
|
||||
// 创建 WriteableBitmap,注意像素格式需要与摄像头输出匹配(例如 Bgr24)
|
||||
_bitmap = new WriteableBitmap(width, height, 96, 96, System.Windows.Media.PixelFormats.Bgr24, null);
|
||||
_rect = new Int32Rect(0, 0, _bitmap.PixelWidth, _bitmap.PixelHeight);
|
||||
// 只需设置一次 Source,不必每帧重新赋值
|
||||
imageControl.Source = _bitmap;
|
||||
|
||||
}
|
||||
|
||||
private async Task CaptureLoop(CancellationToken token)
|
||||
{
|
||||
while (!token.IsCancellationRequested)
|
||||
{
|
||||
try
|
||||
{
|
||||
var obj = QueryDataClient.Instance.Service.GetData($"LoadLock.HikGigeCamera.CamBitmap");
|
||||
if (obj != null)
|
||||
{
|
||||
Bitmap b = BytesToBitmap((byte[])obj);
|
||||
// 在 UI 线程更新图像数据
|
||||
#pragma warning disable CS4014
|
||||
Application.Current.Dispatcher.BeginInvoke(
|
||||
DispatcherPriority.Background,
|
||||
new Action(() => UpdateBitmap(b)));
|
||||
#pragma warning restore CS4014
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LOG.Warning($"Camera Capture failed{ex}");
|
||||
}
|
||||
|
||||
// 根据需要调整延时,防止 CPU 占用过高
|
||||
// 异步延时,释放后台线程资源,并响应取消请求
|
||||
try
|
||||
{
|
||||
await Task.Delay(20, token);
|
||||
}
|
||||
catch (OperationCanceledException)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public Bitmap BytesToBitmap(byte[] bytes)
|
||||
{
|
||||
using (MemoryStream ms = new MemoryStream(bytes))
|
||||
{
|
||||
return new Bitmap(ms); // 或使用Image.FromStream:ml-citation{ref="1,18" data="citationList"}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新预先创建的 WriteableBitmap 的像素数据
|
||||
/// </summary>
|
||||
private void UpdateBitmap(Bitmap frame)
|
||||
{
|
||||
if (frame == null || _bitmap == null) return;
|
||||
|
||||
_bitmap.Lock();
|
||||
try
|
||||
{
|
||||
// 3. 移除类级别的 _bitmapData,改为局部变量
|
||||
var rect = new System.Drawing.Rectangle(0, 0, frame.Width, frame.Height);
|
||||
var bitmapData = frame.LockBits(rect, ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
|
||||
try
|
||||
{
|
||||
int size = bitmapData.Height * bitmapData.Stride;
|
||||
_bitmap.WritePixels(_rect, bitmapData.Scan0, size, bitmapData.Stride, 0, 0);
|
||||
}
|
||||
finally
|
||||
{
|
||||
// 4. 无论如何必须解锁 GDI 数据
|
||||
frame.UnlockBits(bitmapData);
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
// 5. 无论如何必须释放 Bitmap 和解锁 WriteableBitmap
|
||||
frame.Dispose();
|
||||
_bitmap.Unlock();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void ButtonGrab_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
InvokeClient.Instance.Service.DoOperation($"LoadLock.HikGigeCamera.Grab","UIGrab");
|
||||
}
|
||||
|
||||
private void ButtonGrabbing_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
InvokeClient.Instance.Service.DoOperation($"LoadLock.HikGigeCamera.Grabbing");
|
||||
}
|
||||
|
||||
private void CameraControl_Unloaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
_cts?.Cancel();
|
||||
InvokeClient.Instance.Service.DoOperation($"LoadLock.HikGigeCamera.Stop");
|
||||
}
|
||||
|
||||
private void CameraControl_loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
_cts = new CancellationTokenSource();
|
||||
_ = CaptureLoop(_cts.Token);
|
||||
}
|
||||
|
||||
private void ButtonStop_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
InvokeClient.Instance.Service.DoOperation($"LoadLock.HikGigeCamera.Stop");
|
||||
}
|
||||
}
|
||||
}
|
||||
841
App/SicUI/Models/Maintenances/TM/Device2View.xaml
Normal file
841
App/SicUI/Models/Maintenances/TM/Device2View.xaml
Normal file
@ -0,0 +1,841 @@
|
||||
<UserControl
|
||||
x:Class="SicUI.Client.Models.Platform.TM.Device2View"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:cal="http://www.caliburn.org"
|
||||
xmlns:controls="clr-namespace:SicUI.Controls"
|
||||
xmlns:ctrl="http://OpenSEMI.Ctrlib.com/presentation"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:deviceControl="clr-namespace:Aitex.Core.UI.DeviceControl;assembly=MECF.Framework.UI.Core"
|
||||
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
|
||||
xmlns:lex="http://wpflocalizeextension.codeplex.com"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:unitControls="clr-namespace:MECF.Framework.UI.Client.Ctrlib.UnitControls;assembly=MECF.Framework.UI.Client"
|
||||
xmlns:Release="clr-namespace:VMControls.WPF.Release;assembly=VMControls.WPF.Release"
|
||||
d:DesignHeight="800"
|
||||
d:DesignWidth="1980"
|
||||
lex:LocalizeDictionary.DesignCulture="en"
|
||||
lex:ResxLocalizationProvider.DefaultAssembly="Sicentury.Localization"
|
||||
lex:ResxLocalizationProvider.DefaultDictionary="lang_common"
|
||||
mc:Ignorable="d">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="500" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid Grid.Column="0" Margin="0 0 5 0">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="auto"/>
|
||||
<RowDefinition/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid Grid.Row="0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="80" />
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="80" />
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="80" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="24" />
|
||||
<RowDefinition Height="32" />
|
||||
<RowDefinition Height="32" />
|
||||
<RowDefinition Height="40" />
|
||||
<RowDefinition Height="40" />
|
||||
<RowDefinition Height="40" />
|
||||
<RowDefinition Height="40" />
|
||||
<RowDefinition Height="40" />
|
||||
<RowDefinition Height="40" />
|
||||
<RowDefinition Height="40" />
|
||||
<RowDefinition Height="40" />
|
||||
<RowDefinition/>
|
||||
</Grid.RowDefinitions>
|
||||
<Label
|
||||
Grid.ColumnSpan="6"
|
||||
HorizontalContentAlignment="Center"
|
||||
VerticalContentAlignment="Center"
|
||||
Content="Load Rotation"
|
||||
Style="{DynamicResource Table_TitleStyle}" />
|
||||
<Border
|
||||
Grid.Row="1"
|
||||
Padding="5,1,0,1"
|
||||
Background="{DynamicResource Table_BG_Title}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,1,1">
|
||||
<TextBlock
|
||||
VerticalAlignment="Center"
|
||||
FontFamily="Arial"
|
||||
FontSize="12"
|
||||
Foreground="{DynamicResource FG_Black}"
|
||||
Text="{lex:Loc ID_TXT_Busy}"
|
||||
TextWrapping="Wrap" />
|
||||
</Border>
|
||||
<Border
|
||||
Grid.Row="1"
|
||||
Grid.Column="1"
|
||||
Padding="5,1,0,1"
|
||||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="0,0,0,1">
|
||||
<deviceControl:AITSensor
|
||||
HorizontalAlignment="Center"
|
||||
GreenColor="True"
|
||||
LightOnValue="{Binding LdRotationIsBusy}" />
|
||||
</Border>
|
||||
|
||||
<Border
|
||||
Grid.Row="1"
|
||||
Grid.Column="2"
|
||||
Padding="5,1,0,1"
|
||||
Background="{DynamicResource Table_BG_Title}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,1,1">
|
||||
<TextBlock
|
||||
VerticalAlignment="Center"
|
||||
FontFamily="Arial"
|
||||
FontSize="12"
|
||||
Foreground="{DynamicResource FG_Black}"
|
||||
Text="{lex:Loc ID_TXT_Servo_On}"
|
||||
TextWrapping="Wrap" />
|
||||
</Border>
|
||||
<Border
|
||||
Grid.Row="1"
|
||||
Grid.Column="3"
|
||||
Padding="5,1,0,1"
|
||||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="0,0,0,1">
|
||||
<deviceControl:AITSensor
|
||||
HorizontalAlignment="Center"
|
||||
GreenColor="True"
|
||||
LightOnValue="{Binding LdRotationIsServoOn}" />
|
||||
</Border>
|
||||
|
||||
<Border
|
||||
Grid.Row="1"
|
||||
Grid.Column="4"
|
||||
Padding="5,1,0,1"
|
||||
Background="{DynamicResource Table_BG_Title}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,1,1">
|
||||
<TextBlock
|
||||
VerticalAlignment="Center"
|
||||
FontFamily="Arial"
|
||||
FontSize="12"
|
||||
Foreground="{DynamicResource FG_Black}"
|
||||
Text="{lex:Loc ID_TXT_Done}"
|
||||
TextWrapping="Wrap" />
|
||||
</Border>
|
||||
<Border
|
||||
Grid.Row="1"
|
||||
Grid.Column="5"
|
||||
Padding="5,1,0,1"
|
||||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="0,0,0,1">
|
||||
<deviceControl:AITSensor
|
||||
HorizontalAlignment="Center"
|
||||
GreenColor="True"
|
||||
LightOnValue="{Binding LdRotationIsServoDone}" />
|
||||
</Border>
|
||||
|
||||
<Border
|
||||
Grid.Row="2"
|
||||
Grid.Column="0"
|
||||
Padding="5,1,0,1"
|
||||
Background="{DynamicResource Table_BG_Title}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,1,1">
|
||||
<TextBlock
|
||||
VerticalAlignment="Center"
|
||||
lex:ResxLocalizationProvider.DefaultDictionary="lang_deviceview"
|
||||
FontFamily="Arial"
|
||||
FontSize="12"
|
||||
Foreground="{DynamicResource FG_Black}"
|
||||
Text="{lex:Loc ID_TXT_WaferPlaced}"
|
||||
TextWrapping="Wrap" />
|
||||
</Border>
|
||||
<Border
|
||||
Grid.Row="2"
|
||||
Grid.Column="1"
|
||||
Padding="5,1,0,1"
|
||||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="0,0,0,1">
|
||||
<deviceControl:AITSensor
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
CustomColorOff="Gray"
|
||||
CustomColorOn="Lime"
|
||||
DeviceData="{Binding LoadWaferPlaced}"
|
||||
IsCustomRender="True" />
|
||||
</Border>
|
||||
|
||||
<Border
|
||||
Grid.Row="2"
|
||||
Grid.Column="2"
|
||||
Padding="5,1,0,1"
|
||||
Background="{DynamicResource Table_BG_Title}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,1,1">
|
||||
<TextBlock
|
||||
VerticalAlignment="Center"
|
||||
lex:ResxLocalizationProvider.DefaultDictionary="lang_deviceview"
|
||||
FontFamily="Arial"
|
||||
FontSize="12"
|
||||
Foreground="{DynamicResource FG_Black}"
|
||||
Text="{lex:Loc ID_TXT_TrayHomeSensor}"
|
||||
TextWrapping="Wrap" />
|
||||
</Border>
|
||||
<Border
|
||||
Grid.Row="2"
|
||||
Grid.Column="3"
|
||||
Padding="5,1,0,1"
|
||||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="0,0,0,1">
|
||||
<deviceControl:AITSensor
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
CustomColorOff="Gray"
|
||||
CustomColorOn="Lime"
|
||||
DeviceData="{Binding LoadTraySensor}"
|
||||
IsCustomRender="True" />
|
||||
</Border>
|
||||
|
||||
<Border
|
||||
Grid.Row="2"
|
||||
Grid.Column="4"
|
||||
Padding="5,1,0,1"
|
||||
Background="{DynamicResource Table_BG_Title}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,1,1">
|
||||
<TextBlock
|
||||
VerticalAlignment="Center"
|
||||
FontFamily="Arial"
|
||||
FontSize="12"
|
||||
Foreground="{DynamicResource FG_Black}"
|
||||
Text="{lex:Loc ID_TXT_Error}"
|
||||
TextWrapping="Wrap" />
|
||||
</Border>
|
||||
|
||||
<Border
|
||||
Grid.Row="2"
|
||||
Grid.Column="5"
|
||||
Padding="5,1,0,1"
|
||||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="0,0,0,1">
|
||||
<deviceControl:AITSensor
|
||||
HorizontalAlignment="Center"
|
||||
GreenColor="True"
|
||||
LightOnValue="{Binding LdRotationIsServoError}" />
|
||||
</Border>
|
||||
|
||||
|
||||
<Border
|
||||
Grid.Row="5"
|
||||
Grid.Column="0"
|
||||
Grid.ColumnSpan="2"
|
||||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,1,1">
|
||||
<Button
|
||||
Width="130"
|
||||
Height="30"
|
||||
HorizontalAlignment="Center"
|
||||
lex:ResxLocalizationProvider.DefaultDictionary="lang_deviceview"
|
||||
Content="{lex:Loc ID_BTN_RelativeHome_Content}"
|
||||
IsEnabled="{Binding LdRotationBtnEnable}">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="LdRotationRelativeHome" />
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</Button>
|
||||
</Border>
|
||||
<Border
|
||||
Grid.Row="5"
|
||||
Grid.Column="2"
|
||||
Grid.ColumnSpan="2"
|
||||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,1,1">
|
||||
<Button
|
||||
Width="130"
|
||||
Height="30"
|
||||
HorizontalAlignment="Center"
|
||||
Content="Offset"
|
||||
IsEnabled="{Binding LdRotationBtnEnable}"
|
||||
Visibility="Hidden">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="LdRotationRelativeHomeOffset" />
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</Button>
|
||||
</Border>
|
||||
<Border
|
||||
Grid.Row="5"
|
||||
Grid.Column="4"
|
||||
Grid.ColumnSpan="2"
|
||||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,1,1">
|
||||
<Button
|
||||
Width="80"
|
||||
Height="30"
|
||||
HorizontalAlignment="Center"
|
||||
Content="{lex:Loc ID_BTN_Stop_Content}">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="LdRotationStop" />
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</Button>
|
||||
</Border>
|
||||
|
||||
<Border
|
||||
Grid.Row="6"
|
||||
Grid.Column="0"
|
||||
Grid.ColumnSpan="2"
|
||||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,1,1">
|
||||
<Button
|
||||
Width="130"
|
||||
Height="30"
|
||||
HorizontalAlignment="Center"
|
||||
lex:ResxLocalizationProvider.DefaultDictionary="lang_deviceview"
|
||||
Content="{lex:Loc ID_BTN_JogCW_Content}"
|
||||
IsEnabled="{Binding LdRotationBtnEnable}">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="LdRotationJogCW">
|
||||
<cal:Parameter Value="{Binding Path=Text, ElementName=LdStationJogDegree}" />
|
||||
</cal:ActionMessage>
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</Button>
|
||||
</Border>
|
||||
|
||||
<Border
|
||||
Grid.Row="6"
|
||||
Grid.Column="2"
|
||||
Grid.ColumnSpan="2"
|
||||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,1,1">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBox
|
||||
x:Name="LdStationJogDegree"
|
||||
MinWidth="90"
|
||||
Margin="10,10,10,9.6"
|
||||
HorizontalAlignment="Stretch"
|
||||
VerticalAlignment="Center"
|
||||
FontFamily="Arial"
|
||||
FontSize="12"
|
||||
Text="0.00" />
|
||||
<TextBlock
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Text="°" />
|
||||
</StackPanel>
|
||||
</Border>
|
||||
|
||||
<Border
|
||||
Grid.Row="6"
|
||||
Grid.Column="4"
|
||||
Grid.ColumnSpan="2"
|
||||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,1,1">
|
||||
<Button
|
||||
Width="80"
|
||||
Height="30"
|
||||
HorizontalAlignment="Center"
|
||||
Content="{lex:Loc ID_BTN_ServoOn_Content}">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="LdRotationServoOn" />
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</Button>
|
||||
</Border>
|
||||
|
||||
<Border
|
||||
Grid.Row="7"
|
||||
Grid.Column="0"
|
||||
Grid.ColumnSpan="2"
|
||||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,1,1">
|
||||
<Button
|
||||
Width="130"
|
||||
Height="30"
|
||||
HorizontalAlignment="Center"
|
||||
lex:ResxLocalizationProvider.DefaultDictionary="lang_deviceview"
|
||||
Content="{lex:Loc ID_BTN_JogCCW_Content}"
|
||||
IsEnabled="{Binding LdRotationBtnEnable}">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="LdRotationJogCCW">
|
||||
<cal:Parameter Value="{Binding Path=Text, ElementName=LdStationJogDegree}" />
|
||||
</cal:ActionMessage>
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</Button>
|
||||
</Border>
|
||||
<Border
|
||||
Grid.Row="7"
|
||||
Grid.Column="2"
|
||||
Grid.ColumnSpan="2"
|
||||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,1,1" />
|
||||
<Border
|
||||
Grid.Row="7"
|
||||
Grid.Column="4"
|
||||
Grid.ColumnSpan="2"
|
||||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,1,1">
|
||||
<Button
|
||||
Width="80"
|
||||
Height="30"
|
||||
HorizontalAlignment="Center"
|
||||
Content="{lex:Loc ID_BTN_Reset_Content}">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="LdRotationReset" />
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</Button>
|
||||
</Border>
|
||||
|
||||
<Border
|
||||
Grid.Row="3"
|
||||
Grid.Column="0"
|
||||
Padding="5,1,0,1"
|
||||
Background="{DynamicResource Table_BG_Title}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,1,1">
|
||||
<TextBlock
|
||||
VerticalAlignment="Center"
|
||||
lex:ResxLocalizationProvider.DefaultDictionary="lang_deviceview"
|
||||
FontFamily="Arial"
|
||||
FontSize="12"
|
||||
Foreground="{DynamicResource FG_Black}"
|
||||
Text="{lex:Loc ID_TXT_CurrentPos}"
|
||||
TextWrapping="Wrap" />
|
||||
</Border>
|
||||
<Border
|
||||
Grid.Row="3"
|
||||
Grid.Column="1"
|
||||
Padding="5,1,0,1"
|
||||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="0,0,0,1">
|
||||
<TextBlock
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
FontFamily="Arial"
|
||||
FontSize="12"
|
||||
Foreground="{DynamicResource FG_Black}"
|
||||
Text="{Binding LdRotationCurPos, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, StringFormat={}{0:F1}}"
|
||||
TextWrapping="Wrap" />
|
||||
</Border>
|
||||
<Border
|
||||
Grid.Row="3"
|
||||
Grid.Column="2"
|
||||
Padding="5,1,0,1"
|
||||
Background="{DynamicResource Table_BG_Title}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,1,1">
|
||||
<TextBlock
|
||||
VerticalAlignment="Center"
|
||||
lex:ResxLocalizationProvider.DefaultDictionary="lang_deviceview"
|
||||
FontFamily="Arial"
|
||||
FontSize="12"
|
||||
Foreground="{DynamicResource FG_Black}"
|
||||
Text="{lex:Loc ID_TXT_TrayPresence}"
|
||||
TextWrapping="Wrap" />
|
||||
</Border>
|
||||
|
||||
<Border
|
||||
Grid.Row="3"
|
||||
Grid.Column="3"
|
||||
Padding="5,1,0,1"
|
||||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="0,0,0,1">
|
||||
<deviceControl:AITSensor
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
CustomColorOff="Gray"
|
||||
CustomColorOn="Lime"
|
||||
DeviceData="{Binding LoadTrayPresence}"
|
||||
IsCustomRender="True" />
|
||||
</Border>
|
||||
|
||||
<Border
|
||||
Grid.Row="2"
|
||||
Grid.Column="3"
|
||||
Padding="5,1,0,1"
|
||||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="0,0,0,1">
|
||||
<deviceControl:AITSensor
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
CustomColorOff="Gray"
|
||||
CustomColorOn="Lime"
|
||||
DeviceData="{Binding LoadTrayHomeSensor}"
|
||||
IsCustomRender="True" />
|
||||
</Border>
|
||||
|
||||
|
||||
<Border
|
||||
Grid.Row="3"
|
||||
Grid.Column="4"
|
||||
Grid.ColumnSpan="2"
|
||||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,1,1" />
|
||||
|
||||
<Border
|
||||
Grid.Row="4"
|
||||
Grid.Column="0"
|
||||
Grid.ColumnSpan="2"
|
||||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,1,1">
|
||||
<Button
|
||||
Width="130"
|
||||
Height="30"
|
||||
HorizontalAlignment="Center"
|
||||
lex:ResxLocalizationProvider.DefaultDictionary="lang_deviceview"
|
||||
Content="{lex:Loc ID_BTN_MoveOneCircle_Content}"
|
||||
IsEnabled="{Binding LdRotationBtnEnable}">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="LdRotationMoveOneCircle" />
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</Button>
|
||||
</Border>
|
||||
<Border
|
||||
Grid.Row="4"
|
||||
Grid.Column="2"
|
||||
Grid.ColumnSpan="2"
|
||||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,1,1" />
|
||||
<Border
|
||||
Grid.Row="4"
|
||||
Grid.Column="4"
|
||||
Grid.ColumnSpan="2"
|
||||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,1,1" />
|
||||
|
||||
<Border
|
||||
Grid.Row="8"
|
||||
Grid.Column="0"
|
||||
Grid.ColumnSpan="2"
|
||||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,1,1">
|
||||
<Button
|
||||
Width="130"
|
||||
Height="30"
|
||||
HorizontalAlignment="Center"
|
||||
lex:ResxLocalizationProvider.DefaultDictionary="lang_deviceview"
|
||||
Content="{lex:Loc ID_BTN_CCDPos1_Content}"
|
||||
IsEnabled="{Binding LdRotationBtnEnable}">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="LdRotationMoveCCD1Pos" />
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</Button>
|
||||
</Border>
|
||||
<Border
|
||||
Grid.Row="8"
|
||||
Grid.Column="2"
|
||||
Grid.ColumnSpan="2"
|
||||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,1,1">
|
||||
<TextBlock
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
FontFamily="Arial"
|
||||
FontSize="12"
|
||||
Foreground="{DynamicResource FG_Black}"
|
||||
Text="{Binding LdCCD1Degree, StringFormat={}{0:F1}}"
|
||||
TextWrapping="Wrap" />
|
||||
</Border>
|
||||
<Border
|
||||
Grid.Row="8"
|
||||
Grid.Column="4"
|
||||
Grid.ColumnSpan="2"
|
||||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,1,1" />
|
||||
|
||||
<Border
|
||||
Grid.Row="9"
|
||||
Grid.Column="0"
|
||||
Grid.ColumnSpan="2"
|
||||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,1,1">
|
||||
<Button
|
||||
Width="130"
|
||||
Height="30"
|
||||
HorizontalAlignment="Center"
|
||||
lex:ResxLocalizationProvider.DefaultDictionary="lang_deviceview"
|
||||
Content="{lex:Loc ID_BTN_CCDPos2_Content}"
|
||||
IsEnabled="{Binding LdRotationBtnEnable}">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="LdRotationMoveCCD2Pos" />
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</Button>
|
||||
</Border>
|
||||
<Border
|
||||
Grid.Row="9"
|
||||
Grid.Column="2"
|
||||
Grid.ColumnSpan="2"
|
||||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,1,1">
|
||||
<TextBlock
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
FontFamily="Arial"
|
||||
FontSize="12"
|
||||
Foreground="{DynamicResource FG_Black}"
|
||||
Text="{Binding LdCCD2Degree, StringFormat={}{0:F1}}"
|
||||
TextWrapping="Wrap" />
|
||||
</Border>
|
||||
<Border
|
||||
Grid.Row="9"
|
||||
Grid.Column="4"
|
||||
Grid.ColumnSpan="2"
|
||||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,1,1" />
|
||||
|
||||
<Border
|
||||
Grid.Row="10"
|
||||
Grid.Column="0"
|
||||
Grid.ColumnSpan="2"
|
||||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,1,1">
|
||||
<Button
|
||||
Width="130"
|
||||
Height="30"
|
||||
HorizontalAlignment="Center"
|
||||
lex:ResxLocalizationProvider.DefaultDictionary="lang_deviceview"
|
||||
Content="CCDPos3"
|
||||
IsEnabled="{Binding LdRotationBtnEnable}">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="LdRotationMoveCCD3Pos" />
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</Button>
|
||||
</Border>
|
||||
<Border
|
||||
Grid.Row="10"
|
||||
Grid.Column="2"
|
||||
Grid.ColumnSpan="2"
|
||||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,1,1">
|
||||
<TextBlock
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
FontFamily="Arial"
|
||||
FontSize="12"
|
||||
Foreground="{DynamicResource FG_Black}"
|
||||
Text="{Binding LdCCD3Degree, StringFormat={}{0:F1}}"
|
||||
TextWrapping="Wrap" />
|
||||
</Border>
|
||||
<Border
|
||||
Grid.Row="10"
|
||||
Grid.Column="4"
|
||||
Grid.ColumnSpan="2"
|
||||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,1,1" />
|
||||
</Grid>
|
||||
<controls:CameraControl IsEnabled="{ Binding LdRotationBtnEnable}" Grid.Row="1" Margin="0 5 0 0"/>
|
||||
</Grid>
|
||||
<Grid Grid.Column="1" Grid.Row="0" Margin="5 0">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="30"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="40"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Label HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Content="视觉检测" Style="{DynamicResource Table_TitleStyle}" />
|
||||
<Release:VmRenderControl Grid.Row="1" IImageSource="{Binding OutputRanderImage}" />
|
||||
<Border Grid.Row="2" Background="{DynamicResource Table_BG_Content}" BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="350"/>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Border Grid.Column="0" Padding="5,1,0,1" Background="{DynamicResource Table_BG_Title}" BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1">
|
||||
<StackPanel Orientation="Horizontal" Grid.Column="0">
|
||||
<TextBlock Grid.Row="2" Margin="12 3" VerticalAlignment="Center" Text="Load:"/>
|
||||
<deviceControl:AITSensor HorizontalAlignment="Center" GreenColor="True" LightOnValue="{Binding VMIsLoad}" />
|
||||
<TextBlock Grid.Row="2" Margin="12 3" VerticalAlignment="Center" Text="Processing:"/>
|
||||
<deviceControl:AITSensor HorizontalAlignment="Center" GreenColor="True" LightOnValue="{Binding VMIsProcessing}" />
|
||||
<Button Content="重载程式" Width="100" Height="30" Margin="12 3">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="ReloadSolution">
|
||||
</cal:ActionMessage>
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</Button>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
<Border Grid.Column="1" Padding="5,1,0,1" Background="{DynamicResource Table_BG_Content}" BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock Grid.Row="2" Width="70" Margin="12 3" VerticalAlignment="Center" Text="放晶圆检测"/>
|
||||
<Button Content="测试本地照片" Width="100" Height="30" Margin="12 3">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="TestLocalFile">
|
||||
<cal:Parameter Value="UIWaferPlaceCheck"/>
|
||||
<cal:Parameter Value="false"/>
|
||||
</cal:ActionMessage>
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</Button>
|
||||
<Button Content="测试当前照片" Width="100" Height="30" Margin="12 3">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="TestCCD">
|
||||
<cal:Parameter Value="UIWaferPlaceCheck"/>
|
||||
<cal:Parameter Value="false"/>
|
||||
</cal:ActionMessage>
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</Button>
|
||||
<Button Content="设此为模板" Width="100" Height="30" Margin="12 3">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="SetSample">
|
||||
<cal:Parameter Value="UIWaferPlaceCheck"/>
|
||||
</cal:ActionMessage>
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</Button>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
<Border Grid.Column="2" Padding="5,1,0,1" Background="{DynamicResource Table_BG_Content}" BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1">
|
||||
<StackPanel Orientation="Horizontal" Grid.Column="2">
|
||||
<TextBlock Grid.Row="2" Width="70" Margin="12 3" VerticalAlignment="Center" Text="组合检测"/>
|
||||
<CheckBox x:Name="cbx6inch" VerticalAlignment="Center">
|
||||
<TextBlock Text="6寸平边"/>
|
||||
</CheckBox>
|
||||
<Button Content="测试本地照片" Width="100" Height="30" Margin="12 3">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="TestLocalFile">
|
||||
<cal:Parameter Value="UIGroupCheck"/>
|
||||
<cal:Parameter Value="{Binding ElementName=cbx6inch,Path=IsChecked}"/>
|
||||
</cal:ActionMessage>
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</Button>
|
||||
<Button Content="测试当前照片" Width="100" Height="30" Margin="12 3">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="TestCCD">
|
||||
<cal:Parameter Value="UIGroupCheck"/>
|
||||
<cal:Parameter Value="{Binding ElementName=cbx6inch,Path=IsChecked}"/>
|
||||
</cal:ActionMessage>
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</Button>
|
||||
<Button Content="设此为模板" Width="100" Height="30" Margin="12 3">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="SetSample">
|
||||
<cal:Parameter Value="GroupCheck"/>
|
||||
</cal:ActionMessage>
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</Button>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
|
||||
</Grid>
|
||||
|
||||
</Border>
|
||||
|
||||
</Grid>
|
||||
<!--<Grid Grid.Column="2" Grid.Row="0" Margin="5 0">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="30"/>
|
||||
<RowDefinition Height="500"/>
|
||||
<RowDefinition Height="60"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Label HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Content="组合检测" Style="{DynamicResource Table_TitleStyle}" />
|
||||
<Release:VmRenderControl Grid.Row="1" IImageSource="{Binding OutputRanderImage}"/>
|
||||
<Border Grid.Row="2" Background="{DynamicResource Table_BG_Content}" BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
-->
|
||||
<!--<TextBlock Grid.Row="2" Width="50" Margin="12 3" VerticalAlignment="Center" Text="Func"/>-->
|
||||
<!--
|
||||
<Button Content="TestLocalFile" Width="100" Height="30" Margin="12 3">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="TestLocalFile"/>
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</Button>
|
||||
<Button Content="TestCCD" Width="100" Height="30" Margin="12 3">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="TestCCD">
|
||||
</cal:ActionMessage>
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</Button>
|
||||
<Button Content="SetSample" Width="100" Height="30" Margin="12 3">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="SetSample"/>
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</Button>
|
||||
-->
|
||||
<!--<Button Content="ReloadSolution" Width="100" Height="30" Margin="12 3">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="ReloadSolution"/>
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</Button>-->
|
||||
<!--
|
||||
<TextBlock Grid.Row="2" Margin="12 3" VerticalAlignment="Center" Text="Load:"/>
|
||||
<deviceControl:AITSensor HorizontalAlignment="Center" GreenColor="True" LightOnValue="{Binding VMIsLoad}" />
|
||||
<TextBlock Grid.Row="2" Margin="12 3" VerticalAlignment="Center" Text="Processing:"/>
|
||||
<deviceControl:AITSensor HorizontalAlignment="Center" GreenColor="True" LightOnValue="{Binding VMIsProcessing}" />
|
||||
</StackPanel>
|
||||
</Border>
|
||||
|
||||
</Grid>-->
|
||||
</Grid>
|
||||
</UserControl>
|
||||
29
App/SicUI/Models/Maintenances/TM/Device2View.xaml.cs
Normal file
29
App/SicUI/Models/Maintenances/TM/Device2View.xaml.cs
Normal file
@ -0,0 +1,29 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using VMControls.Interface;
|
||||
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 SicUI.Client.Models.Platform.TM
|
||||
{
|
||||
/// <summary>
|
||||
/// DeviceView.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class Device2View : UserControl
|
||||
{
|
||||
public Device2View()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
216
App/SicUI/Models/Maintenances/TM/Device2ViewModel.cs
Normal file
216
App/SicUI/Models/Maintenances/TM/Device2ViewModel.cs
Normal file
@ -0,0 +1,216 @@
|
||||
using SicUI.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Aitex.Core.Common.DeviceData;
|
||||
using System.IO;
|
||||
using System.Drawing;
|
||||
using Aitex.Core.Util;
|
||||
using VM.PlatformSDKCS;
|
||||
|
||||
namespace SicUI.Client.Models.Platform.TM
|
||||
{
|
||||
public class Device2ViewModel : SicUIViewModelBase
|
||||
{
|
||||
[Subscription("Load.Rotation.IsServoBusy")]
|
||||
public bool LdRotationIsBusy { get; set; }
|
||||
|
||||
[Subscription("Load.Rotation.IsServoOn")]
|
||||
public bool LdRotationIsServoOn { get; set; }
|
||||
|
||||
[Subscription("Load.Rotation.IsMoveDone")]
|
||||
public bool LdRotationIsServoDone { get; set; }
|
||||
|
||||
[Subscription("Load.Rotation.IsServoError")]
|
||||
public bool LdRotationIsServoError { get; set; }
|
||||
|
||||
[Subscription("TM.LLTrayPresence.DeviceData")]
|
||||
public AITSensorData LoadTrayPresence { get; set; }
|
||||
|
||||
[Subscription("TM.LoadTrayHomeSensor.DeviceData")]
|
||||
public AITSensorData LoadTrayHomeSensor { get; set; }
|
||||
|
||||
[Subscription("TM.LLWaferPlaced.DeviceData")]
|
||||
public AITSensorData LoadWaferPlaced { get; set; }
|
||||
|
||||
[Subscription("Load.Rotation.CurPos")]
|
||||
public double LdRotationCurPos { get; set; }
|
||||
|
||||
[Subscription("Load.Rotation.CCD1Degree")]
|
||||
public double LdCCD1Degree { get; set; }
|
||||
|
||||
[Subscription("Load.Rotation.CCD2Degree")]
|
||||
public double LdCCD2Degree { get; set; }
|
||||
|
||||
[Subscription("Load.Rotation.CCD3Degree")]
|
||||
public double LdCCD3Degree { get; set; }
|
||||
|
||||
[Subscription("LoadLock.IsOnline")]
|
||||
public bool LoadLockIsOnline { get; set; }
|
||||
|
||||
[Subscription("LoadLock.Status")]
|
||||
public string LLStatus { get; set; }
|
||||
|
||||
public bool LdRotationBtnEnable => !LdRotationIsBusy && !LdRotationIsServoError && !LoadLockIsOnline && LLStatus == "Idle";
|
||||
public Device2ViewModel()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
protected override void OnActivate()
|
||||
{
|
||||
base.OnActivate();
|
||||
}
|
||||
|
||||
protected override void OnDeactivate(bool close)
|
||||
{
|
||||
base.OnDeactivate(close);
|
||||
}
|
||||
|
||||
//protected override void InvokeAfterUpdateProperty(Dictionary<string, object> data)
|
||||
//{
|
||||
// base.InvokeAfterUpdateProperty(data);
|
||||
// if (data.ContainsKey("LoadLock.HikVisionMaster.OutputImage"))
|
||||
// {
|
||||
// var bp = (Bitmap)data["LoadLock.HikVisionMaster.OutputImage"];
|
||||
// OutputRanderImage = new(bp);
|
||||
// }
|
||||
//}
|
||||
|
||||
private byte[] _oldbyte;
|
||||
protected override void InvokeBeforeUpdateProperty(Dictionary<string, object> data)
|
||||
{
|
||||
base.InvokeBeforeUpdateProperty(data);
|
||||
var bp = (byte[])QueryDataClient.Instance.Service.GetData("LoadLock.HikVisionMaster.OutputImage");
|
||||
if (bp != null)
|
||||
{
|
||||
if (_oldbyte!=null&&!Array.Equals(_oldbyte,bp))
|
||||
{
|
||||
Bitmap b = BytesToBitmap(bp);
|
||||
OutputRanderImage?.Dispose();
|
||||
OutputRanderImage = new ImageBaseData(b);
|
||||
}
|
||||
}
|
||||
_oldbyte = bp;
|
||||
}
|
||||
|
||||
public Bitmap BytesToBitmap(byte[] bytes)
|
||||
{
|
||||
using (MemoryStream ms = new MemoryStream(bytes))
|
||||
{
|
||||
return new Bitmap(ms); // 或使用Image.FromStream:ml-citation{ref="1,18" data="citationList"}
|
||||
}
|
||||
}
|
||||
|
||||
public void LdRotationStop()
|
||||
{
|
||||
InvokeClient.Instance.Service.DoOperation($"Load.Rotation.Stop");
|
||||
}
|
||||
|
||||
public void LdRotationReset()
|
||||
{
|
||||
InvokeClient.Instance.Service.DoOperation($"Load.Rotation.ServoReset");
|
||||
}
|
||||
|
||||
public void LdRotationServoOn()
|
||||
{
|
||||
InvokeClient.Instance.Service.DoOperation($"Load.Rotation.ServoOn");
|
||||
}
|
||||
|
||||
public void LdRotationMoveOneCircle()
|
||||
{
|
||||
InvokeClient.Instance.Service.DoOperation($"LoadLock.MoveOneCircle");
|
||||
}
|
||||
|
||||
public void LdRotationRelativeHome()
|
||||
{
|
||||
InvokeClient.Instance.Service.DoOperation($"Load.Rotation.MoveRelativeHome");
|
||||
}
|
||||
|
||||
public void LdRotationRelativeHomeOffset()
|
||||
{
|
||||
InvokeClient.Instance.Service.DoOperation($"Load.Rotation.HomeOffset");
|
||||
}
|
||||
|
||||
public void LdRotationMoveCCD1Pos()
|
||||
{
|
||||
InvokeClient.Instance.Service.DoOperation($"Load.Rotation.MoveCCD1Pos");
|
||||
}
|
||||
|
||||
public void LdRotationMoveCCD2Pos()
|
||||
{
|
||||
InvokeClient.Instance.Service.DoOperation($"Load.Rotation.MoveCCD2Pos");
|
||||
}
|
||||
|
||||
public void LdRotationMoveCCD3Pos()
|
||||
{
|
||||
InvokeClient.Instance.Service.DoOperation($"Load.Rotation.MoveCCD3Pos");
|
||||
}
|
||||
|
||||
public void LdRotationJogCW(float angle)
|
||||
{
|
||||
InvokeClient.Instance.Service.DoOperation($"Load.Rotation.JogCW", angle);
|
||||
}
|
||||
|
||||
public void LdRotationJogCCW(float angle)
|
||||
{
|
||||
InvokeClient.Instance.Service.DoOperation($"Load.Rotation.JogCCW", angle);
|
||||
}
|
||||
|
||||
#region CCD
|
||||
[Subscription("LoadLock.HikGigeCamera.IsConnected")]
|
||||
public bool CamConnection { get; set; }
|
||||
|
||||
[Subscription("LoadLock.HikGigeCamera.Message")]
|
||||
public string CamMessage { get; set; }
|
||||
|
||||
public bool CTS { get; set; } = false;
|
||||
#endregion
|
||||
|
||||
#region VM
|
||||
|
||||
[Subscription("LoadLock.HikVisionMaster.SampleCircle")]
|
||||
public double[] SampleCircle { get; set; }
|
||||
|
||||
[Subscription("LoadLock.HikVisionMaster.CurrentCircle")]
|
||||
public double[] CurrentCircle { get; set; }
|
||||
|
||||
[Subscription("LoadLock.HikVisionMaster.Distance")]
|
||||
public double Distance { get; set; }
|
||||
|
||||
[Subscription("LoadLock.HikVisionMaster.IsProcessing")]
|
||||
public string VMIsProcessing { get; set; }
|
||||
|
||||
[Subscription("LoadLock.HikVisionMaster.LoadFile")]
|
||||
public string VMIsLoad { get; set; }
|
||||
|
||||
[Subscription("LoadLock.HikVisionMaster.ModuleStatus")]
|
||||
public bool VMRun { get; set; }
|
||||
|
||||
[Subscription("LoadLock.HikVisionMaster.Result")]
|
||||
public bool VMResult { get; set; }
|
||||
|
||||
public ImageBaseData OutputRanderImage { get; set; }
|
||||
|
||||
public void TestLocalFile(string value, bool isinch6)
|
||||
{
|
||||
InvokeClient.Instance.Service.DoOperation($"LoadLock.HikVisionMaster.ExecuteLocalFile", value + (isinch6 ? "FindLine" : ""));
|
||||
}
|
||||
|
||||
public void TestCCD(string value,bool isinch6)
|
||||
{
|
||||
InvokeClient.Instance.Service.DoOperation($"LoadLock.HikVisionMaster.ExecuteGrab", value + (isinch6? "FindLine" : ""));
|
||||
}
|
||||
|
||||
public void SetSample(string value)
|
||||
{
|
||||
InvokeClient.Instance.Service.DoOperation($"LoadLock.HikVisionMaster.SetSample", value);
|
||||
}
|
||||
|
||||
public void ReloadSolution()
|
||||
{
|
||||
InvokeClient.Instance.Service.DoOperation($"LoadLock.HikVisionMaster.ReloadSolution");
|
||||
}
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
||||
@ -57,9 +57,41 @@
|
||||
</PropertyGroup>
|
||||
<PropertyGroup />
|
||||
<ItemGroup>
|
||||
<Reference Include="Apps.Data, Version=1.0.0.0, Culture=neutral, PublicKeyToken=5defd79a1cc9b45b, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\Dependencies\VisionMaster\Apps.Data.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="CalculatorModuleCs, Version=1.0.0.0, Culture=neutral, PublicKeyToken=05c54d68067b9216, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\Dependencies\VisionMaster\CalculatorModuleCs.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="CommandLine">
|
||||
<HintPath>..\..\Dependencies\CommandLine.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GlobalVariableModuleCs, Version=1.0.0.0, Culture=neutral, PublicKeyToken=df9beaf7c020f858, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\Dependencies\VisionMaster\GlobalVariableModuleCs.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="IfModuleCs, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1ba1107829384f3c, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\Dependencies\VisionMaster\IfModuleCs.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="ImageSourceModuleCs, Version=1.0.0.0, Culture=neutral, PublicKeyToken=6a03c4a48a6df5e6, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\Dependencies\VisionMaster\ImageSourceModuleCs.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="IMVSCaliperEdgeModuCs, Version=1.0.0.0, Culture=neutral, PublicKeyToken=2e9b837021fe7c82, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\Dependencies\VisionMaster\IMVSCaliperEdgeModuCs.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="IMVSCircleFitModuCs, Version=1.0.0.0, Culture=neutral, PublicKeyToken=43056db02cf11d53, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\Dependencies\VisionMaster\IMVSCircleFitModuCs.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="IMVSLineFindModuCs, Version=1.0.0.0, Culture=neutral, PublicKeyToken=15941e18b10db20b, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\Dependencies\VisionMaster\IMVSLineFindModuCs.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="KXGEM">
|
||||
<HintPath>..\..\Dependencies\KXGEM.dll</HintPath>
|
||||
</Reference>
|
||||
@ -72,6 +104,10 @@
|
||||
</Reference>
|
||||
<Reference Include="PresentationFramework.Aero" />
|
||||
<Reference Include="presentationframework.aero2" />
|
||||
<Reference Include="SaveImageCs, Version=1.0.0.0, Culture=neutral, PublicKeyToken=71ec4914c8d95fd5, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\Dependencies\VisionMaster\SaveImageCs.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="SciChart.Charting">
|
||||
<HintPath>..\..\Dependencies\SciCart\SciChart.Charting.dll</HintPath>
|
||||
</Reference>
|
||||
@ -104,6 +140,42 @@
|
||||
<Reference Include="System.Xaml">
|
||||
<RequiredTargetFramework>4.0</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="VM.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=61600122bc9264b9, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\Dependencies\VisionMaster\VM.Core.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="VM.PlatformSDKCS, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c1484a72052ee3d4, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\Dependencies\VisionMaster\VM.PlatformSDKCS.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="VM.Util, Version=1.0.0.0, Culture=neutral, PublicKeyToken=a8f590f1c0b8da86, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\Dependencies\VisionMaster\VM.Util.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="VM.Utility, Version=1.0.0.0, Culture=neutral, PublicKeyToken=11e824e986ec8874, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\Dependencies\VisionMaster\VM.Utility.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="VMControls.BaseInterface, Version=1.0.0.0, Culture=neutral, PublicKeyToken=14444b8df74b6e6a, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\Dependencies\VisionMaster\VMControls.BaseInterface.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="VMControls.Interface, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cb41614600cf774b, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\Dependencies\VisionMaster\VMControls.Interface.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="VMControls.RenderInterface, Version=1.0.0.0, Culture=neutral, PublicKeyToken=4bcfc50547abbb24, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\Dependencies\VisionMaster\VMControls.RenderInterface.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="VMControls.Winform.Release, Version=1.0.0.0, Culture=neutral, PublicKeyToken=2efa940dfee4dc7e, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\Dependencies\VisionMaster\VMControls.Winform.Release.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="VMControls.WPF.Release, Version=1.0.0.0, Culture=neutral, PublicKeyToken=fdd2c8be7291c30c, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\Dependencies\VisionMaster\VMControls.WPF.Release.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="WindowsBase" />
|
||||
<Reference Include="PresentationCore" />
|
||||
<Reference Include="PresentationFramework" />
|
||||
@ -142,6 +214,9 @@
|
||||
<Compile Include="Controls\BodyLid.xaml.cs">
|
||||
<DependentUpon>BodyLid.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Controls\CameraControl.xaml.cs">
|
||||
<DependentUpon>CameraControl.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Controls\ChooseDialogBoxView.xaml.cs">
|
||||
<DependentUpon>ChooseDialogBoxView.xaml</DependentUpon>
|
||||
</Compile>
|
||||
@ -213,6 +288,10 @@
|
||||
<DependentUpon>RuntimeView.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Models\Maintenances\RuntimeViewModel.cs" />
|
||||
<Compile Include="Models\Maintenances\TM\Device2View.xaml.cs">
|
||||
<DependentUpon>Device2View.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Models\Maintenances\TM\Device2ViewModel.cs" />
|
||||
<Compile Include="Models\Maintenances\TM\DeviceView.xaml.cs">
|
||||
<DependentUpon>DeviceView.xaml</DependentUpon>
|
||||
</Compile>
|
||||
@ -371,6 +450,10 @@
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="Controls\CameraControl.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Page Include="Controls\ChooseDialogBoxView.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
@ -447,6 +530,10 @@
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Page Include="Models\Maintenances\TM\Device2View.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Page Include="Models\Maintenances\TM\DeviceView.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user