Commit d4aab41a authored by 潘栩锋's avatar 潘栩锋 :bicyclist:

收卷改

parent 31d65a0b
......@@ -12,19 +12,6 @@
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FLY.ControlLibrary;component/Themes/Dictionary_MyStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
<ControlTemplate x:Key="picture_button" TargetType="Button">
<Border Name="border" BorderThickness="1" CornerRadius="5">
<ContentPresenter Content="{TemplateBinding Content}"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="border" Property="BorderBrush" Value="LightBlue"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="border" Property="Background" Value="LightGray"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</ResourceDictionary>
</Page.Resources>
<Grid Name="root_grid" >
......
......@@ -118,7 +118,5 @@ namespace FLY.Weight.Common
/// </summary>
public static ERRNO WEIGHT_ERRNO_MIXERMOTOR;
#endregion
}
}
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Windows.Data;
namespace FLY.Winder.UI.Client.Converter
{
public class IsGTMultiValueConverter : IMultiValueConverter
{
/// <summary>
/// values[0] 大于 values[1] 返回true
/// values[0] 小于等于 values[1] 返回false
/// 类型不对,返回 false
/// </summary>
/// <param name="values"></param>
/// <param name="targetType"></param>
/// <param name="parameter"></param>
/// <param name="culture"></param>
/// <returns></returns>
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
if (values.Count() != 3)
return false;
double[] v = new double[3];
for (int i = 0; i < 3; i++)
{
if (!double.TryParse(values[i].ToString(), out v[i]))
return false;
}
if (v[0] > v[1] - v[2])
return true;
return false;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Data;
namespace FLY.Winder.UI.Client.Converter
{
public class RatioConverter : IMultiValueConverter
{
#region IMultiValueConverter 成员
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (values.Length == 3)//必须要检查,不然 界面生成器 会错误,提示转换异常
{
double ratio;
double value = System.Convert.ToDouble(values[0]);
double max = System.Convert.ToDouble(values[1]);
double ActualWidth = System.Convert.ToDouble(values[2]);
if (max <= 0)
ratio = 0;
else
ratio = (double)value / max;
if (ratio < 0)
ratio = 0;
else if (ratio > 1)
ratio = 1;
return ActualWidth * ratio;
}
else
{
return 100;
}
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
return null;
}
#endregion
}
}
<?xml version="1.0" encoding="utf-8" ?>
<Weavers>
<PropertyChanged2 />
</Weavers>
<Page x:Class="FLY.Winder.UI.Client.Page_ErrorNewestTable"
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:FLY.Winder.UI.Client"
mc:Ignorable="d"
d:DesignHeight="900" d:DesignWidth="960" Background="White"
Title="Page_ErrorTable">
<Page.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FLY.ControlLibrary;component/Themes/Dictionary_MyStyle.xaml"/>
<ResourceDictionary Source="pack://application:,,,/FLY.Winder.UI.Client;component/UnitTests/UnitTests_winder.xaml"/>
</ResourceDictionary.MergedDictionaries>
<ControlTemplate x:Key="picture_button" TargetType="Button">
<Border Name="border" BorderThickness="1" CornerRadius="5">
<ContentPresenter Content="{TemplateBinding Content}"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="border" Property="BorderBrush" Value="LightBlue"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="border" Property="Background" Value="LightGray"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</ResourceDictionary>
</Page.Resources>
<Grid Name="root_grid" >
<!--<Grid.DataContext>
<StaticResource ResourceKey="testunit_weighters"/>
</Grid.DataContext>-->
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="496*" />
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal" Background="{StaticResource Background_Title}">
<Button Style="{StaticResource ButtonStyle_back2}" Click="button_back_Click" />
<TextBlock Style="{StaticResource TextBlockStyle_Title}" Text="报警"/>
</StackPanel>
<Grid Grid.Row="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Border Width="150" Background="{StaticResource Color_theme_activity}" Margin="0,5,5,5" >
<TextBlock Style="{StaticResource TextBlockStyle_ItemHeader}" Text="历史报警&#x0a;列表" />
</Border>
<Grid Grid.Column="1" x:Name="grid_window">
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" Margin="5">
<Button Style="{StaticResource ButtonStyle_empty}" Background="Transparent" Click="button_prepage_Click" Width="40" Height="40" Margin="5">
<Path Data="{StaticResource Geometry_arrow-left}" Fill="{StaticResource Color_theme_activity}" Stretch="Uniform"/>
</Button>
<StackPanel Orientation="Horizontal" Margin="5">
<TextBlock Style="{StaticResource TextBlockStyle_FieldContent_mm}" Text="第"/>
<TextBlock Style="{StaticResource TextBlockStyle_FieldContent}" Text="{Binding CurrentPage}"/>
<TextBlock Style="{StaticResource TextBlockStyle_FieldContent_mm}" Text="页"/>
<TextBlock Style="{StaticResource TextBlockStyle_FieldContent_mm_interval}" Text="/"/>
<TextBlock Style="{StaticResource TextBlockStyle_FieldContent_mm}" Text="共"/>
<TextBlock Style="{StaticResource TextBlockStyle_FieldContent}" Text="{Binding TotalPages}"/>
<TextBlock Style="{StaticResource TextBlockStyle_FieldContent_mm}" Text="页"/>
</StackPanel>
<Button Style="{StaticResource ButtonStyle_empty}" Background="Transparent" Click="button_nextpage_Click" Width="40" Height="40" Margin="5">
<Path Data="{StaticResource Geometry_arrow-right}" Fill="{StaticResource Color_theme_activity}" Stretch="Uniform"/>
</Button>
<Button Style="{StaticResource ButtonStyle_empty}" Background="Transparent" Click="button_newest_Click" Width="40" Height="40" Margin="5">
<Path Data="{StaticResource Geometry_arrow-collapse-right}" Fill="{StaticResource Color_theme_activity}" Stretch="Uniform"/>
</Button>
<StackPanel Orientation="Horizontal" Margin="20,5">
<TextBlock Style="{StaticResource TextBlockStyle_FieldHeaderEditable}" Text="显示"/>
<TextBox Style="{StaticResource TextBoxStyle_FieldContent}" Text="{Binding Size}" MinWidth="40"/>
<TextBlock Style="{StaticResource TextBlockStyle_FieldContent_mm}" Text="行"/>
</StackPanel>
</StackPanel>
<Button Grid.Column="1" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="10,-30,30,10" Style="{StaticResource ResourceKey=ButtonStyle_empty}" Click="button_clear_click" >
<Grid>
<Ellipse Fill="White" Stretch="Uniform" Width="60"/>
<Path Data="{StaticResource Geometry_close-circle}" Fill="Red" Stretch="Uniform" Width="60" Height="60"/>
<TextBlock Text="清空" Padding="2" Background="Red" Foreground="White" FontSize="18" VerticalAlignment="Bottom" HorizontalAlignment="Center" Margin="0,0,0,-10"/>
</Grid>
</Button>
</Grid>
<DataGrid Grid.Row="1" ItemsSource="{Binding Record}" AutoGenerateColumns="False" IsReadOnly="True" >
<DataGrid.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="FontSize" Value="20"/>
</Style>
</DataGrid.CellStyle>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Time,StringFormat={}{0:MM/dd HH:mm}}" >
<DataGridTextColumn.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Style="{StaticResource TextBlockStyle_FieldHeader}" Text="时间" />
</StackPanel>
</DataGridTextColumn.Header>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding State}" >
<DataGridTextColumn.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Style="{StaticResource TextBlockStyle_FieldHeader}" Text="状态" />
</StackPanel>
</DataGridTextColumn.Header>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding Description}" >
<DataGridTextColumn.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Style="{StaticResource TextBlockStyle_FieldHeader}" Text="报警描述" />
</StackPanel>
</DataGridTextColumn.Header>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Grid>
</Grid>
</Page>

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Linq;
using System.Text;
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 FLY.Winder.UI.Client
{
/// <summary>
/// Page_Flow.xaml 的交互逻辑
/// </summary>
public partial class Page_ErrorNewestTable : Page
{
FLY.OBJComponents.Client.WarningServiceClient mWarningService;
FLY.OBJComponents.Client.BufferWindow<FLY.OBJComponents.Common.FlyData_WarningHistory> mWindow;
public Page_ErrorNewestTable()
{
InitializeComponent();
Init();
}
void Init()
{
mWarningService = TDGage.Current.mWarningService;
mWindow = new OBJComponents.Client.BufferWindow<OBJComponents.Common.FlyData_WarningHistory>(mWarningService.NewestList);
grid_window.DataContext = mWindow;
}
private void button_back_Click(object sender, RoutedEventArgs e)
{
NavigationService.GoBack();
}
private void button_clear_click(object sender, RoutedEventArgs e)
{
if (FLY.ControlLibrary.MyMessageBox.Show("确定是否清空全部历史数据?") == true)
{
mWarningService.Reset();
FLY.ControlLibrary.Window_Tip.Show("成功", "清除完毕!", TimeSpan.FromSeconds(2));
}
}
private void button_prepage_Click(object sender, RoutedEventArgs e)
{
mWindow.MovePrePage();
}
private void button_nextpage_Click(object sender, RoutedEventArgs e)
{
mWindow.MoveNextPage();
}
private void button_newest_Click(object sender, RoutedEventArgs e)
{
mWindow.MoveNewest();
}
}
}
<Page x:Class="FLY.Winder.UI.Client.Page_ErrorTable"
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:FLY.Winder.UI.Client"
mc:Ignorable="d"
d:DesignHeight="900" d:DesignWidth="960" Background="White"
Title="Page_ErrorTable">
<Page.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FLY.ControlLibrary;component/Themes/Dictionary_MyStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Page.Resources>
<Grid Name="root_grid" >
<!--<Grid.DataContext>
<StaticResource ResourceKey="testunit_weighters"/>
</Grid.DataContext>-->
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="496*" />
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal" Background="{StaticResource Background_Title}">
<Button Style="{StaticResource ButtonStyle_back2}" Click="button_back_Click" />
<TextBlock Style="{StaticResource TextBlockStyle_Title}" Text="报警"/>
</StackPanel>
<Grid Grid.Row="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Border Width="150" Background="{StaticResource Color_theme_activity}" Margin="0,5,5,5" >
<TextBlock Style="{StaticResource TextBlockStyle_ItemHeader}" Text="当前报警&#x0a;列表" />
</Border>
<DataGrid Grid.Column="1" x:Name="gridFlows" AutoGenerateColumns="False" IsReadOnly="True" >
<DataGrid.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="FontSize" Value="20"/>
</Style>
</DataGrid.CellStyle>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Time,StringFormat={}{0:MM/dd HH:mm}}" IsReadOnly="True">
<DataGridTextColumn.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Style="{StaticResource TextBlockStyle_FieldHeader}" Text="时间" />
</StackPanel>
</DataGridTextColumn.Header>
</DataGridTextColumn>
<DataGridTextColumn x:Name="column_cp" Binding="{Binding Description}" >
<DataGridTextColumn.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Style="{StaticResource TextBlockStyle_FieldHeader}" Text="报警描述" />
</StackPanel>
</DataGridTextColumn.Header>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
<Button Grid.Column="1" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="10,-30,30,10" Style="{StaticResource ResourceKey=ButtonStyle_empty}" Click="button_newest_click" >
<Grid>
<Ellipse Fill="{StaticResource Color_theme_static}" Stretch="Uniform" Width="60" Height="60" />
<Path Data="{StaticResource Geometry_database-search}" Fill="White" Stretch="Uniform" Width="30"/>
<TextBlock Text="查询" Padding="2" Background="{StaticResource Color_theme_static}" Foreground="White" FontSize="18" VerticalAlignment="Bottom" HorizontalAlignment="Center" Margin="0,0,0,-10"/>
</Grid>
</Button>
</Grid>
</Grid>
</Page>
using FLY.Winder.Client;
using FLY.OBJComponents.Client;
using FLY.OBJComponents.Common;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
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 FLY.Winder.UI.Client
{
/// <summary>
/// Page_ErrorTable.xaml 的交互逻辑
/// </summary>
public partial class Page_ErrorTable : Page
{
FLY.OBJComponents.Client.WarningServiceClient mWarningService;
FLY.OBJComponents.Client.BufferWindow<FlyData_WarningHistory> mWindow;
public Page_ErrorTable()
{
InitializeComponent();
Init();
}
void Init()
{
mWarningService = TDGage.Current.mWarningService;
mWindow = TDGage.Current.mWarningReasonWindow;
gridFlows.ItemsSource = mWindow.Record;
}
private void button_back_Click(object sender, RoutedEventArgs e)
{
NavigationService.GoBack();
}
private void button_newest_click(object sender, RoutedEventArgs e)
{
NavigationService ns = Application.Current.Properties["NavigationService"] as NavigationService;
if (ns != null)
{
Page_ErrorNewestTable p = new Page_ErrorNewestTable();
ns.Navigate(p);
}
}
private void button_reset_click(object sender, RoutedEventArgs e)
{
mWarningService.Reset();
}
}
}
<Page x:Class="FLY.Winder.UI.Client.Page_Menu"
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:FLY.Winder.UI.Client"
xmlns:misc="clr-namespace:Misc;assembly=MISC"
mc:Ignorable="d"
d:DesignHeight="768" d:DesignWidth="1388"
Background="White"
Title="Page_Menu">
<Page.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FLY.ControlLibrary;component/Themes/Dictionary_MyStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
<misc:Ver x:Key="version" SrcType="{x:Type local:Page_Menu}"/>
</ResourceDictionary>
</Page.Resources>
<Grid >
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="540*" />
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal">
<Button Style="{StaticResource ButtonStyle_back}" Command="BrowseBack"/>
</StackPanel>
<StackPanel Orientation="Horizontal" FlowDirection="RightToLeft">
<StackPanel Orientation="Vertical" DataContext="{StaticResource version}">
<Button Style="{StaticResource ButtonStyle_empty}" Background="{x:Null}" Click="button_version_Click" VerticalAlignment="Center">
<TextBlock Text="{Binding .}" FontSize="24" FontWeight="Bold" Margin="15" />
</Button>
</StackPanel>
</StackPanel>
<ScrollViewer Grid.Row="1" VerticalScrollBarVisibility="Disabled" HorizontalScrollBarVisibility="Auto">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="100" />
</Grid.RowDefinitions>
<WrapPanel Orientation="Vertical" Grid.Column="1">
<WrapPanel.Resources>
<Style TargetType="Button" BasedOn="{StaticResource ResourceKey=ButtonStyle_empty}">
<Setter Property="Background" Value="#FF0083D7"/>
<Setter Property="Width" Value="225"/>
<Setter Property="Height" Value="140"/>
<Setter Property="Margin" Value="5"/>
</Style>
</WrapPanel.Resources>
<Button Click="button_pidparam_Click" >
<TextBlock FontWeight="Bold" FontFamily="YouYuan" VerticalAlignment="Center">
<Run Foreground="White" FontSize="40" Text="PID参数"/>
</TextBlock>
</Button>
<Button Click="button_winderparam_Click" >
<TextBlock FontWeight="Bold" FontFamily="YouYuan" VerticalAlignment="Center">
<Run Foreground="White" FontSize="40" Text="收卷参数"/>
</TextBlock>
</Button>
<Button Click="button_error_Click" Background="Red" >
<Grid>
<TextBlock FontWeight="Bold" FontFamily="YouYuan" VerticalAlignment="Center" Foreground="White" FontSize="40" Text="报警管理" Padding="10"/>
</Grid>
</Button>
</WrapPanel>
</Grid>
</ScrollViewer>
</Grid>
</Page>
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 FLY.Winder.UI.Client
{
/// <summary>
/// Page_Menu.xaml 的交互逻辑
/// </summary>
public partial class Page_Menu : Page
{
public Page_Menu()
{
InitializeComponent();
}
private void button_error_Click(object sender, RoutedEventArgs e)
{
Page_ErrorTable p = new Page_ErrorTable();
NavigationService.Navigate(p);
}
private void button_version_Click(object sender, RoutedEventArgs e)
{
}
private void button_pidparam_Click(object sender, RoutedEventArgs e)
{
Page_PIDParam p = new Page_PIDParam();
NavigationService.Navigate(p);
}
private void button_winderparam_Click(object sender, RoutedEventArgs e)
{
Page_WinderParam p = new Page_WinderParam();
NavigationService.Navigate(p);
}
}
}
using FLY.OBJComponents.Client;
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;
using System.Windows.Threading;
namespace FLY.Winder.UI.Client
{
/// <summary>
/// Page_System.xaml 的交互逻辑
/// </summary>
public partial class Page_PIDParam : Page
{
FLY.Winder.Client.WinderSystemServiceClient winderSystem;
SetPLCUpdatePlan setPlan_accessory;
SetPLCUpdatePlan[] setPlan_winders = new SetPLCUpdatePlan[2];
public Page_PIDParam()
{
InitializeComponent();
Init();
}
void Init()
{
winderSystem = TDGage.Current.mWinderSystem;
grid_winder.DataContext = winderSystem;
//注册属性更新计划
setPlan_accessory = new SetPLCUpdatePlan(
winderSystem.PLCos,
winderSystem.Accessory,
new string[] {
"TensionDetection",
"Velocity",
"VelocityFactor",
"IsTraction1Debug",
"Traction1RollerD",
"Traction1GearRatio",
"Traction1Velocity",
"Traction2Tension",
"Traction2TensionSet",
"Traction2ITime",
"Traction2Factor",
"Traction2RollerD",
"Traction2GearRatio",
"Traction2PIDResult",
"Traction2PIDAdjust",
"Traction2SyncV",
"Traction2Velocity",
"Traction2LiftGain"
});
for (int i = 0; i < 2; i++)
{
setPlan_winders[i] = new SetPLCUpdatePlan(
winderSystem.PLCos,
winderSystem.Items[i],
new string[] {
"Tension",
"TensionSet",
"ITime",
"Factor",
"RollerD",
"GearRatio",
"PIDResult",
"PIDAdjust",
"SyncV",
"Velocity",
"LiftGain",
"VelocityComp"
});
}
}
private void Page_Loaded(object sender, RoutedEventArgs e)
{
}
private void Page_Unloaded(object sender, RoutedEventArgs e)
{
setPlan_accessory.Dispose();
for (int i = 0; i < 2; i++)
{
setPlan_winders[i].Dispose();
}
}
}
}
using FLY.OBJComponents.Client;
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;
using System.Windows.Threading;
namespace FLY.Winder.UI.Client
{
/// <summary>
/// Page_System.xaml 的交互逻辑
/// </summary>
public partial class Page_WinderParam : Page
{
FLY.Winder.Client.WinderSystemServiceClient winderSystem;
SetPLCUpdatePlan setPlan_accessory;
SetPLCUpdatePlan[] setPlan_winders = new SetPLCUpdatePlan[2];
public Page_WinderParam()
{
InitializeComponent();
Init();
}
void Init()
{
winderSystem = TDGage.Current.mWinderSystem;
grid_winder.DataContext = winderSystem;
//注册属性更新计划
setPlan_accessory = new SetPLCUpdatePlan(
winderSystem.PLCos,
winderSystem.Accessory,
new string[] {
"WinderMeasurePerimeter",
"TensionDetectionRange"
});
for (int i = 0; i < 2; i++)
{
setPlan_winders[i] = new SetPLCUpdatePlan(
winderSystem.PLCos,
winderSystem.Items[i],
new string[] {
"TurnoverUpperWait",
"TurnoverOrgDelay",
"TurnoverBackDelay",
"CuttingFilmDelay",
"CuttingFilmElapsed",
"PressureArmBackElapsed",
"AirRollerCheck",
"OffsetElapsed",
"ElapsedWait",
"TapeLimit"
});
}
}
private void Page_Loaded(object sender, RoutedEventArgs e)
{
}
private void Page_Unloaded(object sender, RoutedEventArgs e)
{
setPlan_accessory.Dispose();
for (int i = 0; i < 2; i++)
{
setPlan_winders[i].Dispose();
}
}
}
}
using System.Reflection;
using System.Resources;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Windows;
// 有关程序集的一般信息由以下
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("FLY.Winder.UI.Client")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("佛山市枫莱尔自动化技术有限公司")]
[assembly: AssemblyProduct("收卷客户端")]
[assembly: AssemblyCopyright("Copyright © 2018")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 会使此程序集中的类型
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
//请将此类型的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
//若要开始生成可本地化的应用程序,请设置
//.csproj 文件中的 <UICulture>CultureYouAreCodingWith</UICulture>
//例如,如果您在源文件中使用的是美国英语,
//使用的是美国英语,请将 <UICulture> 设置为 en-US。 然后取消
//对以下 NeutralResourceLanguage 特性的注释。 更新
//以下行中的“en-US”以匹配项目文件中的 UICulture 设置。
//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
[assembly: ThemeInfo(
ResourceDictionaryLocation.None, //主题特定资源词典所处位置
//(未在页面中找到资源时使用,
//或应用程序资源字典中找到时使用)
ResourceDictionaryLocation.SourceAssembly //常规资源词典所处位置
//(未在页面中找到资源时使用,
//、应用程序或任何主题专用资源字典中找到时使用)
)]
// 程序集的版本信息由下列四个值组成:
//
// 主版本
// 次版本
// 生成号
// 修订号
//
// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
// 方法是按如下所示使用“*”: :
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.1.0")]
[assembly: AssemblyFileVersion("1.0.1.0")]
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本: 4.0.30319.42000
//
// 对此文件的更改可能导致不正确的行为,如果
// 重新生成代码,则所做更改将丢失。
// </auto-generated>
//------------------------------------------------------------------------------
namespace FLY.Winder.UI.Client.Properties
{
/// <summary>
/// 强类型资源类,用于查找本地化字符串等。
/// </summary>
// 此类是由 StronglyTypedResourceBuilder
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
// 若要添加或删除成员,请编辑 .ResX 文件,然后重新运行 ResGen
// (以 /str 作为命令选项),或重新生成 VS 项目。
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources
{
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources()
{
}
/// <summary>
/// 返回此类使用的缓存 ResourceManager 实例。
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager
{
get
{
if ((resourceMan == null))
{
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("FLY.Winder.UI.Client.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// 覆盖当前线程的 CurrentUICulture 属性
/// 使用此强类型的资源类的资源查找。
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture
{
get
{
return resourceCulture;
}
set
{
resourceCulture = value;
}
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
\ No newline at end of file
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace FLY.Winder.UI.Client.Properties
{
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
{
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default
{
get
{
return defaultInstance;
}
}
}
}
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
namespace FLY.Winder.UI.Client
{
public class SysParam : Misc.ISaveToXml, INotifyPropertyChanged
{
static SysParam current;
public static SysParam Current
{
get
{
if (current == null)
{
current = new SysParam();
}
return current;
}
}
#region 属性,成员变量的代理
public IPEndPoint ServerEP { get; set; }
public string Path = "winderparam.xml";
#endregion
public SysParam()
{
ServerEP = Misc.StringConverter.ToIPEndPoint("127.0.0.1:20004");
if (!Load())
Save();
}
public bool Load()
{
return Misc.SaveToXmlHepler.Load(Path, this);
}
public void Save()
{
Misc.SaveToXmlHepler.Save(Path, this);
}
public string[] GetSavePropertyNames()
{
return new string[]{
"ServerEP"
};
}
public event PropertyChangedEventHandler PropertyChanged;
}
}
using FLY.OBJComponents.Client;
using FLY.OBJComponents.Common;
using FLY.Winder.Client;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace FLY.Winder.UI.Client
{
public class TDGage
{
public WinderSystemServiceClient mWinderSystem;
public WarningServiceClient mWarningService;
public BufferWindow<FlyData_WarningHistory> mWarningReasonWindow;
SysParam sysparam;
public TDGage()
{
sysparam = SysParam.Current;
mWinderSystem = new WinderSystemServiceClient();
mWarningService = new WarningServiceClient(FLY.Winder.OBJ_INTERFACE.OBJ_INTERFACE.WARNING_OBJ_ID);
FObjBase.FObjSys.Current.Connect_to_Another_OBJSys(
sysparam.ServerEP,
mWinderSystem.GetIDs());
FObjBase.FObjSys.Current.Connect_to_Another_OBJSys(
sysparam.ServerEP,
mWarningService.GetIDs());
//创建窗口观察 报警原因列表
mWarningReasonWindow = new OBJComponents.Client.BufferWindow<OBJComponents.Common.FlyData_WarningHistory>(mWarningService.ReasonList, 100);
}
static TDGage current;
public static TDGage Current
{
get
{
if (current == null)
{
current = new TDGage();
}
return current;
}
}
}
}
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:FLY.Winder.UI.Client.Themes">
<Geometry x:Key="Geometry_origin">
M512 150.016A361.984 361.984 0 1 1 150.016 512 362.496 362.496 0 0 1 512 150.016M512 0a512 512 0 1 0 512 512A512 512 0 0 0 512 0z
M512 512m-229.376 0a229.376 229.376 0 1 0 458.752 0 229.376 229.376 0 1 0-458.752 0Z
</Geometry>
<Geometry x:Key="Geometry_ring">
M512 150.016A361.984 361.984 0 1 1 150.016 512 362.496 362.496 0 0 1 512 150.016M512 0a512 512 0 1 0 512 512A512 512 0 0 0 512 0z
</Geometry>
<Geometry x:Key="Geometry_return">
M945.8 189.1l-61.6 47C800.2 131.3 669.5 64 522.8 64 269.4 64 64.3 264 64 511.5 63.7 759.1 269.2 960 522.8 960c198.1 0 366.9-122.7 431.1-294.5 1.6-4.5-0.8-9.5-5.4-11l-61.9-20.8c-4.5-1.5-9.4 0.7-11 5.1-2 5.3-4.2 10.7-6.4 15.9-18.9 43.7-46 83-80.5 116.7s-74.7 60.2-119.4 78.7c-46.2 19.1-95.5 28.8-146.2 28.8-50.8 0-100-9.7-146.2-28.8-44.7-18.5-84.9-44.9-119.4-78.7-34.5-33.7-61.6-73-80.5-116.7-19.6-45.2-29.5-93.2-29.5-142.8 0-49.6 9.9-97.6 29.5-142.8 18.9-43.7 46-83 80.5-116.7s74.7-60.2 119.4-78.7c46.2-19.1 95.5-28.8 146.2-28.8 50.8 0 100 9.7 146.2 28.8 44.7 18.5 84.9 44.9 119.4 78.7 10.8 10.6 21 21.8 30.4 33.5L753.2 336c-5.8 4.4-3.8 13.3 3.3 15l191.9 45.9c5.5 1.3 10.8-2.8 10.8-8.2l0.9-193c-0.2-7-8.6-11-14.3-6.6z m0 0
</Geometry>
<Geometry x:Key="Geometry_offset">
M1020.416 456.704h-73.728c-4.096 0-6.144-1.024-6.144-5.632v-237.056c0-4.608 1.536-5.632 6.144-5.632h73.728v248.32zM2.048 565.76h73.728c4.096 0 6.144 1.024 6.144 5.632v237.056c0 4.608-1.536 5.632-6.144 5.632h-73.728v-248.32zM622.592 114.176c16.896 13.824 32.768 27.136 48.128 39.936 13.824 11.264 27.648 23.04 41.472 34.304l43.008 35.328c13.824 11.264 27.648 23.04 41.472 34.304 14.336 11.776 28.672 24.064 43.008 35.84 14.336 11.776 28.16 23.552 42.496 34.816 6.144 4.608 6.144 4.608 0.512 9.216-28.16 23.04-56.32 46.592-84.48 69.632-26.112 21.504-52.224 43.52-78.848 65.024-26.112 21.504-52.224 43.52-78.848 65.024-5.12 4.096-10.24 8.704-15.36 12.8-1.024 0.512-1.536 2.048-2.56 1.024-0.512-0.512-0.512-1.536-0.512-2.56v-4.096-126.464c0-9.728 1.024-8.704-8.192-8.704h-531.456c-9.216 0-8.192 1.024-8.192-8.192v-137.216c0-5.632 1.536-7.168 7.168-7.168H614.4c7.68 0 7.68 0 7.68-7.68v-127.488c0.512-2.048 0.512-4.096 0.512-7.68z
M401.92 468.48v134.656c0 5.632 1.536 7.168 7.168 7.168h529.92c7.68 0 7.68 0 7.68 7.68v136.704c0 9.216 1.024 8.192-8.192 8.192H409.6c-7.68 0-7.68 0-7.68 8.192V906.24c-8.192-5.12-14.336-11.264-20.992-16.896l-44.544-36.864c-14.336-12.288-29.184-24.064-43.52-36.352-14.848-12.288-29.184-24.064-44.032-36.352l-36.864-30.72c-14.336-11.776-28.672-24.064-43.008-35.84-9.728-8.192-19.456-15.872-28.672-23.552-2.048-2.048-1.536-3.072 0-4.608 12.288-10.24 24.064-19.968 36.352-30.208 14.336-12.288 29.184-24.064 43.52-36.352 16.384-13.824 33.28-27.648 49.664-41.472 12.288-10.24 25.088-20.48 37.376-31.232 14.336-11.776 28.672-24.064 43.008-35.84 14.848-12.8 30.208-25.088 45.056-37.888 1.536-1.024 3.584-2.56 6.656-3.584z
</Geometry>
<Geometry x:Key="Geometry_cut">
M149.6064 668.0576h276.48v-307.2h-276.48v307.2z m221.7984-254.8736v202.5472H204.1856V413.184h167.2192zM597.9136 360.8576v307.2h276.48v-307.2h-276.48z m54.6816 254.8736V413.184h167.2192v202.5472H652.5952zM576.512 179.5072c0-35.5328-28.9792-64.512-64.512-64.512s-64.512 28.9792-64.512 64.512c0 24.4736 13.7216 45.8752 33.8944 56.7296v547.9424c-20.1728 10.9568-33.8944 32.256-33.8944 56.7296 0 35.5328 28.9792 64.512 64.512 64.512s64.512-28.9792 64.512-64.512c0-24.4736-13.7216-45.8752-33.8944-56.7296V236.2368c20.1728-10.9568 33.8944-32.256 33.8944-56.7296z
</Geometry>
<Geometry x:Key="Geometry_light">
M510.707071 140.282828C343.973495 140.282828 208.808081 275.448242 208.808081 442.181818c0 166.734869 135.165414 301.89899 301.89899 301.89899 166.734869 0 301.89899-135.164121 301.89899-301.89899 0-166.733576-135.164121-301.89899-301.89899-301.89899z
m217.056969 314.181818c-18.531556 0-34.417778-15.896566-34.417777-31.79701 0-50.344081-18.531556-90.096485-55.59596-121.890909-37.064404-31.800889-76.774141-47.696162-119.135677-47.696161-21.178182 0-34.412606-13.252525-34.412606-34.450101 0-18.548364 13.234424-31.802182 34.412606-31.802182 63.539717 0 119.135677 21.202747 169.439677 63.597899 50.298828 42.397737 74.127515 100.693333 74.127515 172.240161 0 15.901737-13.239596 31.798303-34.417778 31.798303z
</Geometry>
</ResourceDictionary>
\ No newline at end of file
<UserControl x:Class="FLY.Winder.UI.Client.UIModule.MenuSelect"
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:FLY.Winder.UI.Client.UIModule"
mc:Ignorable="d" >
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FLY.ControlLibrary;component/Themes/Dictionary_MyStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
<Grid>
<Grid.Resources>
<ResourceDictionary>
<Style TargetType="{x:Type Button}" BasedOn="{StaticResource ButtonStyle_empty}">
<Setter Property="Margin" Value="10"/>
</Style>
<Style TargetType="{x:Type Path}">
<Setter Property="Height" Value="36"/>
<Setter Property="Width" Value="36"/>
<Setter Property="Stretch" Value="Fill"/>
<Setter Property="SnapsToDevicePixels" Value="True"/>
<Setter Property="Fill" Value="White"/>
</Style>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Foreground" Value="White"/>
<Setter Property="TextAlignment" Value="Center"/>
<Setter Property="FontSize" Value="12"/>
<Setter Property="FontFamily" Value="YouYuan"/>
<Setter Property="Margin" Value="3"/>
<Setter Property="FontWeight" Value="Bold"/>
</Style>
</ResourceDictionary>
</Grid.Resources>
<Button Click="button_menu_click">
<StackPanel >
<Path Data="{StaticResource Geometry_bullseye}" />
<TextBlock Text="收卷" />
</StackPanel>
</Button>
</Grid>
</UserControl>
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 FLY.Winder.UI.Client.UIModule
{
/// <summary>
/// MenuSelect.xaml 的交互逻辑
/// </summary>
public partial class MenuSelect : UserControl
{
public MenuSelect()
{
InitializeComponent();
}
private void button_menu_click(object sender, RoutedEventArgs e)
{
NavigationService ns = Application.Current.Properties["NavigationService"] as NavigationService;
if (ns != null)
{
Page_Menu p = new Page_Menu();
ns.Navigate(p);
}
}
public void Init(int id)
{
}
}
public class UIModule_Menu : FLY.UI.Module.IUIModule
{
/// <summary>
/// 控件标题
/// 它的值取决于culture
/// </summary>
public string Title
{
get
{
return "收卷菜单";
}
}
/// <summary>
/// 控件
/// 创建时,需要给它唯一ID,让加载自己的数据
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public FrameworkElement GetComponent(int id)
{
MenuSelect graph = new MenuSelect();
graph.Init(id);
return graph;
}
/// <summary>
/// 控件缩略图,用于编辑界面时,大致看看
/// 创建时,需要给它唯一ID,让加载自己的数据
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public FrameworkElement GetThumbnail(int id)
{
return new System.Windows.Controls.Grid();
}
/// <summary>
/// 给出全部控件ID, 控件自行删除没有的参数
/// </summary>
/// <param name="IDs"></param>
public void MatchParam(int[] IDs)
{
}
}
}
<Page x:Class="FLY.Winder.UI.Client.UIModule.Page_DynArea"
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:FLY.Winder.UI.Client.UIModule"
xmlns:conv="clr-namespace:FLY.Winder.UI.Client.Converter"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
mc:Ignorable="d"
d:DesignWidth="292"
Title="Page_DynArea">
<Page.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FLY.ControlLibrary;component/Themes/Dictionary_MyStyle.xaml"/>
<ResourceDictionary Source="pack://application:,,,/FLY.ControlLibrary;component/Converter/Dictionary_MyConv.xaml"/>
<ResourceDictionary Source="pack://application:,,,/FLY.Winder.UI.Client;component/UnitTests/UnitTests_winder.xaml"/>
<ResourceDictionary Source="pack://application:,,,/FLY.Winder.UI.Client;component/Themes/Dictionary_MyStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
<sys:Double x:Key="FontSize_title">18</sys:Double>
<sys:Double x:Key="FontSize_unit">12</sys:Double>
<Style TargetType="{x:Type Path}" x:Key="PathStyle_icon">
<Setter Property="Fill" Value="White"/>
<Setter Property="Stretch" Value="Uniform"/>
<Setter Property="Width" Value="30"/>
<Setter Property="Height" Value="30"/>
<Setter Property="SnapsToDevicePixels" Value="True"/>
</Style>
<local:DynAreaViewModelParams x:Key="unitests_props" IsError="False" Error="报警MSG"/>
<conv:IsGTMultiValueConverter x:Key="isgtconv"/>
<conv:RatioConverter x:Key="ratioconv" />
</ResourceDictionary>
</Page.Resources>
<Button Style="{StaticResource ButtonStyle_empty}" Background="Transparent" Click="Button_Click">
<Grid>
<Grid x:Name="grid_winder" d:DataContext="{StaticResource unittests_windersystem}"/>
<Grid x:Name="grid_error" d:DataContext="{StaticResource unitests_props}"/>
<Border Style="{StaticResource BorderStyle_module}"
DataContext="{Binding DataContext,ElementName=grid_winder}">
<StackPanel Orientation="Vertical" >
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Text="速度" Margin="4" FontSize="{StaticResource FontSize_title}"/>
<Viewbox Grid.Column="1" Grid.Row="1" MaxHeight="80" HorizontalAlignment="Left">
<StackPanel Orientation="Horizontal">
<TextBlock Margin="4" >
<Run Text="{Binding Accessory.Velocity,StringFormat={}{0:F1}}" FontSize="60" />
</TextBlock>
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldContent_mm}" Text="m/min" FontSize="20" />
</StackPanel>
</Viewbox>
</Grid>
<Grid Margin="2">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid Margin="2" Name="grid1" DataContext="{Binding Items[0]}" Background="{StaticResource Color_theme_static}">
<Rectangle HorizontalAlignment="Left" Fill="{StaticResource Color_theme_activity}">
<Rectangle.Width>
<MultiBinding Converter="{StaticResource ratioconv}" Mode="OneWay">
<Binding Path="MeasureLen" />
<Binding Path="MeasureLenSet" />
<Binding Path="ActualWidth" ElementName="grid1"/>
</MultiBinding>
</Rectangle.Width>
</Rectangle>
<StackPanel Orientation="Horizontal" >
<TextBlock Text="内收卷" FontSize="12" FontWeight="Bold" FontFamily="YouYuan" Foreground="LightGray" Margin="2" />
<Viewbox Margin="5,0" MaxWidth="80" MaxHeight="26">
<StackPanel Orientation="Horizontal" >
<TextBlock Text="{Binding MeasureLen, StringFormat={}{0:F0}}" FontSize="24" FontFamily="Microsoft Sans Serif" TextAlignment="Center" HorizontalAlignment="Center" Foreground="White" />
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldContent_mm}" Text="m" FontSize="12" Foreground="LightGray"/>
</StackPanel>
</Viewbox>
</StackPanel>
</Grid>
<Grid Margin="2" Grid.Column="1" DataContext="{Binding Items[1]}" Background="{StaticResource Color_theme_static}">
<Rectangle HorizontalAlignment="Left" Fill="{StaticResource Color_theme_activity}">
<Rectangle.Width>
<MultiBinding Converter="{StaticResource ratioconv}" Mode="OneWay">
<Binding Path="MeasureLen" />
<Binding Path="MeasureLenSet" />
<Binding Path="ActualWidth" ElementName="grid1"/>
</MultiBinding>
</Rectangle.Width>
</Rectangle>
<StackPanel Orientation="Horizontal" >
<TextBlock Text="内收卷" FontSize="12" FontWeight="Bold" FontFamily="YouYuan" Foreground="LightGray" Margin="2" />
<Viewbox Margin="5,0" MaxWidth="80" MaxHeight="26">
<StackPanel Orientation="Horizontal" >
<TextBlock Text="{Binding MeasureLen, StringFormat={}{0:F0}}" FontSize="24" FontFamily="Microsoft Sans Serif" TextAlignment="Center" HorizontalAlignment="Center" Foreground="White" />
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldContent_mm}" Text="m" FontSize="12" Foreground="LightGray"/>
</StackPanel>
</Viewbox>
</StackPanel>
</Grid>
</Grid>
</StackPanel>
</Border>
<Border Style="{StaticResource BorderStyle_module}" Background="Red"
DataContext="{Binding DataContext,ElementName=grid_error}"
Visibility="{Binding IsError,Converter={StaticResource visbilityconv}}">
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Path Margin="5" Fill="White" Stretch="Uniform" Width="60" Height="60" SnapsToDevicePixels="True" Data="{StaticResource Geometry_alert-circle-outline}" >
<Path.Style>
<Style TargetType="Path">
<Style.Triggers>
<DataTrigger Binding="{Binding IsError}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard RepeatBehavior="Forever" >
<DoubleAnimation BeginTime="0:0:0" Storyboard.TargetProperty="Opacity" From="1" To="0" Duration="00:00:01" />
<DoubleAnimation BeginTime="0:0:1" Storyboard.TargetProperty="Opacity" From="0" To="1" Duration="00:00:01" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
</Path.Style>
</Path>
<TextBlock Grid.Column="1" Margin="5" VerticalAlignment="Center" TextWrapping="Wrap" FontSize="30" Foreground="White" Text="{Binding Error}"/>
</Grid>
</Border>
</Grid>
</Button>
</Page>
using System;
using System.Collections.Generic;
using System.ComponentModel;
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;
using System.Windows.Threading;
using FLY.OBJComponents.Client;
using FLY.OBJComponents.Common;
using FLY.Winder.UI.Client;
namespace FLY.Winder.UI.Client.UIModule
{
/// <summary>
/// Page_DynArea.xaml 的交互逻辑
/// </summary>
public partial class Page_DynArea : Page
{
#region 延时推送 MARKNO
const int MARKNO_UPDATEERROR = 1;
#endregion
FLY.Winder.Client.WinderSystemServiceClient winderSystem;
BufferWindow<FlyData_WarningHistory> mWindow;
DispatcherTimer timer_error;
DynAreaViewModelParams props = new DynAreaViewModelParams();
SetPLCUpdatePlan setPlan_accessory;
SetPLCUpdatePlan[] setPlan_winders = new SetPLCUpdatePlan[2];
public Page_DynArea()
{
InitializeComponent();
}
public void Init(int id)
{
winderSystem = TDGage.Current.mWinderSystem;
//创建窗口观察 报警原因列表
mWindow = TDGage.Current.mWarningReasonWindow;
//报警原因轮流显示
timer_error = new DispatcherTimer();
timer_error.Interval = TimeSpan.FromSeconds(3);
timer_error.Tick += (s, e) =>
{
reason_list_index--;
if (reason_list_index < 0)
reason_list_index = mWindow.Record.Count();
updateError();
};
mWindow.Record.CollectionChanged += Record_CollectionChanged;
grid_winder.DataContext = winderSystem;
grid_error.DataContext = props;
//注册属性更新计划
setPlan_accessory = new SetPLCUpdatePlan(
winderSystem.PLCos,
winderSystem.Accessory,
new string[]
{
"Velocity"
});
for (int i = 0; i < 2; i++)
{
setPlan_winders[i] = new SetPLCUpdatePlan(
winderSystem.PLCos,
winderSystem.Items[i],
new string[]
{
"MeasureLen",
"MeasurePreWarning"
});
}
winderSystem.PropertyChanged += (s, e) =>
{
if (e.PropertyName == "IsConnected")
{
updateError();
}
};
updateError();
}
private void Record_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
FObjBase.PollModule.Current.Poll_JustOnce(
new FObjBase.PollModule.PollHandler(delegate ()
{
reason_list_index = mWindow.Record.Count() - 1;
updateError();
}), this, MARKNO_UPDATEERROR);
}
void updateError()
{
if (!winderSystem.IsConnected)
{
props.Error = "收卷服务器连接断开";
props.IsError = true;
reason_list_index = -1;
timer_error.Stop();
}
else if (mWindow.Record.Count > 0)
{
if (reason_list_index >= mWindow.Record.Count)
reason_list_index = mWindow.Record.Count - 1;
else if (reason_list_index < 0)
reason_list_index = 0;
props.Error = mWindow.Record[reason_list_index].Description;
props.IsError = true;
timer_error.Start();
}
else
{
props.IsError = false;
props.Error = "";
reason_list_index = -1;
timer_error.Stop();
}
}
private int reason_list_index = -1;
private void Button_Click(object sender, RoutedEventArgs e)
{
//if (props.IsError)
{
NavigationService ns = Application.Current.Properties["NavigationService"] as NavigationService;
if (ns != null)
{
Page_ErrorTable p = new Page_ErrorTable();
ns.Navigate(p);
}
}
}
}
public class DynAreaViewModelParams : INotifyPropertyChanged
{
/// <summary>
/// 有异常
/// </summary>
public bool IsError { get; set; }
/// <summary>
/// 异常消息
/// </summary>
public string Error { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
}
public class UIModule_DynArea : FLY.UI.Module.IUIModule
{
/// <summary>
/// 控件标题
/// 它的值取决于culture
/// </summary>
public string Title
{
get
{
return "收卷状态";
}
}
/// <summary>
/// 控件
/// 创建时,需要给它唯一ID,让加载自己的数据
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public FrameworkElement GetComponent(int id)
{
Page_DynArea graph = new Page_DynArea();
graph.Init(id);
return graph;
}
/// <summary>
/// 控件缩略图,用于编辑界面时,大致看看
/// 创建时,需要给它唯一ID,让加载自己的数据
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public FrameworkElement GetThumbnail(int id)
{
return new System.Windows.Controls.Grid();
}
/// <summary>
/// 给出全部控件ID, 控件自行删除没有的参数
/// </summary>
/// <param name="IDs"></param>
public void MatchParam(int[] IDs)
{
}
}
}
using FLY.OBJComponents.Client;
using FLY.Winder.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
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 FLY.Winder.UI.Client.UIModule
{
/// <summary>
/// Page_Main.xaml 的交互逻辑
/// </summary>
public partial class Page_Main : Page
{
FLY.Winder.Client.WinderSystemServiceClient winderSystem;
SetPLCUpdatePlan setPlan_accessory;
SetPLCUpdatePlan[] setPlan_winders = new SetPLCUpdatePlan[2];
public Page_Main()
{
InitializeComponent();
}
public void Init(int id)
{
winderSystem = TDGage.Current.mWinderSystem;
grid_winder.DataContext = winderSystem;
ResetAction.SetResetAction(button_ron, winderSystem.Accessory, "RotaryOn");
ResetAction.SetResetAction(button_rorg, winderSystem.Accessory, "RotaryOrg");
ResetAction.SetResetAction(button_clear0, winderSystem.Items[0], "MeasureReset");
ResetAction.SetResetAction(button_clear1, winderSystem.Items[1], "MeasureReset");
//注册属性更新计划
setPlan_accessory = new SetPLCUpdatePlan(
winderSystem.PLCos,
winderSystem.Accessory,
new string[] {
"VelocitySet",
"IsVelocityChanged",
"Velocity",
"RotaryFreqSet",
"IsRotaryFreqChanged",
"RotaryCurrent",
"RotaryFreq",
"IsRotaryOn",
"IsRotaryOrg",
"IsRotaryForw",
"IsRotaryBackw",
"IsRotaryForwLimit",
"IsRotaryForwTurn",
"IsRotaryOrgSign",
"IsRotaryBackwLimit",
"IsRotaryBackwTurn",
"Traction1Current",
"IsTraction1On",
"IsTraction2Manual",
"Traction2TensionKgSet",
"Traction2TensionKg",
"Traction2Current",
"IsTraction2Manual",
"IsTraction2On"
});
for (int i = 0; i < 2; i++)
{
setPlan_winders[i] = new SetPLCUpdatePlan(
winderSystem.PLCos,
winderSystem.Items[i],
new string[] {
"MeasureLenSet",
"MeasurePreWarning",
"MeasureLen",
"MeasureStop",
"TensionKgSet",
"TensionKg",
"Current",
"IsManual",
"IsOn"
});
}
}
private void button_v_set_Click(object sender, RoutedEventArgs e)
{
Window_Velocity w = new Window_Velocity();
w.Owner = FLY.ControlLibrary.COMMON.GetWindow(this);
w.ShowDialog();
}
private void button_manual_Click(object sender, RoutedEventArgs e)
{
Window_Manual w = new Window_Manual();
w.Owner = FLY.ControlLibrary.COMMON.GetWindow(this);
w.ShowDialog();
}
private void button_freq_Click(object sender, RoutedEventArgs e)
{
Window_Freq w = new Window_Freq();
w.Owner = FLY.ControlLibrary.COMMON.GetWindow(this);
w.ShowDialog();
}
private void button_measure_Click(object sender, RoutedEventArgs e)
{
Button button = sender as Button;
WinderInsideOutside item = (WinderInsideOutside)(button.Tag);
Window_Measure w = new Window_Measure();
w.Init((int)(item.MeasureLenSet), (int)(item.MeasurePreWarning));
w.Owner = FLY.ControlLibrary.COMMON.GetWindow(this);
if (w.ShowDialog() == true)
{
item.MeasureLenSet = w.viewmodel.MeasureLenSet;
item.MeasurePreWarning = w.viewmodel.MeasurePreWarning;
}
}
}
public class UIModule_Main : FLY.UI.Module.IUIModule
{
/// <summary>
/// 控件标题
/// 它的值取决于culture
/// </summary>
public string Title
{
get
{
return "收卷主界面";
}
}
/// <summary>
/// 控件
/// 创建时,需要给它唯一ID,让加载自己的数据
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public FrameworkElement GetComponent(int id)
{
Page_Main graph = new Page_Main();
graph.Init(id);
return graph;
}
/// <summary>
/// 控件缩略图,用于编辑界面时,大致看看
/// 创建时,需要给它唯一ID,让加载自己的数据
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public FrameworkElement GetThumbnail(int id)
{
return new System.Windows.Controls.Grid();
}
/// <summary>
/// 给出全部控件ID, 控件自行删除没有的参数
/// </summary>
/// <param name="IDs"></param>
public void MatchParam(int[] IDs)
{
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Controls;
using System.Windows.Input;
namespace FLY.Winder.UI.Client.UIModule
{
public class ResetAction
{
public object obj;
public string propertyname;
public bool pressIsTrue;
public ResetAction(object obj, string propertyname, bool pressIsTrue)
{
this.obj = obj;
this.propertyname = propertyname;
this.pressIsTrue = pressIsTrue;
}
public static void SetResetAction(Button button, object obj, string propertyname, bool pressIsTrue = true)
{
button.Tag = new ResetAction(obj, propertyname, pressIsTrue);
button.PreviewMouseDown += Button_PreviewMouseDown;
button.PreviewTouchDown += Button_PreviewTouchDown;
button.PreviewMouseUp += Button_PreviewMouseUp;
button.PreviewTouchUp += Button_PreviewTouchUp;
}
private static void Button_PreviewTouchUp(object sender, TouchEventArgs e)
{
ResetAction ra = (sender as Button).Tag as ResetAction;
ra.Up();
}
private static void Button_PreviewMouseUp(object sender, MouseButtonEventArgs e)
{
ResetAction ra = (sender as Button).Tag as ResetAction;
ra.Up();
}
private static void Button_PreviewTouchDown(object sender, TouchEventArgs e)
{
ResetAction ra = (sender as Button).Tag as ResetAction;
ra.Down();
}
private static void Button_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
ResetAction ra = (sender as Button).Tag as ResetAction;
ra.Down();
}
public void Down()
{
if (pressIsTrue)
Misc.PropertiesManager.SetValue(obj, propertyname, true);
else
Misc.PropertiesManager.SetValue(obj, propertyname, false);
}
public void Up()
{
if (pressIsTrue)
Misc.PropertiesManager.SetValue(obj, propertyname, false);
else
Misc.PropertiesManager.SetValue(obj, propertyname, true);
}
}
}
<flyctrllib:WindowBigClose x:Class="FLY.Winder.UI.Client.Window_Freq"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:flyctrllib="clr-namespace:FLY.ControlLibrary;assembly=FLY.ControlLibrary"
xmlns:local="clr-namespace:FLY.Winder.UI.Client"
mc:Ignorable="d"
Title="Window_Frequency" WindowStartupLocation="CenterScreen" d:DesignWidth="334.492" d:DesignHeight="318.246" >
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FLY.ControlLibrary;component/Themes/Dictionary_MyStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<StackPanel Orientation="Vertical" Margin="5,20">
<StackPanel Orientation="Vertical" Margin="5">
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldHeader}" Text="频率设置" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="44" />
</StackPanel>
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" Grid.Column="1">
<StackPanel Orientation="Vertical" Margin="5">
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldHeaderEditable}" Text="旋转频率" />
<StackPanel Orientation="Horizontal">
<TextBox Style="{StaticResource ResourceKey=TextBoxStyle_FieldContent}" Text="{Binding RotaryFreqSet,StringFormat={}{0:F1}}"/>
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldContent_mm}" Text="Hz" />
</StackPanel>
</StackPanel>
<Button Style="{StaticResource ButtonStyle_empty}" Background="Transparent" Click="button_minus_Click" Margin="5">
<Path Data="{StaticResource Geometry_minus-circle}" Fill="{StaticResource Color_theme_activity}" Stretch="Fill" Height="80" Width="80" />
</Button>
<Button Style="{StaticResource ButtonStyle_empty}" Background="Transparent" Click="button_plus_Click" Margin="5">
<Path Data="{StaticResource Geometry_plus-circle}" Fill="{StaticResource Color_theme_activity}" Stretch="Fill" Height="80" Width="80" />
</Button>
</StackPanel>
</Grid>
<Button x:Name="button_ok" Style="{StaticResource ButtonStyle2}" Content="确定" Width="auto" Margin="5" Click="button_ok_Click" />
</StackPanel>
</flyctrllib:WindowBigClose>
using System;
using System.Collections.Generic;
using System.ComponentModel;
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.Shapes;
namespace FLY.Winder.UI.Client
{
/// <summary>
/// Window_Frequency.xaml 的交互逻辑
/// </summary>
public partial class Window_Freq : FLY.ControlLibrary.WindowBigClose
{
FLY.Winder.Client.WinderSystemServiceClient winderSystem;
public Window_Freq()
{
InitializeComponent();
winderSystem = TDGage.Current.mWinderSystem;
this.DataContext = winderSystem.Accessory;
}
private void button_minus_Click(object sender, RoutedEventArgs e)
{
if (winderSystem.Accessory.RotaryFreqSet >= 0.1)
{
winderSystem.Accessory.RotaryFreqSet -= 0.1f;
}
}
private void button_plus_Click(object sender, RoutedEventArgs e)
{
if(winderSystem.Accessory.RotaryFreqSet < 50)
winderSystem.Accessory.RotaryFreqSet += 0.1f;
}
private void button_ok_Click(object sender, RoutedEventArgs e)
{
winderSystem.Accessory.IsRotaryFreqChanged = true;
this.DialogResult = true;
this.Close();
}
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
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.Shapes;
namespace FLY.Winder.UI.Client.UIModule
{
/// <summary>
/// Window_Frequency.xaml 的交互逻辑
/// </summary>
public partial class Window_Manual : FLY.ControlLibrary.WindowBigClose
{
FLY.Winder.Client.WinderSystemServiceClient winderSystem;
public Window_Manual()
{
InitializeComponent();
winderSystem = TDGage.Current.mWinderSystem;
ResetAction.SetResetAction(button_turn0, winderSystem.Items[0], "TurnoverInching");
ResetAction.SetResetAction(button_cut0, winderSystem.Items[0], "CuttingFilm");
ResetAction.SetResetAction(button_org0, winderSystem.Items[0], "TurnoverOrg");
ResetAction.SetResetAction(button_arm0, winderSystem.Items[0], "PressureArmOffset");
ResetAction.SetResetAction(button_turn1, winderSystem.Items[1], "TurnoverInching");
ResetAction.SetResetAction(button_cut1, winderSystem.Items[1], "CuttingFilm");
ResetAction.SetResetAction(button_org1, winderSystem.Items[1], "TurnoverOrg");
ResetAction.SetResetAction(button_arm1, winderSystem.Items[1], "PressureArmOffset");
}
}
}
<flyctrllib:WindowBigClose x:Class="FLY.Winder.UI.Client.UIModule.Window_Measure"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:flyctrllib="clr-namespace:FLY.ControlLibrary;assembly=FLY.ControlLibrary"
xmlns:local="clr-namespace:FLY.Winder.UI.Client"
mc:Ignorable="d"
Title="Window_Frequency" WindowStartupLocation="CenterScreen" d:DesignWidth="334.492" d:DesignHeight="318.246" >
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FLY.ControlLibrary;component/Themes/Dictionary_MyStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<StackPanel Orientation="Vertical" Margin="5,20">
<StackPanel Orientation="Vertical" Margin="5">
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldHeader}" Text="计量设置" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="44" />
</StackPanel>
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" Grid.Column="1">
<StackPanel Orientation="Vertical" Margin="5">
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldHeaderEditable}" Text="设定" />
<StackPanel Orientation="Horizontal">
<TextBox Style="{StaticResource ResourceKey=TextBoxStyle_FieldContent}" Text="{Binding MeasureLenSet,StringFormat={}{0:F0}}" Foreground="#FF005083"/>
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldContent_mm}" Text="mm" />
</StackPanel>
</StackPanel>
<StackPanel Orientation="Vertical" Margin="5">
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldHeaderEditable}" Text="预警" Foreground="Red" />
<StackPanel Orientation="Horizontal">
<TextBox Style="{StaticResource ResourceKey=TextBoxStyle_FieldContent}" Text="{Binding MeasurePreWarning,StringFormat={}{0:F0}}" Foreground="DarkRed"/>
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldContent_mm}" Text="mm" />
</StackPanel>
</StackPanel>
</StackPanel>
</Grid>
<Button x:Name="button_ok" Style="{StaticResource ButtonStyle2}" Content="确定" Width="auto" Margin="5" Click="button_ok_Click" />
</StackPanel>
</flyctrllib:WindowBigClose>
using FLY.Winder.Client;
using FLY.Winder.Common;
using System;
using System.Collections.Generic;
using System.ComponentModel;
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.Shapes;
namespace FLY.Winder.UI.Client.UIModule
{
/// <summary>
/// Window_Frequency.xaml 的交互逻辑
/// </summary>
public partial class Window_Measure : FLY.ControlLibrary.WindowBigClose
{
public WindowMeasureViewModel viewmodel = new WindowMeasureViewModel();
public Window_Measure()
{
InitializeComponent();
}
public void Init(int measureLenSet, int measurePreWarning)
{
viewmodel.MeasureLenSet = measureLenSet;
viewmodel.MeasurePreWarning = measurePreWarning;
this.DataContext = viewmodel;
}
private void button_ok_Click(object sender, RoutedEventArgs e)
{
this.DialogResult = true;
this.Close();
}
}
public class WindowMeasureViewModel:INotifyPropertyChanged
{
public int MeasureLenSet { get; set; }
public int MeasurePreWarning { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
}
}
<flyctrllib:WindowBigClose x:Class="FLY.Winder.UI.Client.UIModule.Window_Velocity"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:flyctrllib="clr-namespace:FLY.ControlLibrary;assembly=FLY.ControlLibrary"
xmlns:local="clr-namespace:FLY.Winder.UI.Client"
mc:Ignorable="d"
Title="Window_Frequency" WindowStartupLocation="CenterScreen" d:DesignWidth="334.492" d:DesignHeight="318.246" >
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FLY.ControlLibrary;component/Themes/Dictionary_MyStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<StackPanel Orientation="Vertical" Margin="5,20">
<StackPanel Orientation="Vertical" Margin="5">
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldHeader}" Text="速度设置" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="44" />
</StackPanel>
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" Grid.Column="1">
<StackPanel Orientation="Vertical" Margin="5">
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldHeaderEditable}" Text="设定速度" />
<StackPanel Orientation="Horizontal">
<TextBox Style="{StaticResource ResourceKey=TextBoxStyle_FieldContent}" Text="{Binding VelocitySet,StringFormat={}{0:F1}}"/>
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldContent_mm}" Text="m/min" />
</StackPanel>
</StackPanel>
<Button Style="{StaticResource ButtonStyle_empty}" Background="Transparent" Click="button_minus_Click" Margin="5">
<Path Data="{StaticResource Geometry_minus-circle}" Fill="{StaticResource Color_theme_activity}" Stretch="Fill" Height="80" Width="80" />
</Button>
<Button Style="{StaticResource ButtonStyle_empty}" Background="Transparent" Click="button_plus_Click" Margin="5">
<Path Data="{StaticResource Geometry_plus-circle}" Fill="{StaticResource Color_theme_activity}" Stretch="Fill" Height="80" Width="80" />
</Button>
</StackPanel>
</Grid>
<Button x:Name="button_ok" Style="{StaticResource ButtonStyle2}" Content="确定" Width="auto" Margin="5" Click="button_ok_Click" />
</StackPanel>
</flyctrllib:WindowBigClose>
using System;
using System.Collections.Generic;
using System.ComponentModel;
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.Shapes;
namespace FLY.Winder.UI.Client.UIModule
{
/// <summary>
/// Window_Frequency.xaml 的交互逻辑
/// </summary>
public partial class Window_Velocity : FLY.ControlLibrary.WindowBigClose
{
FLY.Winder.Client.WinderSystemServiceClient winderSystem;
public Window_Velocity()
{
InitializeComponent();
winderSystem = TDGage.Current.mWinderSystem;
this.DataContext = winderSystem.Accessory;
ResetAction.SetResetAction(button_ok, winderSystem.Accessory, "IsVelocityChanged");
}
private void button_minus_Click(object sender, RoutedEventArgs e)
{
if (winderSystem.Accessory.VelocitySet >= 0.1)
{
winderSystem.Accessory.VelocitySet -= 0.1f;
}
}
private void button_plus_Click(object sender, RoutedEventArgs e)
{
if (winderSystem.Accessory.VelocitySet < 200)
winderSystem.Accessory.VelocitySet += 0.1f;
}
private void button_ok_Click(object sender, RoutedEventArgs e)
{
this.DialogResult = true;
this.Close();
}
}
}
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:FLY.Winder.UI.Client.UnitTests">
<local:WinderSystem_UnitTest x:Key="unittests_windersystem"/>
</ResourceDictionary>
\ No newline at end of file
using FLY.Winder.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace FLY.Winder.UI.Client.UnitTests
{
public class WinderSystem_UnitTest
{
/// <summary>
/// 收卷其它附件
/// </summary>
public WinderAccessory Accessory { get; set; }
/// <summary>
/// 内收卷 外收卷
/// </summary>
public List<WinderInsideOutside> Items { get; set; }
public WinderSystem_UnitTest()
{
Items = new List<WinderInsideOutside>();
Items.Add(new WinderInsideOutside());
Items.Add(new WinderInsideOutside());
Items[0].CuttingFilmElapsed = 1;
Items[0].CuttingFilmDelay = 2;
Items[0].MeasureLen = 10340;
Items[0].MeasureLenSet = 2000;
Items[0].MeasurePreWarning = 1600;
Accessory = new WinderAccessory();
Accessory.WinderMeasurePerimeter = 314;
Accessory.RotaryFreqSet = 30;
Accessory.RotaryCurrent = 10.1f;
Accessory.RotaryFreq = 29.9f;
Accessory.IsRotaryForw = true;
Accessory.Velocity = 59.7f;
Accessory.VelocitySet = 60;
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Fody" version="3.2.13" targetFramework="net40" developmentDependency="true" />
<package id="PropertyChanged2.Fody" version="2.5.13" targetFramework="net40" />
</packages>
\ No newline at end of file
Project.FLY.Winder_20190413/FLY.Winder.UI.Client/灯.png

4.01 KB

<Application x:Class="FLY.Winder.UI.Server.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:FLY.Winder.UI.Server"
StartupUri="MainWindow.xaml">
<Application.Resources>
</Application.Resources>
</Application>
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Windows;
namespace FLY.Winder.UI.Server
{
/// <summary>
/// App.xaml 的交互逻辑
/// </summary>
public partial class App : Application
{
FLY.AppHelper.AppJustOne appjustone;
public App()
{
appjustone = new AppHelper.AppJustOne(this);
AppDomain.CurrentDomain.UnhandledException += (s, e) =>
{
string err = e.ExceptionObject.ToString();
Misc.Log.LogMessage("App", 0, err);
MessageBox.Show("程序出现异常,请把下面信息拍照发给厂家" + Environment.NewLine + err,
"异常,联系厂家",
MessageBoxButton.OK, MessageBoxImage.Error);
};
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{9A289B5D-24AA-4031-86C7-1300B4FDCB55}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>FLY.Winder.UI.Server</RootNamespace>
<AssemblyName>FLY.Winder.UI.Server</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<WarningLevel>4</WarningLevel>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>reload.ico</ApplicationIcon>
</PropertyGroup>
<ItemGroup>
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\..\packages\Newtonsoft.Json.12.0.1\lib\net40\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Xaml">
<RequiredTargetFramework>4.0</RequiredTargetFramework>
</Reference>
<Reference Include="WindowsBase" />
<Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" />
</ItemGroup>
<ItemGroup>
<ApplicationDefinition Include="App.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</ApplicationDefinition>
<Page Include="MainWindow.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Compile Include="App.xaml.cs">
<DependentUpon>App.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Compile Include="MainWindow.xaml.cs">
<DependentUpon>MainWindow.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
</ItemGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
<None Include="packages.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Project.FLY.AppHelper\FLY.AppHelper\FLY.AppHelper.csproj">
<Project>{9c46d98f-6500-490b-9e56-c89dfffa05f8}</Project>
<Name>FLY.AppHelper</Name>
</ProjectReference>
<ProjectReference Include="..\..\Project.FLY.FObjSys\FObjSys\FObjBase.csproj">
<Project>{abfe87d4-b692-4ae9-a8c0-1f470b8acbb8}</Project>
<Name>FObjBase</Name>
</ProjectReference>
<ProjectReference Include="..\..\Project.FLY.Misc\MISC\Misc.csproj">
<Project>{5ee61ac6-5269-4f0f-b8fa-4334fe4a678f}</Project>
<Name>Misc</Name>
</ProjectReference>
<ProjectReference Include="..\..\Project.FLY.ModbusMapper\FLY.ModbusMapper\FLY.ModbusMapper.csproj">
<Project>{6d4b9bda-2a66-4583-b244-758bc4213d9f}</Project>
<Name>FLY.ModbusMapper</Name>
</ProjectReference>
<ProjectReference Include="..\..\Project.FLY.OBJComponents\OBJComponents\OBJComponents.csproj">
<Project>{a539505d-9ac0-426b-a9a0-197df50598b0}</Project>
<Name>OBJComponents</Name>
</ProjectReference>
<ProjectReference Include="..\FLY.Winder\FLY.Winder.csproj">
<Project>{a989e480-3730-4b26-809f-dff94d145d6e}</Project>
<Name>FLY.Winder</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Resource Include="reload.ico" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
\ No newline at end of file
<Window x:Class="FLY.Winder.UI.Server.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:FLY.Winder.UI.Server"
mc:Ignorable="d"
Title="MainWindow" SizeToContent="WidthAndHeight" >
<Grid>
<Grid x:Name="grid_plc"/>
<Grid x:Name="grid_plcos"/>
<StackPanel Orientation="Vertical">
<StackPanel Orientation="Horizontal" >
<StackPanel Orientation="Vertical" Margin="4" DataContext="{Binding DataContext,ElementName=grid_plc}">
<TextBlock Text="更新速度" />
<TextBlock Text="{Binding ActUpdateInterval}" FontSize="20"/>
</StackPanel>
<StackPanel Orientation="Vertical" Margin="4" DataContext="{Binding DataContext,ElementName=grid_plcos}">
<TextBlock Text="PLC连接状态" />
<TextBlock Text="{Binding IsConnectedWithPLC}" FontSize="20"/>
</StackPanel>
<StackPanel Orientation="Vertical" Margin="4" DataContext="{Binding DataContext,ElementName=grid_plc}">
<TextBlock Text="寄存器更新数" />
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding DRNeedUpdateCnt}" FontSize="20"/>
<TextBlock Text="/"/>
<TextBlock Text="{Binding DRCnt}" FontSize="20"/>
</StackPanel>
</StackPanel>
</StackPanel>
</StackPanel>
</Grid>
</Window>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
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 FLY.Winder.UI.Server
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
FLY.AppHelper.WindowNotifyIconHelper notifyiconhelper;
FLY.Winder.Server.TDGage mTDGage;
public MainWindow()
{
InitializeComponent();
this.Title = (new Misc.Ver() { SrcType = typeof(MainWindow) }).ToString();
notifyiconhelper = new AppHelper.WindowNotifyIconHelper(this, this.Title);
this.Hide();
FObjBase.PollModule.Current.Start();
mTDGage = new FLY.Winder.Server.TDGage("Gage1");
FLY.OBJComponents.Server.PLCProxySystem plsos =
mTDGage.mData.PLCos as FLY.OBJComponents.Server.PLCProxySystem;
grid_plcos.DataContext = plsos;
grid_plc.DataContext = plsos.PLCs[0];
}
}
}
using System.Reflection;
using System.Resources;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Windows;
// 有关程序集的一般信息由以下
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("FLY.Winder.UI.Server")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("收卷服务器")]
[assembly: AssemblyCopyright("Copyright © 2018")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 会使此程序集中的类型
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
//请将此类型的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
//若要开始生成可本地化的应用程序,请设置
//.csproj 文件中的 <UICulture>CultureYouAreCodingWith</UICulture>
//例如,如果您在源文件中使用的是美国英语,
//使用的是美国英语,请将 <UICulture> 设置为 en-US。 然后取消
//对以下 NeutralResourceLanguage 特性的注释。 更新
//以下行中的“en-US”以匹配项目文件中的 UICulture 设置。
//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
[assembly: ThemeInfo(
ResourceDictionaryLocation.None, //主题特定资源词典所处位置
//(未在页面中找到资源时使用,
//或应用程序资源字典中找到时使用)
ResourceDictionaryLocation.SourceAssembly //常规资源词典所处位置
//(未在页面中找到资源时使用,
//、应用程序或任何主题专用资源字典中找到时使用)
)]
// 程序集的版本信息由下列四个值组成:
//
// 主版本
// 次版本
// 生成号
// 修订号
//
// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
// 方法是按如下所示使用“*”: :
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本: 4.0.30319.42000
//
// 对此文件的更改可能导致不正确的行为,如果
// 重新生成代码,则所做更改将丢失。
// </auto-generated>
//------------------------------------------------------------------------------
namespace FLY.Winder.UI.Server.Properties
{
/// <summary>
/// 强类型资源类,用于查找本地化字符串等。
/// </summary>
// 此类是由 StronglyTypedResourceBuilder
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
// 若要添加或删除成员,请编辑 .ResX 文件,然后重新运行 ResGen
// (以 /str 作为命令选项),或重新生成 VS 项目。
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources
{
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources()
{
}
/// <summary>
/// 返回此类使用的缓存 ResourceManager 实例。
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager
{
get
{
if ((resourceMan == null))
{
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("FLY.Winder.UI.Server.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// 覆盖当前线程的 CurrentUICulture 属性
/// 使用此强类型的资源类的资源查找。
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture
{
get
{
return resourceCulture;
}
set
{
resourceCulture = value;
}
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
\ No newline at end of file
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace FLY.Winder.UI.Server.Properties
{
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
{
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default
{
get
{
return defaultInstance;
}
}
}
}
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Newtonsoft.Json" version="12.0.1" targetFramework="net40" />
</packages>
\ No newline at end of file
Project.FLY.Winder_20190413/FLY.Winder.UI.Server/reload.ico

66.1 KB

using FLY.OBJComponents.Client;
using FLY.OBJComponents.IService;
using FLY.Winder.Common;
using FLY.Winder.IService;
using FLY.Winder.OBJ_INTERFACE;
using FObjBase;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
namespace FLY.Winder.Client
{
public class WinderSystemServiceClient : FObj, IWinderSystemService, INotifyPropertyChanged
{
#region IIBCSystemService
public WinderAccessory Accessory { get; private set; }
public List<WinderInsideOutside> Items { get; private set; }
/// <summary>
/// PLC代理系统
/// </summary>
public IPLCProxySystemService PLCos { get; private set; }
#endregion
public bool IsConnected { get; set; } = false;
IFConn mConn;
UInt32 mServerID;
public event PropertyChangedEventHandler PropertyChanged;
SyncPropServiceClient syncPropServiceClient;
public WinderSystemServiceClient()
{
mServerID = OBJ_INTERFACE.OBJ_INTERFACE.WINDER_OBJ_ID;
Items = new List<WinderInsideOutside>();
for (int i = 0; i < 2; i++)
{
Items.Add(new WinderInsideOutside());
}
Accessory = new WinderAccessory();
syncPropServiceClient = new SyncPropServiceClient(
mServerID + 1,
new Dictionary<string, INotifyPropertyChanged>
{
{"Accessory", Accessory },
{"Items[0]", Items[0] },
{"Items[1]", Items[1] }
});
PLCos = new PLCProxySystemServiceClient(
OBJ_INTERFACE.OBJ_INTERFACE.WINDER_OBJ_PLCOS_ID,
new Dictionary<string, INotifyPropertyChanged>
{
{"Accessory", Accessory },
{"Items[0]", Items[0] },
{"Items[1]", Items[1] }
});
}
public UInt32[] GetIDs()
{
List<UInt32> IDs = new List<uint>();
IDs.Add(ID);
IDs.Add(syncPropServiceClient.ID);
IDs.AddRange(((PLCProxySystemServiceClient)PLCos).GetIDs());
return IDs.ToArray();
}
public override void ConnectNotify(IFConn from)
{
mConn = from;
IsConnected = from.IsConnected;
if (from.IsConnected)
{
CurrObjSys.SenseConfigEx(mConn, mServerID, ID,
0xffffffff, SENSE_CONFIG.ADD);
}
}
}
}
using FLY.OBJComponents.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace FLY.Winder.Common
{
public static class ERRNOs
{
static ERRNOs()
{
ERRNO_PLC_DISCONNECTED = new ERRNO() { Code = 255, Descrption = "收卷 PLC连接断开" };
#region 收卷
ERRNO_WINDER_VFD = new ERRNO() { Code = 0, Descrption = "收卷变频故障报警"};
ERRNO_WINDER_FAN = new ERRNO() { Code = 1, Descrption = "收卷风机过载报警", OffIsError = true };
ERRNO_WINDER_TURNOVER = new ERRNO() { Code = 2, Descrption = "收卷翻转刀架过载报警", OffIsError = true };
ERRNO_WINDER_SCRAM = new ERRNO() { Code = 3, Descrption = "收卷急停开启", OffIsError = true };
ERRNO_WINDER_AIRROLLERNOREADY = new ERRNO() { Code = 4, Descrption = "收卷换卷气涨轴检测未到位报警" };
ERRNO_WINDER_MEASUREPREWARNING = new ERRNO() { Code = 5, Descrption = "收卷预警长度报警" };
ERRNO_WINDER_CHANGEROLL = new ERRNO() { Code = 6, Descrption = "收卷换卷提醒报警" };
ERRNO_WINDER_UNLOADARM = new ERRNO() { Code = 7, Descrption = "收卷卸料臂检测报警" };
ERRNO_WINDER_COMMERR = new ERRNO() { Code = 8, Descrption = "收卷变频通讯故障" };
#endregion
#region 其它
ERRNO_TRACTION1FAN = new ERRNO() { Code = 20, Descrption = "主牵引风机过载报警", OffIsError = true };
ERRNO_TRACTION1VFD = new ERRNO() { Code = 21, Descrption = "主牵引变频故障报警"};
ERRNO_TRACTION2VFD = new ERRNO() { Code = 22, Descrption = "二牵引变频故障报警"};
ERRNO_TRACTION2FAN = new ERRNO() { Code = 23, Descrption = "二牵引风机过载报警", OffIsError = true };
ERRNO_ROTARYVFD = new ERRNO() { Code = 24, Descrption = "旋转塔变频故障报警"};
ERRNO_ROTARYFAN = new ERRNO() { Code = 25, Descrption = "旋转塔风机过载报警", OffIsError = true };
ERRNO_TRACTION2SCRAM = new ERRNO() { Code = 26, Descrption = "二牵引拉线急停开启", OffIsError = true };
ERRNO_SCRAM = new ERRNO() { Code = 27, Descrption = "电柜急停开启", OffIsError = true };
ERRNO_TRACTION1SCRAM = new ERRNO() { Code = 28, Descrption = "主牵引拉线急停开启", OffIsError = true };
ERRNO_CUSTOMERSCRAM = new ERRNO() { Code = 29, Descrption = "客户急停开启", OffIsError = true };
ERRNO_ROTARYFORWLIMIT = new ERRNO() { Code = 30, Descrption = "旋转塔正转已到极限位", OffIsError = true };
ERRNO_ROTARYBACKWLIMIT = new ERRNO() { Code = 31, Descrption = "旋转塔反转已到极限位", OffIsError = true };
ERRNO_ROTARYFORWLOCK = new ERRNO() { Code = 32, Descrption = "转塔正向极限锁定" };
ERRNO_ROTARYBACKWLOCK = new ERRNO() { Code = 33, Descrption = "转塔反向极限锁定" };
ERRNO_TRACTION1_COMMERR = new ERRNO() { Code = 34, Descrption = "一牵变频通讯故障" };
ERRNO_TRACTION2_COMMERR = new ERRNO() { Code = 35, Descrption = "二牵变频通讯故障" };
ERRNO_ROTARY_COMMERR = new ERRNO() { Code = 36, Descrption = "旋转变频通讯故障" };
#endregion
}
#region 报警类型
/// <summary>
/// PLC连接断开
/// </summary>
public static ERRNO ERRNO_PLC_DISCONNECTED;
#region 内外收卷
/// <SUMMARY>
/// 收卷变频故障报警!!!请检查(OFF) ISERROR_VFD
/// </SUMMARY>
public static ERRNO ERRNO_WINDER_VFD;
/// <SUMMARY>
/// 收卷风机过载报警!!!请检查(OFF)
/// </SUMMARY>
public static ERRNO ERRNO_WINDER_FAN;
/// <SUMMARY>
/// 收翻转刀架过载报警!!!请检查(OFF)
/// </SUMMARY>
public static ERRNO ERRNO_WINDER_TURNOVER;
/// <SUMMARY>
/// 收卷急停开启!!!请复位(OFF)
/// </SUMMARY>
public static ERRNO ERRNO_WINDER_SCRAM;
/// <SUMMARY>
/// 收卷换卷气涨轴检测未到位报警!!!请检查(ON)
/// </SUMMARY>
public static ERRNO ERRNO_WINDER_AIRROLLERNOREADY;
/// <SUMMARY>
/// 收预警长度报警!!!请准备换卷(ON)
/// </SUMMARY>
public static ERRNO ERRNO_WINDER_MEASUREPREWARNING;
/// <SUMMARY>
/// 收卷换卷提醒报警!!!请注意安全(ON)
/// </SUMMARY>
public static ERRNO ERRNO_WINDER_CHANGEROLL;
/// <SUMMARY>
/// 收卸料臂检测报警(ON)
/// </SUMMARY>
public static ERRNO ERRNO_WINDER_UNLOADARM;
/// <summary>
/// 收卷变频通讯故障(ON)
/// </summary>
public static ERRNO ERRNO_WINDER_COMMERR;
#endregion
#region 其它
/// <SUMMARY>
/// 主牵引风机过载报警!!!请检查(OFF)
/// </SUMMARY>
public static ERRNO ERRNO_TRACTION1FAN;
/// <SUMMARY>
/// 主牵引变频故障报警!!!请检查(OFF)
/// </SUMMARY>
public static ERRNO ERRNO_TRACTION1VFD;
/// <SUMMARY>
/// 二牵引变频故障报警!!!请检查(OFF)
/// </SUMMARY>
public static ERRNO ERRNO_TRACTION2VFD;
/// <SUMMARY>
/// 二牵引风机过载报警!!!请检查(OFF)
/// </SUMMARY>
public static ERRNO ERRNO_TRACTION2FAN;
/// <SUMMARY>
/// 旋转塔变频故障报警!!!请检查(OFF)
/// </SUMMARY>
public static ERRNO ERRNO_ROTARYVFD;
/// <SUMMARY>
/// 旋转塔风机过载报警!!!请检查(OFF)
/// </SUMMARY>
public static ERRNO ERRNO_ROTARYFAN;
/// <SUMMARY>
/// 二牵引拉线急停开启!!!请复位(OFF)
/// </SUMMARY>
public static ERRNO ERRNO_TRACTION2SCRAM;
/// <SUMMARY>
/// 电柜急停开启!!!请复位(OFF)
/// </SUMMARY>
public static ERRNO ERRNO_SCRAM;
/// <SUMMARY>
/// 主牵引拉线急停开启!!!请复位(OFF)
/// </SUMMARY>
public static ERRNO ERRNO_TRACTION1SCRAM;
/// <SUMMARY>
/// 客户急停开启!!!请复位(OFF)
/// </SUMMARY>
public static ERRNO ERRNO_CUSTOMERSCRAM;
/// <SUMMARY>
/// 旋转塔正转已到极限位!!!请检查(OFF)
/// </SUMMARY>
public static ERRNO ERRNO_ROTARYFORWLIMIT;
/// <SUMMARY>
/// 旋转塔反转已到极限位!!!请检查(OFF)
/// </SUMMARY>
public static ERRNO ERRNO_ROTARYBACKWLIMIT;
/// <SUMMARY>
/// 转塔正向极限锁定!!!请解除(ON)
/// </SUMMARY>
public static ERRNO ERRNO_ROTARYFORWLOCK;
/// <SUMMARY>
/// 转塔反向极限锁定!!!请解除(ON)
/// </SUMMARY>
public static ERRNO ERRNO_ROTARYBACKWLOCK;
/// <summary>
/// 一牵变频通讯故障
/// </summary>
public static ERRNO ERRNO_TRACTION1_COMMERR;
/// <summary>
/// 二牵变频通讯故障
/// </summary>
public static ERRNO ERRNO_TRACTION2_COMMERR;
/// <summary>
/// 旋转变频通讯故障
/// </summary>
public static ERRNO ERRNO_ROTARY_COMMERR;
#endregion
#endregion
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
namespace FLY.Winder.Common
{
public class WinderSystemParams : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
}
}
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\..\packages\PropertyChanged2.Fody.2.5.13\build\PropertyChanged2.Fody.props" Condition="Exists('..\..\packages\PropertyChanged2.Fody.2.5.13\build\PropertyChanged2.Fody.props')" />
<Import Project="..\..\Project.FLY.IBC\packages\PropertyChanged2.Fody.2.5.13\build\PropertyChanged2.Fody.props" Condition="Exists('..\..\Project.FLY.IBC\packages\PropertyChanged2.Fody.2.5.13\build\PropertyChanged2.Fody.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{A989E480-3730-4B26-809F-DFF94D145D6E}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>FLY.Winder</RootNamespace>
<AssemblyName>FLY.Winder</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\..\packages\Newtonsoft.Json.12.0.1\lib\net40\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="PropertyChanged2, Version=2.5.13.0, Culture=neutral, PublicKeyToken=ee3ee20bcf148ddd, processorArchitecture=MSIL">
<HintPath>..\..\packages\PropertyChanged2.Fody.2.5.13\lib\net40\PropertyChanged2.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Client\WinderSystemServiceClient.cs" />
<Compile Include="Common\ERRNOs.cs" />
<Compile Include="Common\WinderAccessory.cs" />
<Compile Include="Common\WinderInsideOutside.cs" />
<Compile Include="Common\WinderSystemData.cs" />
<Compile Include="IService\IWinderSystemService.cs" />
<Compile Include="OBJ_INTERFACE\WINDER_OBJ_INTERFACE.cs" />
<Compile Include="OBJ_INTERFACE\OBJ_INTERFACE.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Server.OBJProxy\WinderSystem_OBJProxy.cs" />
<Compile Include="Server\TDGage.cs" />
<Compile Include="Server\WinderSystem.cs" />
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<Content Include="FodyWeavers.xml" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Project.FLY.FObjSys\FObjSys\FObjBase.csproj">
<Project>{abfe87d4-b692-4ae9-a8c0-1f470b8acbb8}</Project>
<Name>FObjBase</Name>
</ProjectReference>
<ProjectReference Include="..\..\Project.FLY.Misc\MISC\Misc.csproj">
<Project>{5ee61ac6-5269-4f0f-b8fa-4334fe4a678f}</Project>
<Name>Misc</Name>
</ProjectReference>
<ProjectReference Include="..\..\Project.FLY.ModbusMapper\FLY.ModbusMapper\FLY.ModbusMapper.csproj">
<Project>{6d4b9bda-2a66-4583-b244-758bc4213d9f}</Project>
<Name>FLY.ModbusMapper</Name>
</ProjectReference>
<ProjectReference Include="..\..\Project.FLY.OBJComponents\OBJComponents\OBJComponents.csproj">
<Project>{a539505d-9ac0-426b-a9a0-197df50598b0}</Project>
<Name>OBJComponents</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\..\Project.FLY.IBC\packages\Fody.3.2.13\build\Fody.targets" Condition="Exists('..\..\Project.FLY.IBC\packages\Fody.3.2.13\build\Fody.targets')" />
<Import Project="..\..\packages\Fody.3.2.13\build\Fody.targets" Condition="Exists('..\..\packages\Fody.3.2.13\build\Fody.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\..\packages\Fody.3.2.13\build\Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Fody.3.2.13\build\Fody.targets'))" />
<Error Condition="!Exists('..\..\packages\PropertyChanged2.Fody.2.5.13\build\PropertyChanged2.Fody.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\PropertyChanged2.Fody.2.5.13\build\PropertyChanged2.Fody.props'))" />
</Target>
</Project>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8" ?>
<Weavers>
<PropertyChanged2 />
</Weavers>
This diff is collapsed.
This diff is collapsed.
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Fody" version="3.2.13" targetFramework="net40" developmentDependency="true" />
<package id="Newtonsoft.Json" version="12.0.1" targetFramework="net40" />
<package id="PropertyChanged2.Fody" version="2.5.13" targetFramework="net40" />
</packages>
\ No newline at end of file
This diff is collapsed.
File added
File added
File added
File added
This diff is collapsed.
......@@ -5,7 +5,7 @@ $root_path = $PSScriptRoot + "\.."
$dest_path = $root_path + "\Project.FLY.Thick.Blowing\FLY.Thick.Blowing.UI.Fix.Client\bin\Debug"
echo main_module\*
cp ($PSScriptRoot + "\main_module\*") ($dest_path+"\main_module")
cp -r -force ($PSScriptRoot + "\main_module\*") ($dest_path+"\main_module")
#-----------------------------------------------------------------
echo Ƴɹ
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment