初始化上传

This commit is contained in:
2025-08-26 08:37:44 +08:00
commit 31d81b91b6
448 changed files with 80981 additions and 0 deletions

View File

@@ -0,0 +1,67 @@
<UserControl xmlns="https://github.com/avaloniaui"
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"
mc:Ignorable="d" d:DesignHeight="600" d:DesignWidth="715"
xmlns:vm ="clr-namespace:常用工具集.ViewModel._01PLC通信调试"
x:Class="常用工具集.MC3E服务模拟"
xmlns:Utils="clr-namespace:常用工具集.Utility"
xmlns:i="clr-namespace:Avalonia.Xaml.Interactivity;assembly=Avalonia.Xaml.Interactivity"
x:CompileBindings="True"
x:DataType="vm:MC3E服务模拟ViewModel">
<!-- xmlns:b="clr-namespace:Avalonia.Xaml.Behaviors;assembly=Avalonia.Xaml.Behaviors" -->
<UserControl.DataContext>
<vm:MC3E服务模拟ViewModel />
</UserControl.DataContext>
<Grid RowDefinitions="40,350,160,*">
<Grid Grid.Row="0">
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Text="端口号:" Margin="25,16,0,0"/>
<TextBox IsEnabled="{Binding Enabled1}" HorizontalAlignment="Left" Margin="75,10,0,0" TextWrapping="Wrap" Text="{Binding Port}" VerticalAlignment="Top" Width="86" />
<Button Content="{Binding ButtonText}" Command="{Binding StartCmd}" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="190,10,0,0" Width="90" />
<TextBlock HorizontalAlignment="Left" Margin="315,16,0,0" TextWrapping="Wrap" Text="移动到地址" VerticalAlignment="Top" Width="80" />
<NumericUpDown IsEnabled="{Binding Enabled2}" Value="{Binding StartAddress}" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="405,10,0,0" Width="115" Height="35" Maximum="65515" Minimum="1" />
</Grid>
<Grid Grid.Row="1" ColumnDefinitions="*,*,*">
<Border Theme="{StaticResource CardBorder}" Grid.Column="0" Margin="5,5,5,5">
<Grid>
<TextBlock HorizontalAlignment="Center" Margin="0,-20,0,0" TextWrapping="Wrap" Text="数据" VerticalAlignment="Top"/>
<DataGrid IsEnabled="{Binding Enabled2}" HeadersVisibility="All"
ItemsSource="{Binding List1}"
IsReadOnly="True"
IsHitTestVisible="False"
Background="White" BorderThickness="1"
RowHeight="30" AutoGenerateColumns="False"
SelectionMode="Single">
<DataGrid.Columns>
<DataGridTextColumn
Width="*"
x:DataType="vm:MyDataGrid"
Binding="{Binding Address}"
Header="地址" />
<DataGridTextColumn
Width="*"
x:DataType="vm:MyDataGrid"
Binding="{Binding Value2}"
Header="数据" />
</DataGrid.Columns>
</DataGrid>
</Grid>
</Border>
</Grid>
<Border Theme="{StaticResource CardBorder}" Grid.Row="2">
<Grid>
<TextBlock HorizontalAlignment="Center" Margin="0,-20,0,0" TextWrapping="Wrap" Text="运行日志" VerticalAlignment="Top"/>
<TextBox x:Name="TBInfo" Height="130" TextWrapping="Wrap" ScrollViewer.VerticalScrollBarVisibility="Auto" Text="{Binding Message}" Margin="5,0,5,0" HorizontalContentAlignment="Left" VerticalContentAlignment="Top">
<i:Interaction.Behaviors>
<DataTriggerBehavior Binding="{Binding Text.Length, ElementName=TBInfo}" ComparisonCondition="NotEqual" Value="0">
<ChangePropertyAction TargetObject="TBInfo" PropertyName="CaretIndex" Value="{Binding ElementName=TBInfo, Path=Text.Length}"/>
<CallMethodAction MethodName="ScrollToHome" />
</DataTriggerBehavior>
</i:Interaction.Behaviors>
</TextBox>
</Grid>
</Border>
</Grid>
</UserControl>

View File

@@ -0,0 +1,13 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ;
public partial class MC3E服务模拟 : UserControl
{
public MC3E服务模拟()
{
InitializeComponent();
}
}

View File

@@ -0,0 +1,95 @@
<UserControl xmlns="https://github.com/avaloniaui"
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"
mc:Ignorable="d" d:DesignHeight="600" d:DesignWidth="715"
xmlns:vm ="clr-namespace:常用工具集.ViewModel._01PLC通信调试"
x:Class="常用工具集.ModbusRTU"
xmlns:i="clr-namespace:Avalonia.Xaml.Interactivity;assembly=Avalonia.Xaml.Interactivity"
x:CompileBindings="True"
x:DataType="vm:ModbusRTUViewModel">
<!-- xmlns:b="clr-namespace:Avalonia.Xaml.Behaviors;assembly=Avalonia.Xaml.Behaviors" -->
<UserControl.DataContext>
<vm:ModbusRTUViewModel />
</UserControl.DataContext>
<Grid>
<Button IsEnabled="{Binding Enabled1}" Content="连接" Command="{Binding ConnectCmd}" HorizontalAlignment="Left" Margin="560,10,0,0" VerticalAlignment="Top" Width="85" />
<Button IsEnabled="{Binding Enabled2}" Content="断开连接" Command="{Binding DisconnectCmd}" HorizontalAlignment="Left" Margin="560,47,0,0" VerticalAlignment="Top" Width="85" />
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Text="串口:" Margin="25,20,0,0" />
<ComboBox IsEnabled="{Binding Enabled1}" HorizontalAlignment="Left" VerticalAlignment="Top" SelectedIndex="{Binding SerialIndex}" ItemsSource="{Binding SerialList}" Margin="65,14,0,0" Width="85" />
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Text="波特率:" Margin="185,20,0,0" />
<ComboBox HorizontalAlignment="Left" IsEnabled="{Binding Enabled1}" VerticalAlignment="Top" SelectedIndex="{Binding BaudRateIndex}" ItemsSource="{Binding BaudRateList}" Margin="235,14,0,0" Width="115" />
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Text="从站ID:" Margin="384,20,0,0" />
<TextBox IsEnabled="{Binding Enabled1}" HorizontalAlignment="Left" Margin="434,14,0,0" TextWrapping="Wrap" Text="{Binding SlaveId}" VerticalAlignment="Top" Width="86" />
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Text="数据位:" Margin="10,53,0,0" />
<ComboBox HorizontalAlignment="Left" IsEnabled="{Binding Enabled1}" VerticalAlignment="Top" SelectedIndex="{Binding DataBitIndex}" ItemsSource="{Binding DataBitList}" Margin="60,47,0,0" Width="90" />
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Text="停止位:" Margin="185,53,0,0" />
<ComboBox HorizontalAlignment="Left" IsEnabled="{Binding Enabled1}" VerticalAlignment="Top" SelectedIndex="{Binding StopBitIndex}" ItemsSource="{Binding StopBitList}" Margin="235,47,0,0" Width="115" />
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Text="校验:" Margin="400,53,0,0" />
<ComboBox HorizontalAlignment="Left" IsEnabled="{Binding Enabled1}" VerticalAlignment="Top" SelectedIndex="{Binding ParityIndex}" ItemsSource="{Binding ParityList}" Margin="434,47,0,0" Width="86" />
<Border Theme="{StaticResource CardBorder}" Width="680" Height="480" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,82,0,0">
<Grid>
<TextBlock HorizontalAlignment="Left" Margin="0,-20,0,0" TextWrapping="Wrap" Text="读写操作" VerticalAlignment="Top"/>
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Text="地址:" Margin="20,31,0,0" />
<TextBox IsEnabled="{Binding Enabled2}" HorizontalAlignment="Left" Margin="60,25,0,0" TextWrapping="Wrap" Text="{Binding Address}" VerticalAlignment="Top" Width="125" />
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Text="字符串长度:" Margin="10,271,0,0" />
<TextBox IsEnabled="{Binding Enabled2}" HorizontalAlignment="Left" Margin="90,265,0,0" TextWrapping="Wrap" Text="{Binding StringLength}" VerticalAlignment="Top" Width="115" />
<TextBlock HorizontalAlignment="Left" Margin="10,298,0,0" TextWrapping="Wrap" Text="注意:非地址长度,一个地址两个字符" Foreground="Red" VerticalAlignment="Top" Width="245" />
<!-- 读写int16 -->
<Button IsEnabled="{Binding Enabled2}" Content="读int16" Command="{Binding ReadCmd}" CommandParameter="INT16" HorizontalAlignment="Left" Margin="237,25,0,0" VerticalAlignment="Top" Width="90" />
<TextBox IsEnabled="{Binding Enabled2}" HorizontalAlignment="Left" Margin="335,25,0,0" TextWrapping="Wrap" Text="{Binding Int16Value}" VerticalAlignment="Top" Width="135" />
<Button IsEnabled="{Binding Enabled2}" Content="写int16" Command="{Binding WriteCmd}" CommandParameter="INT16" HorizontalAlignment="Left" Margin="475,25,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.582,0.67" Width="90" />
<!-- 读写float -->
<Button IsEnabled="{Binding Enabled2}" Content="读single" Command="{Binding ReadCmd}" CommandParameter="REAL" HorizontalAlignment="Left" Margin="237,70,0,0" VerticalAlignment="Top" Width="90" />
<TextBox IsEnabled="{Binding Enabled2}" Text="{Binding RealValue}" HorizontalAlignment="Left" Margin="335,70,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="135" />
<Button IsEnabled="{Binding Enabled2}" Content="写single" Command="{Binding WriteCmd}" CommandParameter="REAL" HorizontalAlignment="Left" Margin="475,70,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.582,0.67" Width="90" />
<!-- 读写int32 -->
<Button IsEnabled="{Binding Enabled2}" Content="读int32" Command="{Binding ReadCmd}" CommandParameter="INT32" HorizontalAlignment="Left" Margin="237,115,0,0" VerticalAlignment="Top" Width="90" />
<TextBox IsEnabled="{Binding Enabled2}" Text="{Binding Int32Value}" HorizontalAlignment="Left" Margin="335,115,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="135" />
<Button IsEnabled="{Binding Enabled2}" Content="写int32" Command="{Binding WriteCmd}" CommandParameter="INT32" HorizontalAlignment="Left" Margin="475,115,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.582,0.67" Width="90" />
<!-- 读写int64 -->
<Button IsEnabled="{Binding Enabled2}" Content="读int64" Command="{Binding ReadCmd}" CommandParameter="INT64" HorizontalAlignment="Left" Margin="237,160,0,0" VerticalAlignment="Top" Width="90" />
<TextBox IsEnabled="{Binding Enabled2}" Text="{Binding LongValue}" HorizontalAlignment="Left" Margin="335,160,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="135" />
<Button IsEnabled="{Binding Enabled2}" Content="写int64" Command="{Binding WriteCmd}" CommandParameter="INT64" HorizontalAlignment="Left" Margin="475,160,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.582,0.67" Width="90" />
<!-- 读写double -->
<Button IsEnabled="{Binding Enabled2}" Content="读double" Command="{Binding ReadCmd}" CommandParameter="DOUBLE" HorizontalAlignment="Left" Margin="237,205,0,0" VerticalAlignment="Top" Width="90" />
<TextBox IsEnabled="{Binding Enabled2}" Text="{Binding DoubleValue}" HorizontalAlignment="Left" Margin="335,205,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="135" />
<Button IsEnabled="{Binding Enabled2}" Content="写double" Command="{Binding WriteCmd}" CommandParameter="DOUBLE" HorizontalAlignment="Left" Margin="475,205,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.582,0.67" Width="90" />
<!-- 读写string -->
<Button IsEnabled="{Binding Enabled2}" Content="读string" Command="{Binding ReadCmd}" CommandParameter="STRING" HorizontalAlignment="Left" Margin="237,261,0,0" VerticalAlignment="Top" Width="80" />
<TextBox IsEnabled="{Binding Enabled2}" Text="{Binding StringValue}" HorizontalAlignment="Left" Margin="335,261,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="135" />
<Button IsEnabled="{Binding Enabled2}" Content="写string" Command="{Binding WriteCmd}" CommandParameter="STRING" HorizontalAlignment="Left" Margin="475,261,0,0" VerticalAlignment="Top" RenderTransformOrigin="0,0.634" Width="80" />
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Text="数据:" Margin="18,346,0,0" />
<TextBox Text="{Binding ReadedValue}" HorizontalAlignment="Left" Margin="58,340,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="180" />
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Text="信息:" Margin="18,389,0,0" />
<TextBox Text="{Binding Message}" HorizontalAlignment="Left" Margin="58,383,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="180" />
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Text="发送的数据:" Margin="260,346,0,0" />
<TextBox Text="{Binding SendedBytesValue}" HorizontalAlignment="Left" Margin="340,340,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="295"/>
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Text="接收的数据:" Margin="260,389,0,0" />
<TextBox Text="{Binding RecivedBytesValue}" HorizontalAlignment="Left" Margin="340,383,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="295" />
<TextBlock HorizontalAlignment="Left" Margin="560,31,0,0" TextWrapping="Wrap" Text="short一个地址" Foreground="Red" VerticalAlignment="Top" Width="85" />
<TextBlock HorizontalAlignment="Left" Margin="560,76,0,0" TextWrapping="Wrap" Text="float两个地址" Foreground="Red" VerticalAlignment="Top" Width="85" />
<TextBlock HorizontalAlignment="Left" Margin="560,121,0,0" TextWrapping="Wrap" Text="int两个地址" Foreground="Red" VerticalAlignment="Top" Width="85" />
<TextBlock HorizontalAlignment="Left" Margin="560,166,0,0" TextWrapping="Wrap" Text="long四个地址" Foreground="Red" VerticalAlignment="Top" Width="85" />
<TextBlock HorizontalAlignment="Left" Margin="560,211,0,0" TextWrapping="Wrap" Text="long四个地址" Foreground="Red" VerticalAlignment="Top" Width="85" />
</Grid>
</Border>
</Grid>
</UserControl>

View File

@@ -0,0 +1,13 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ;
public partial class ModbusRTU : UserControl
{
public ModbusRTU()
{
InitializeComponent();
}
}

View File

@@ -0,0 +1,147 @@
<UserControl xmlns="https://github.com/avaloniaui"
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"
mc:Ignorable="d" d:DesignHeight="600" d:DesignWidth="715"
xmlns:vm ="clr-namespace:常用工具集.ViewModel._01PLC通信调试"
xmlns:i="clr-namespace:Avalonia.Xaml.Interactivity;assembly=Avalonia.Xaml.Interactivity"
x:Class="常用工具集.Modbus服务"
x:CompileBindings="True"
x:DataType="vm:Modbus服务ViewModel">
<!-- xmlns:b="clr-namespace:Avalonia.Xaml.Behaviors;assembly=Avalonia.Xaml.Behaviors" -->
<UserControl.DataContext>
<vm:Modbus服务ViewModel />
</UserControl.DataContext>
<Grid RowDefinitions="40,350,160,*">
<Grid Grid.Row="0">
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Text="端口号:" Margin="25,16,0,0"/>
<TextBox IsEnabled="{Binding Enabled1}" HorizontalAlignment="Left" Margin="75,10,0,0" TextWrapping="Wrap" Text="{Binding Port}" VerticalAlignment="Top" Width="86" />
<Button Content="{Binding ButtonText}" Command="{Binding StartCmd}" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="190,10,0,0" Width="90" />
<TextBlock HorizontalAlignment="Left" Margin="315,16,0,0" TextWrapping="Wrap" Text="移动到地址" VerticalAlignment="Top" Width="80" />
<NumericUpDown IsEnabled="{Binding Enabled2}" Value="{Binding StartAddress}" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="405,10,0,0" Width="115" Height="35" Maximum="65515" Minimum="1"/>
</Grid>
<Grid Grid.Row="1" ColumnDefinitions="*,*,*,*">
<Border Theme="{StaticResource CardBorder}" Grid.Column="0" Margin="5,5,5,5">
<Grid>
<TextBlock HorizontalAlignment="Center" Margin="0,-20,0,0" TextWrapping="Wrap" Text="线圈" VerticalAlignment="Top"/>
<DataGrid IsEnabled="{Binding Enabled2}" HeadersVisibility="All"
ItemsSource="{Binding List1}"
IsReadOnly="True"
IsHitTestVisible="False"
Background="White" BorderThickness="1"
RowHeight="30" AutoGenerateColumns="False"
SelectionMode="Single">
<DataGrid.Columns>
<DataGridTextColumn
Width="*"
x:DataType="vm:MyDataGrid"
Binding="{Binding Address}"
Header="地址" />
<DataGridTextColumn
Width="*"
x:DataType="vm:MyDataGrid"
Binding="{Binding Value1}"
Header="数据" />
</DataGrid.Columns>
</DataGrid>
</Grid>
</Border>
<Border Theme="{StaticResource CardBorder}" Grid.Column="1" Margin="5,5,5,5">
<Grid>
<TextBlock HorizontalAlignment="Center" Margin="0,-20,0,0" TextWrapping="Wrap" Text="状态寄存器" VerticalAlignment="Top"/>
<DataGrid IsEnabled="{Binding Enabled2}" HeadersVisibility="All"
ItemsSource="{Binding List2}"
IsReadOnly="True"
IsHitTestVisible="False"
Background="White" BorderThickness="1"
RowHeight="30" AutoGenerateColumns="False"
SelectionMode="Single">
<DataGrid.Columns>
<DataGridTextColumn
Width="*"
x:DataType="vm:MyDataGrid"
Binding="{Binding Address}"
Header="地址" />
<DataGridTextColumn
Width="*"
x:DataType="vm:MyDataGrid"
Binding="{Binding Value1}"
Header="数据" />
</DataGrid.Columns>
</DataGrid>
</Grid>
</Border>
<Border Theme="{StaticResource CardBorder}" Grid.Column="2" Margin="5,5,5,5">
<Grid>
<TextBlock HorizontalAlignment="Center" Margin="0,-20,0,0" TextWrapping="Wrap" Text="保持寄存器" VerticalAlignment="Top"/>
<DataGrid IsEnabled="{Binding Enabled2}" HeadersVisibility="All"
ItemsSource="{Binding List3}"
IsReadOnly="True"
IsHitTestVisible="False"
Background="White" BorderThickness="1"
RowHeight="30" AutoGenerateColumns="False"
SelectionMode="Single">
<DataGrid.Columns>
<DataGridTextColumn
Width="*"
x:DataType="vm:MyDataGrid"
Binding="{Binding Address}"
Header="地址" />
<DataGridTextColumn
Width="*"
x:DataType="vm:MyDataGrid"
Binding="{Binding Value2}"
Header="数据" />
</DataGrid.Columns>
</DataGrid>
</Grid>
</Border>
<Border Theme="{StaticResource CardBorder}" Grid.Column="3" Margin="5,5,5,5">
<Grid>
<TextBlock HorizontalAlignment="Center" Margin="0,-20,0,0" TextWrapping="Wrap" Text="输入寄存器" VerticalAlignment="Top"/>
<DataGrid IsEnabled="{Binding Enabled2}" HeadersVisibility="All"
ItemsSource="{Binding List4}"
IsReadOnly="True"
IsHitTestVisible="False"
Background="White" BorderThickness="1"
RowHeight="30" AutoGenerateColumns="False"
SelectionMode="Single">
<DataGrid.Columns>
<DataGridTextColumn
Width="*"
x:DataType="vm:MyDataGrid"
Binding="{Binding Address}"
Header="地址" />
<DataGridTextColumn
Width="*"
x:DataType="vm:MyDataGrid"
Binding="{Binding Value2}"
Header="数据" />
</DataGrid.Columns>
</DataGrid>
</Grid>
</Border>
</Grid>
<Border Theme="{StaticResource CardBorder}" Grid.Row="2">
<Grid>
<TextBlock HorizontalAlignment="Center" Margin="0,-20,0,0" TextWrapping="Wrap" Text="运行日志" VerticalAlignment="Top"/>
<TextBox x:Name="TBInfo" Height="130" TextWrapping="Wrap" ScrollViewer.VerticalScrollBarVisibility="Auto" Text="{Binding Message}" Margin="5,0,5,0" HorizontalContentAlignment="Left" VerticalContentAlignment="Top">
<i:Interaction.Behaviors>
<DataTriggerBehavior Binding="{Binding Text.Length, ElementName=TBInfo}" ComparisonCondition="NotEqual" Value="0">
<ChangePropertyAction TargetObject="TBInfo" PropertyName="CaretIndex" Value="{Binding ElementName=TBInfo, Path=Text.Length}"/>
<CallMethodAction MethodName="ScrollToHome" />
</DataTriggerBehavior>
</i:Interaction.Behaviors>
</TextBox>
</Grid>
</Border>
</Grid>
</UserControl>

View File

@@ -0,0 +1,13 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ;
public partial class Modbus服务 : UserControl
{
public Modbus服务()
{
InitializeComponent();
}
}

View File

@@ -0,0 +1,90 @@
<UserControl xmlns="https://github.com/avaloniaui"
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"
mc:Ignorable="d" d:DesignHeight="600" d:DesignWidth="715"
xmlns:vm ="clr-namespace:常用工具集.ViewModel._01PLC通信调试"
x:Class="常用工具集.Modbus调试1"
x:CompileBindings="True"
x:DataType="vm:Modbus调试1ViewModel">
<UserControl.DataContext>
<vm:Modbus调试1ViewModel />
</UserControl.DataContext>
<Grid>
<TextBlock HorizontalAlignment="Left" Margin="25,21,0,0" TextWrapping="Wrap" Text="IP地址:" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled1}" HorizontalAlignment="Left" Margin="75,15,0,0" TextWrapping="Wrap" Text="{Binding IpAddress}" VerticalAlignment="Top" Width="125" />
<TextBlock HorizontalAlignment="Left" Margin="225,21,0,0" TextWrapping="Wrap" Text="端口号:" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled1}" HorizontalAlignment="Left" Margin="275,15,0,0" TextWrapping="Wrap" Text="{Binding Port}" VerticalAlignment="Top" Width="86" />
<Button IsEnabled="{Binding Enabled1}" Content="连接" Command="{Binding ConnectCmd}" HorizontalAlignment="Left" Margin="465,15,0,0" VerticalAlignment="Top" Width="85" />
<Button IsEnabled="{Binding Enabled2}" Content="断开连接" Command="{Binding DisconnectCmd}" HorizontalAlignment="Left" Margin="560,15,0,0" VerticalAlignment="Top" Width="85" />
<Border Theme="{StaticResource CardBorder}" Width="310" Height="450" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,50,0,0">
<Grid>
<TextBlock HorizontalAlignment="Left" Margin="0,-20,0,0" TextWrapping="Wrap" Text="读操作" VerticalAlignment="Top"/>
<TextBlock HorizontalAlignment="Left" Margin="20,31,0,0" TextWrapping="Wrap" Text="读取地址:" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled1}" Margin="100,25,0,0" TextWrapping="Wrap" Text="{Binding ReadAddress}" HorizontalAlignment="Left" VerticalAlignment="Top" Width="85" />
<TextBlock HorizontalAlignment="Left" Margin="20,64,0,0" TextWrapping="Wrap" Text="读取数量:" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled2}" HorizontalAlignment="Left" Margin="100,58,0,0" TextWrapping="Wrap" Text="{Binding ReadCount}" VerticalAlignment="Top" Width="85" />
<Button IsEnabled="{Binding Enabled2}" Content="读线圈寄存器" Command="{Binding ReadCmd}" CommandParameter="1" HorizontalAlignment="Left" Margin="97,115,0,0" VerticalAlignment="Top" Width="110" />
<TextBlock HorizontalAlignment="Left" Margin="10,161,0,0" TextWrapping="Wrap" Text="读取结果:" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled2}" HorizontalAlignment="Left" Margin="90,155,0,0" TextWrapping="Wrap" Text="{Binding ReadResult1}" VerticalAlignment="Top" Width="195"/>
<Button IsEnabled="{Binding Enabled2}" Content="读状态寄存器" Command="{Binding ReadCmd}" CommandParameter="2" HorizontalAlignment="Left" Width="110" Margin="97,200,0,0" VerticalAlignment="Top"/>
<TextBlock HorizontalAlignment="Left" Margin="10,245,0,0" TextWrapping="Wrap" Text="读取结果:" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled1}" HorizontalAlignment="Left" Margin="90,239,0,0" TextWrapping="Wrap" Text="{Binding ReadResult2}" VerticalAlignment="Top" Width="195"/>
<Button IsEnabled="{Binding Enabled2}" Content="读保持寄存器" Command="{Binding ReadCmd}" CommandParameter="3" HorizontalAlignment="Left" Width="110" Margin="97,277,0,0" VerticalAlignment="Top" />
<TextBlock HorizontalAlignment="Left" Margin="10,318,0,0" TextWrapping="Wrap" Text="读取结果:" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled1}" HorizontalAlignment="Left" Margin="90,312,0,0" TextWrapping="Wrap" Text="{Binding ReadResult3}" VerticalAlignment="Top" Width="195"/>
<Button IsEnabled="{Binding Enabled2}" Content="读输入寄存器" Command="{Binding ReadCmd}" CommandParameter="4" HorizontalAlignment="Left" Width="110" Margin="97,345,0,0" VerticalAlignment="Top" />
<TextBlock HorizontalAlignment="Left" Margin="10,388,0,0" TextWrapping="Wrap" Text="读取结果:" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled1}" HorizontalAlignment="Left" Margin="90,380,0,0" TextWrapping="Wrap" Text="{Binding ReadResult4}" VerticalAlignment="Top" Width="195"/>
</Grid>
</Border>
<Border Theme="{StaticResource CardBorder}" Width="338" Height="450" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="340,50,0,0">
<Grid>
<TextBlock HorizontalAlignment="Left" Margin="0,-20,0,0" TextWrapping="Wrap" Text="写操作" VerticalAlignment="Top"/>
<TextBlock HorizontalAlignment="Left" Margin="20,31,0,0" TextWrapping="Wrap" Text="写入地址:" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled2}" HorizontalAlignment="Left" Margin="100,25,0,0" TextWrapping="Wrap" Text="{Binding WriteAddress}" VerticalAlignment="Top" Width="85" />
<Button IsEnabled="{Binding Enabled2}" Content="写单线圈寄存器" Command="{Binding WriteCmd}" CommandParameter="1" HorizontalAlignment="Left" Margin="-10,88,0,0" VerticalAlignment="Top" Width="125" />
<TextBlock HorizontalAlignment="Left" Margin="122,93,0,0" TextWrapping="Wrap" Text="写入数据:" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled2}" HorizontalAlignment="Left" Margin="202,87,0,0" TextWrapping="Wrap" Text="{Binding WriteValue1}" VerticalAlignment="Top" Width="40" />
<TextBlock HorizontalAlignment="Left" Margin="254,94,0,0" TextWrapping="Wrap" Text="0或1" Foreground="Red" VerticalAlignment="Top" Width="45" />
<Button IsEnabled="{Binding Enabled2}" Content="写单保持寄存器" Command="{Binding WriteCmd}" CommandParameter="2" HorizontalAlignment="Left" Margin="-10,141,0,0" VerticalAlignment="Top" Width="125" />
<TextBlock HorizontalAlignment="Left" Margin="122,146,0,0" TextWrapping="Wrap" Text="写入数据:" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled2}" HorizontalAlignment="Left" Margin="190,140,0,0" TextWrapping="Wrap" Text="{Binding WriteValue2}" VerticalAlignment="Top" Width="60" />
<TextBlock HorizontalAlignment="Left" Margin="254,147,0,0" TextWrapping="Wrap" Text="ushort类型" Foreground="Red" VerticalAlignment="Top" Width="67" />
<Button IsEnabled="{Binding Enabled2}" Content="写多线圈寄存器" Command="{Binding WriteCmd}" CommandParameter="3" HorizontalAlignment="Left" Margin="-10,216,0,0" VerticalAlignment="Top" Width="125" />
<TextBlock HorizontalAlignment="Left" Margin="128,222,0,0" TextWrapping="Wrap" Text="(bool类型空格分开 0和1表示)" Foreground="Red" VerticalAlignment="Top" Width="193" />
<TextBlock HorizontalAlignment="Left" Margin="16,255,0,0" TextWrapping="Wrap" Text="写入数据:" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled2}" HorizontalAlignment="Left" Margin="86,249,0,0" TextWrapping="Wrap" Text="{Binding WriteValue3}" VerticalAlignment="Top" Width="185" />
<Button IsEnabled="{Binding Enabled2}" Content="写多保持寄存器" Command="{Binding WriteCmd}" CommandParameter="4" HorizontalAlignment="Left" Margin="-10,308,0,0" VerticalAlignment="Top" Width="125" />
<TextBlock HorizontalAlignment="Left" Margin="128,314,0,0" TextWrapping="Wrap" Text="(ushort类型空格分开)" Foreground="Red" VerticalAlignment="Top" Width="193" />
<TextBlock HorizontalAlignment="Left" Margin="16,347,0,0" TextWrapping="Wrap" Text="写入数据:" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled2}" HorizontalAlignment="Left" Margin="86,341,0,0" TextWrapping="Wrap" Text="{Binding WriteValue4}" VerticalAlignment="Top" Width="185" />
</Grid>
</Border>
</Grid>
</UserControl>

View File

@@ -0,0 +1,13 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ;
public partial class Modbus调试1 : UserControl
{
public Modbus调试1()
{
InitializeComponent();
}
}

View File

@@ -0,0 +1,87 @@
<UserControl xmlns="https://github.com/avaloniaui"
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"
mc:Ignorable="d" d:DesignHeight="600" d:DesignWidth="715"
xmlns:vm ="clr-namespace:常用工具集.ViewModel._01PLC通信调试"
x:Class="常用工具集.Modbus调试2"
x:CompileBindings="True"
x:DataType="vm:Modbus调试2ViewModel">
<UserControl.DataContext>
<vm:Modbus调试2ViewModel />
</UserControl.DataContext>
<Grid>
<TextBlock HorizontalAlignment="Left" Margin="25,21,0,0" TextWrapping="Wrap" Text="IP地址:" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled1}" HorizontalAlignment="Left" Margin="75,15,0,0" TextWrapping="Wrap" Text="{Binding IpAddress}" VerticalAlignment="Top" Width="125" />
<TextBlock HorizontalAlignment="Left" Margin="225,21,0,0" TextWrapping="Wrap" Text="端口号:" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled1}" HorizontalAlignment="Left" Margin="275,15,0,0" TextWrapping="Wrap" Text="{Binding Port}" VerticalAlignment="Top" Width="86" />
<Button IsEnabled="{Binding Enabled1}" Content="连接" Command="{Binding ConnectCmd}" HorizontalAlignment="Left" Margin="465,15,0,0" VerticalAlignment="Top" Width="90" />
<Button IsEnabled="{Binding Enabled2}" Content="断开连接" Command="{Binding DisconnectCmd}" HorizontalAlignment="Left" Margin="560,15,0,0" VerticalAlignment="Top" Width="90" />
<Border Theme="{StaticResource CardBorder}" Width="680" Height="480" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,50,0,0">
<Grid>
<TextBlock HorizontalAlignment="Left" Margin="0,-20,0,0" TextWrapping="Wrap" Text="读写操作" VerticalAlignment="Top"/>
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Text="地址:" Margin="20,31,0,0" />
<TextBox IsEnabled="{Binding Enabled2}" HorizontalAlignment="Left" Margin="60,25,0,0" TextWrapping="Wrap" Text="{Binding Address}" VerticalAlignment="Top" Width="125" />
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Text="字符串长度:" Margin="10,271,0,0" />
<TextBox IsEnabled="{Binding Enabled2}" HorizontalAlignment="Left" Margin="90,265,0,0" TextWrapping="Wrap" Text="{Binding StringLength}" VerticalAlignment="Top" Width="115" />
<TextBlock HorizontalAlignment="Left" Margin="10,298,0,0" TextWrapping="Wrap" Text="注意:非地址长度,一个地址两个字符" Foreground="Red" VerticalAlignment="Top" Width="245" />
<!-- 读写int16 -->
<Button IsEnabled="{Binding Enabled2}" Content="读int16" Command="{Binding ReadCmd}" CommandParameter="INT16" HorizontalAlignment="Left" Margin="237,25,0,0" VerticalAlignment="Top" Width="90" />
<TextBox IsEnabled="{Binding Enabled2}" HorizontalAlignment="Left" Margin="335,25,0,0" TextWrapping="Wrap" Text="{Binding Int16Value}" VerticalAlignment="Top" Width="135" />
<Button IsEnabled="{Binding Enabled2}" Content="写int16" Command="{Binding WriteCmd}" CommandParameter="INT16" HorizontalAlignment="Left" Margin="475,25,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.582,0.67" Width="90" />
<!-- 读写float -->
<Button IsEnabled="{Binding Enabled2}" Content="读single" Command="{Binding ReadCmd}" CommandParameter="REAL" HorizontalAlignment="Left" Margin="237,70,0,0" VerticalAlignment="Top" Width="90" />
<TextBox IsEnabled="{Binding Enabled2}" Text="{Binding RealValue}" HorizontalAlignment="Left" Margin="335,70,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="135" />
<Button IsEnabled="{Binding Enabled2}" Content="写single" Command="{Binding WriteCmd}" CommandParameter="REAL" HorizontalAlignment="Left" Margin="475,70,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.582,0.67" Width="90" />
<!-- 读写int32 -->
<Button IsEnabled="{Binding Enabled2}" Content="读int32" Command="{Binding ReadCmd}" CommandParameter="INT32" HorizontalAlignment="Left" Margin="237,115,0,0" VerticalAlignment="Top" Width="90" />
<TextBox IsEnabled="{Binding Enabled2}" Text="{Binding Int32Value}" HorizontalAlignment="Left" Margin="335,115,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="135" />
<Button IsEnabled="{Binding Enabled2}" Content="写int32" Command="{Binding WriteCmd}" CommandParameter="INT32" HorizontalAlignment="Left" Margin="475,115,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.582,0.67" Width="90" />
<!-- 读写int64 -->
<Button IsEnabled="{Binding Enabled2}" Content="读int64" Command="{Binding ReadCmd}" CommandParameter="INT64" HorizontalAlignment="Left" Margin="237,160,0,0" VerticalAlignment="Top" Width="90" />
<TextBox IsEnabled="{Binding Enabled2}" Text="{Binding LongValue}" HorizontalAlignment="Left" Margin="335,160,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="135" />
<Button IsEnabled="{Binding Enabled2}" Content="写int64" Command="{Binding WriteCmd}" CommandParameter="INT64" HorizontalAlignment="Left" Margin="475,160,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.582,0.67" Width="90" />
<!-- 读写double -->
<Button IsEnabled="{Binding Enabled2}" Content="读double" Command="{Binding ReadCmd}" CommandParameter="DOUBLE" HorizontalAlignment="Left" Margin="237,205,0,0" VerticalAlignment="Top" Width="90" />
<TextBox IsEnabled="{Binding Enabled2}" Text="{Binding DoubleValue}" HorizontalAlignment="Left" Margin="335,205,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="135" />
<Button IsEnabled="{Binding Enabled2}" Content="写double" Command="{Binding WriteCmd}" CommandParameter="DOUBLE" HorizontalAlignment="Left" Margin="475,205,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.582,0.67" Width="90" />
<!-- 读写string -->
<Button IsEnabled="{Binding Enabled2}" Content="读string" Command="{Binding ReadCmd}" CommandParameter="STRING" HorizontalAlignment="Left" Margin="237,261,0,0" VerticalAlignment="Top" Width="80" />
<TextBox IsEnabled="{Binding Enabled2}" Text="{Binding StringValue}" HorizontalAlignment="Left" Margin="335,261,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="135" />
<Button IsEnabled="{Binding Enabled2}" Content="写string" Command="{Binding WriteCmd}" CommandParameter="STRING" HorizontalAlignment="Left" Margin="475,261,0,0" VerticalAlignment="Top" RenderTransformOrigin="0,0.634" Width="80" />
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Text="数据:" Margin="18,346,0,0" />
<TextBox Text="{Binding ReadedValue}" HorizontalAlignment="Left" Margin="58,340,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="180" />
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Text="信息:" Margin="18,389,0,0" />
<TextBox Text="{Binding Message}" HorizontalAlignment="Left" Margin="58,383,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="180" />
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Text="发送的数据:" Margin="260,346,0,0" />
<TextBox Text="{Binding SendedBytesValue}" HorizontalAlignment="Left" Margin="340,340,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="295"/>
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Text="接收的数据:" Margin="260,389,0,0" />
<TextBox Text="{Binding RecivedBytesValue}" HorizontalAlignment="Left" Margin="340,383,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="295" />
<TextBlock HorizontalAlignment="Left" Margin="560,31,0,0" TextWrapping="Wrap" Text="short一个地址" Foreground="Red" VerticalAlignment="Top" Width="85" />
<TextBlock HorizontalAlignment="Left" Margin="560,76,0,0" TextWrapping="Wrap" Text="float两个地址" Foreground="Red" VerticalAlignment="Top" Width="85" />
<TextBlock HorizontalAlignment="Left" Margin="560,121,0,0" TextWrapping="Wrap" Text="int两个地址" Foreground="Red" VerticalAlignment="Top" Width="85" />
<TextBlock HorizontalAlignment="Left" Margin="560,166,0,0" TextWrapping="Wrap" Text="long四个地址" Foreground="Red" VerticalAlignment="Top" Width="85" />
<TextBlock HorizontalAlignment="Left" Margin="560,211,0,0" TextWrapping="Wrap" Text="long四个地址" Foreground="Red" VerticalAlignment="Top" Width="85" />
</Grid>
</Border>
</Grid>
</UserControl>

View File

@@ -0,0 +1,13 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ;
public partial class Modbus调试2 : UserControl
{
public Modbus调试2()
{
InitializeComponent();
}
}

View File

@@ -0,0 +1,70 @@
<UserControl xmlns="https://github.com/avaloniaui"
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"
mc:Ignorable="d" d:DesignHeight="600" d:DesignWidth="725"
xmlns:vm ="clr-namespace:常用工具集.ViewModel._01PLC通信调试"
x:Class="常用工具集.OPCUA调试"
x:CompileBindings="True"
x:DataType="vm:OPCUA调试ViewModel">
<UserControl.DataContext>
<vm:OPCUA调试ViewModel />
</UserControl.DataContext>
<Grid>
<!--<Button Content="打开Browser" Command="{Binding OpenBrowerCmd}" HorizontalAlignment="Left" Margin="26,10,0,0" VerticalAlignment="Top" Width="100" />-->
<TextBlock HorizontalAlignment="Left" Margin="26,64,0,0" TextWrapping="Wrap" Text="OPC UA服务器:" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled1}" Text="{Binding OpcServer}" HorizontalAlignment="Left" Margin="126,58,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="389" />
<Button IsEnabled="{Binding Enabled1}" Content="连接" Command="{Binding ConnectCmd}" HorizontalAlignment="Left" Margin="526,60,0,0" VerticalAlignment="Top" Width="85" />
<Button IsEnabled="{Binding Enabled2}" Content="断开连接" Command="{Binding DisconnectCmd}" HorizontalAlignment="Left" Margin="617,60,0,0" VerticalAlignment="Top" Width="85" />
<TextBlock HorizontalAlignment="Left" Margin="60,102,0,0" TextWrapping="Wrap" Text="节点标识:" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled2}" Text="{Binding Node}" VerticalContentAlignment="Top" HorizontalContentAlignment="Left" Height="74" HorizontalAlignment="Left" Margin="140,96,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="374" />
<Button IsEnabled="{Binding Enabled2}" Content="订阅节点" Command="{Binding SubscribeCmd}" HorizontalAlignment="Left" Margin="525,119,0,0" VerticalAlignment="Top" Width="85" />
<TextBlock HorizontalAlignment="Left" Margin="76,180,0,0" TextWrapping="Wrap" Text="输入样例 ns=2,s=通道名.设备名.变量名详细的节点标识请打开Browser" Foreground="Red" VerticalAlignment="Top" Width="460" />
<TextBlock HorizontalAlignment="Left" Margin="60,226,0,0" TextWrapping="Wrap" Text="读取结果:" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled2}" Text="{Binding Result}" HorizontalAlignment="Left" Margin="140,220,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="95" />
<Button IsEnabled="{Binding Enabled2}" Content="读取" Command="{Binding ReadValueCmd}" HorizontalAlignment="Left" Margin="251,221,0,0" VerticalAlignment="Top" Width="76" />
<TextBlock HorizontalAlignment="Left" Margin="342,226,0,0" TextWrapping="Wrap" Text="写入值:" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled2}" Text="{Binding WriteValue}" HorizontalAlignment="Left" Margin="412,220,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="104" />
<Button IsEnabled="{Binding Enabled2}" Content="写入bool" Command="{Binding WriteValueCmd}" CommandParameter="bool" HorizontalAlignment="Left" Margin="510,191,0,0" VerticalAlignment="Top" Width="110" />
<Button IsEnabled="{Binding Enabled2}" Content="写入int16" Command="{Binding WriteValueCmd}" CommandParameter="int16" HorizontalAlignment="Left" Margin="510,224,0,0" VerticalAlignment="Top" Width="110" />
<Button IsEnabled="{Binding Enabled2}" Content="写入uint16" Command="{Binding WriteValueCmd}" CommandParameter="uint16" HorizontalAlignment="Left" Margin="510,257,0,0" VerticalAlignment="Top" Width="110" />
<Button IsEnabled="{Binding Enabled2}" Content="写入int32" Command="{Binding WriteValueCmd}" CommandParameter="int32" HorizontalAlignment="Left" Margin="510,290,0,0" VerticalAlignment="Top" Width="110" />
<Button IsEnabled="{Binding Enabled2}" Content="写入int64" Command="{Binding WriteValueCmd}" CommandParameter="int64" HorizontalAlignment="Left" Margin="625,191,0,0" VerticalAlignment="Top" Width="110" />
<Button IsEnabled="{Binding Enabled2}" Content="写入float" Command="{Binding WriteValueCmd}" CommandParameter="float" HorizontalAlignment="Left" Margin="625,224,0,0" VerticalAlignment="Top" Width="110" />
<Button IsEnabled="{Binding Enabled2}" Content="写入double" Command="{Binding WriteValueCmd}" CommandParameter="double" HorizontalAlignment="Left" Margin="625,257,0,0" VerticalAlignment="Top" Width="110" />
<Button IsEnabled="{Binding Enabled2}" Content="取消订阅" Command="{Binding CancelSubscribeCmd}" HorizontalAlignment="Left" Margin="521,342,0,0" VerticalAlignment="Top" Width="90" />
<TextBlock HorizontalAlignment="Left" Margin="47,496,0,0" TextWrapping="Wrap" Text="选中节点值:" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled2}" Text="{Binding SelecedValue}" HorizontalAlignment="Left" Margin="147,490,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="190" />
<DataGrid IsEnabled="{Binding Enabled2}" Margin="62,266,0,0" HeadersVisibility="All" VerticalAlignment="Top" HorizontalAlignment="Left"
ItemsSource="{Binding NodeList}" Height="209" Width="432"
SelectedIndex="{Binding SelectedIndex}"
IsReadOnly="True"
IsHitTestVisible="False"
Background="White" BorderThickness="1"
RowHeight="30" AutoGenerateColumns="False"
SelectionMode="Single">
<DataGrid.Columns>
<DataGridTextColumn
Width="*"
x:DataType="vm:MyNode"
Binding="{Binding NodeName}"
Header="已订阅节点" />
</DataGrid.Columns>
</DataGrid>
</Grid>
</UserControl>

View File

@@ -0,0 +1,13 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ;
public partial class OPCUA调试 : UserControl
{
public OPCUA调试()
{
InitializeComponent();
}
}

View File

@@ -0,0 +1,84 @@
<UserControl xmlns="https://github.com/avaloniaui"
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"
mc:Ignorable="d" d:DesignHeight="680" d:DesignWidth="815"
xmlns:vm ="clr-namespace:常用工具集.ViewModel._01PLC通信调试"
xmlns:i="clr-namespace:Avalonia.Xaml.Interactivity;assembly=Avalonia.Xaml.Interactivity"
x:Class="常用工具集.Socket调试"
x:CompileBindings="True"
x:DataType="vm:Socket调试ViewModel">
<!-- xmlns:b="clr-namespace:Avalonia.Xaml.Behaviors;assembly=Avalonia.Xaml.Behaviors" -->
<UserControl.DataContext>
<vm:Socket调试ViewModel />
</UserControl.DataContext>
<Grid>
<Border Theme="{StaticResource CardBorder}" HorizontalAlignment="Left" VerticalAlignment="Top" Height="324" Width="225" Margin="10,10,0,0">
<Grid>
<TextBlock HorizontalAlignment="Left" Margin="0,-20,0,0" TextWrapping="Wrap" Text="网络设置" VerticalAlignment="Top"/>
<TextBlock HorizontalAlignment="Left" Margin="5,16,0,0" TextWrapping="Wrap" Text="IP地址" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled1}" HorizontalAlignment="Left" Margin="50,10,0,0" TextWrapping="Wrap" Text="{Binding IpAddress}" VerticalAlignment="Top" Width="140" />
<TextBlock HorizontalAlignment="Left" Margin="15,63,0,0" TextWrapping="Wrap" Text="端口" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled1}" HorizontalAlignment="Left" Margin="50,57,0,0" TextWrapping="Wrap" Text="{Binding Port}" VerticalAlignment="Top" Width="140" />
<TextBlock HorizontalAlignment="Left" Margin="15,96,0,0" TextWrapping="Wrap" Text="超时" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled1}" HorizontalAlignment="Left" Margin="50,90,0,0" TextWrapping="Wrap" Text="{Binding Timeout}" VerticalAlignment="Top" Width="140" />
<Button Content="{Binding ButtonText}" Command="{Binding OpenSerialCmd}" Width="75" />
</Grid>
</Border>
<Border Theme="{StaticResource CardBorder}" HorizontalAlignment="Left" VerticalAlignment="Top" Height="70" Width="225" Margin="10,350,0,0">
<Grid>
<TextBlock HorizontalAlignment="Left" Margin="0,-20,0,0" TextWrapping="Wrap" Text="接收设置" VerticalAlignment="Top"/>
<RadioButton Height="20" Content="ASCII" IsChecked="{Binding ReciveASCChecked}" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top"/>
<RadioButton Height="20" Content="HEX" IsChecked="{Binding ReciveHexChecked}" HorizontalAlignment="Left" Margin="97,10,0,0" VerticalAlignment="Top"/>
</Grid>
</Border>
<Border Theme="{StaticResource CardBorder}" HorizontalAlignment="Left" VerticalAlignment="Top" Height="230" Width="225" Margin="10,425,0,0">
<Grid>
<TextBlock HorizontalAlignment="Left" Margin="0,-20,0,0" TextWrapping="Wrap" Text="发送设置" VerticalAlignment="Top"/>
<RadioButton Height="20" Content="ASCII" IsChecked="{Binding SendASCChecked}" HorizontalAlignment="Left" Margin="0,10,0,0" VerticalAlignment="Top"/>
<RadioButton Height="20" Content="HEX" IsChecked="{Binding SendHexChecked}" HorizontalAlignment="Left" Margin="87,10,0,0" VerticalAlignment="Top"/>
<CheckBox IsChecked="{Binding ConvertChecked}" Content="自动解析转义符" Margin="0,43,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Height="25" RenderTransformOrigin="0.24,-0.2" />
<TextBlock HorizontalAlignment="Left" FontSize="9" Margin="120,35,0,0" TextWrapping="Wrap" Text="\r回车符 0x0D" Foreground="Red" VerticalAlignment="Top" Width="105" />
<TextBlock HorizontalAlignment="Left" FontSize="9" Margin="120,51,0,0" TextWrapping="Wrap" Text="\n换行符 0x0A" Foreground="Red" VerticalAlignment="Top" Width="105" />
<TextBlock HorizontalAlignment="Left" FontSize="9" Margin="120,67,0,0" TextWrapping="Wrap" Text="\t水平制表符 0x09" Foreground="Red" VerticalAlignment="Top" Width="105" />
<TextBlock HorizontalAlignment="Left" FontSize="9" Margin="120,81,0,0" TextWrapping="Wrap" Text="\v垂直制表符 0x0B" Foreground="Red" VerticalAlignment="Top" Width="105" />
<TextBlock HorizontalAlignment="Left" FontSize="9" Margin="120,98,0,0" TextWrapping="Wrap" Text="\a响铃(BEL) 0x07" Foreground="Red" VerticalAlignment="Top" Width="105" />
<TextBlock HorizontalAlignment="Left" FontSize="9" Margin="120,114,0,0" TextWrapping="Wrap" Text="\b退格符(BS) 0x08" Foreground="Red" VerticalAlignment="Top" Width="105" />
<TextBlock HorizontalAlignment="Left" FontSize="9" Margin="120,128,0,0" TextWrapping="Wrap" Text="\f换页符(FF) 0x0C" Foreground="Red" VerticalAlignment="Top" Width="105" />
<CheckBox IsChecked="{Binding CycleChecked}" Content="循环发送" Margin="0,115,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Height="25" RenderTransformOrigin="0.24,-0.2" Width="81" />
<TextBlock HorizontalAlignment="Left" Margin="10,151,0,0" TextWrapping="Wrap" Text="循环周期" VerticalAlignment="Top"/>
<TextBox HorizontalAlignment="Left" Margin="90,145,0,0" TextWrapping="Wrap" Text="{Binding CycleTime}" VerticalAlignment="Top" Width="53" />
<TextBlock HorizontalAlignment="Left" Margin="148,151,0,0" TextWrapping="Wrap" Text="ms" VerticalAlignment="Top" Width="24" />
</Grid>
</Border>
<Border Theme="{StaticResource CardBorder}" HorizontalAlignment="Left" VerticalAlignment="Top" Height="374" Width="535" Margin="250,10,0,0">
<Grid>
<TextBlock HorizontalAlignment="Left" Margin="0,-20,0,0" TextWrapping="Wrap" Text="数据日志" VerticalAlignment="Top"/>
<TextBox x:Name="TBInfo" TextWrapping="Wrap" ScrollViewer.VerticalScrollBarVisibility="Auto" Text="{Binding Message}" Margin="10,0,10,0" HorizontalContentAlignment="Left" VerticalContentAlignment="Top" Height="330">
<i:Interaction.Behaviors>
<DataTriggerBehavior Binding="{Binding Text.Length, ElementName=TBInfo}" ComparisonCondition="NotEqual" Value="0">
<ChangePropertyAction TargetObject="TBInfo" PropertyName="CaretIndex" Value="{Binding ElementName=TBInfo, Path=Text.Length}"/>
<CallMethodAction MethodName="ScrollToEnd" />
</DataTriggerBehavior>
</i:Interaction.Behaviors>
</TextBox>
</Grid>
</Border>
<Border Theme="{StaticResource CardBorder}" HorizontalAlignment="Left" VerticalAlignment="Top" Height="210" Width="535" Margin="250,425,0,0">
<Grid>
<TextBlock HorizontalAlignment="Left" Margin="0,-20,0,0" TextWrapping="Wrap" Text="数据发送" VerticalAlignment="Top"/>
<TextBox TextWrapping="Wrap" Height="170" ScrollViewer.VerticalScrollBarVisibility="Auto" Text="{Binding SendContent}" Margin="10,15,75,10" HorizontalContentAlignment="Left" VerticalContentAlignment="Top" />
<Button Content="发送" IsEnabled="{Binding Enabled2}" Command="{Binding SendCmd}" Margin="430,57,0,0" VerticalAlignment="Top" Width="60" HorizontalAlignment="Left" Height="78" />
</Grid>
</Border>
<Button Content="清除👆" Command="{Binding ClearReciveCmd}" Margin="420,389,0,0" VerticalAlignment="Top" Width="75" HorizontalAlignment="Left" />
<Button Content="清除👇" Command="{Binding ClearSendCmd}" Margin="518,389,0,0" VerticalAlignment="Top" Width="74" HorizontalAlignment="Left" />
</Grid>
</UserControl>

View File

@@ -0,0 +1,13 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ;
public partial class Socket调试 : UserControl
{
public Socket调试()
{
InitializeComponent();
}
}

View File

@@ -0,0 +1,85 @@
<UserControl xmlns="https://github.com/avaloniaui"
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"
mc:Ignorable="d" d:DesignHeight="600" d:DesignWidth="715"
xmlns:vm ="clr-namespace:常用工具集.ViewModel._01PLC通信调试"
x:Class="常用工具集.三菱MC协议l"
x:CompileBindings="True"
x:DataType="vm:三菱MC协议ViewModel">
<UserControl.DataContext>
<vm:三菱MC协议ViewModel />
</UserControl.DataContext>
<Grid>
<TextBlock HorizontalAlignment="Left" Margin="25,21,0,0" TextWrapping="Wrap" Text="IP地址:" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled1}" HorizontalAlignment="Left" Margin="75,15,0,0" TextWrapping="Wrap" Text="{Binding IpAddress}" VerticalAlignment="Top" Width="125" />
<TextBlock HorizontalAlignment="Left" Margin="225,21,0,0" TextWrapping="Wrap" Text="端口号:" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled1}" HorizontalAlignment="Left" Margin="275,15,0,0" TextWrapping="Wrap" Text="{Binding Port}" VerticalAlignment="Top" Width="86" />
<TextBlock HorizontalAlignment="Left" Margin="358,21,0,0" TextWrapping="Wrap" Text="MC帧:" VerticalAlignment="Top"/>
<ComboBox IsEnabled="{Binding Enabled1}" HorizontalAlignment="Left" VerticalAlignment="Top" SelectedIndex="{Binding MCIndex}" ItemsSource="{Binding MCList}" Margin="408,15,0,0" Width="84" />
<Button IsEnabled="{Binding Enabled1}" Content="连接" Command="{Binding ConnectCmd}" HorizontalAlignment="Left" Margin="530,14,0,0" VerticalAlignment="Top" Width="90" />
<Button IsEnabled="{Binding Enabled2}" Content="断开连接" Command="{Binding DisconnectCmd}" HorizontalAlignment="Left" Margin="625,14,0,0" VerticalAlignment="Top" Width="90" />
<Border Theme="{StaticResource CardBorder}" Width="680" Height="480" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,50,0,0">
<Grid>
<TextBlock HorizontalAlignment="Left" Margin="0,-20,0,0" TextWrapping="Wrap" Text="读写操作" VerticalAlignment="Top"/>
<TextBlock HorizontalAlignment="Left" Margin="80,43,0,0" TextWrapping="Wrap" Text="地址:" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled2}" HorizontalAlignment="Left" Margin="120,35,0,0" TextWrapping="Wrap" Text="{Binding Address}" VerticalAlignment="Top" Width="125"/>
<TextBlock HorizontalAlignment="Left" Margin="40,88,0,0" TextWrapping="Wrap" Text="BOOL类型M139" Foreground="Red" VerticalAlignment="Top" Width="135" />
<TextBlock HorizontalAlignment="Left" Margin="40,128,0,0" TextWrapping="Wrap" Text="REAL类型D100" Foreground="Red" VerticalAlignment="Top" Width="135" />
<TextBlock HorizontalAlignment="Left" Margin="40,178,0,0" TextWrapping="Wrap" Text="INT16类型D100" Foreground="Red" VerticalAlignment="Top" Width="135" />
<TextBlock HorizontalAlignment="Left" Margin="40,0,0,0" TextWrapping="Wrap" Text="String类型D100" Foreground="Red" VerticalAlignment="Center" Width="135" />
<TextBlock HorizontalAlignment="Left" Margin="40,288,0,0" TextWrapping="Wrap" Text="字符串长度:" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled2}" HorizontalAlignment="Left" Margin="120,280,0,0" TextWrapping="Wrap" Text="{Binding StringLength}" VerticalAlignment="Top" Width="125" />
<!-- 读写Bool -->
<Button IsEnabled="{Binding Enabled2}" Content="读bool" Command="{Binding ReadCmd}" CommandParameter="BOOL" HorizontalAlignment="Left" Margin="252,69,0,0" VerticalAlignment="Top" Width="110" />
<TextBox IsEnabled="{Binding Enabled2}" HorizontalAlignment="Left" Margin="400,69,0,0" TextWrapping="Wrap" Text="{Binding BoolValue}" VerticalAlignment="Top" Width="135" />
<Button IsEnabled="{Binding Enabled2}" Content="写bool" Command="{Binding WriteCmd}" CommandParameter="BOOL" HorizontalAlignment="Left" Margin="550,69,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.582,0.67" Width="110" />
<!-- 读写INT16 -->
<Button IsEnabled="{Binding Enabled2}" Content="读int16" Command="{Binding ReadCmd}" CommandParameter="INT16" HorizontalAlignment="Left" Margin="252,115,0,0" VerticalAlignment="Top" Width="110" />
<TextBox IsEnabled="{Binding Enabled2}" HorizontalAlignment="Left" Margin="400,115,0,0" TextWrapping="Wrap" Text="{Binding Int16Value}" VerticalAlignment="Top" Width="135" />
<Button IsEnabled="{Binding Enabled2}" Content="写int16" Command="{Binding WriteCmd}" CommandParameter="INT16" HorizontalAlignment="Left" Margin="550,115,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.582,0.67" Width="110" />
<!-- 读写INT32 -->
<Button IsEnabled="{Binding Enabled2}" Content="读int32" Command="{Binding ReadCmd}" CommandParameter="INT32" HorizontalAlignment="Left" Margin="252,167,0,0" VerticalAlignment="Top" Width="110" />
<TextBox IsEnabled="{Binding Enabled2}" Text="{Binding Int32Value}" HorizontalAlignment="Left" Margin="400,167,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="135" />
<Button IsEnabled="{Binding Enabled2}" Content="写int32" Command="{Binding WriteCmd}" CommandParameter="INT32" HorizontalAlignment="Left" Margin="550,167,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.582,0.67" Width="110" />
<!-- 读写REAL -->
<Button IsEnabled="{Binding Enabled2}" Content="读real" Command="{Binding ReadCmd}" CommandParameter="REAL" HorizontalAlignment="Left" Margin="252,225,0,0" VerticalAlignment="Top" Width="110" />
<TextBox IsEnabled="{Binding Enabled2}" Text="{Binding RealValue}" HorizontalAlignment="Left" Margin="400,225,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="135" />
<Button IsEnabled="{Binding Enabled2}" Content="写real" Command="{Binding WriteCmd}" CommandParameter="REAL" HorizontalAlignment="Left" Margin="550,225,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.582,0.67" Width="110" />
<!-- 读写STRING -->
<Button IsEnabled="{Binding Enabled2}" Content="读string" Command="{Binding ReadCmd}" CommandParameter="STRING" HorizontalAlignment="Left" Margin="252,280,0,0" VerticalAlignment="Top" Width="110" />
<TextBox IsEnabled="{Binding Enabled2}" Text="{Binding StringValue}" HorizontalAlignment="Left" Margin="400,280,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="135" />
<Button IsEnabled="{Binding Enabled2}" Content="写string" Command="{Binding WriteCmd}" CommandParameter="STRING" HorizontalAlignment="Left" Margin="550,280,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.582,0.67" Width="110" />
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Text="数据:" Margin="18,346,0,0" />
<TextBox Text="{Binding ReadedValue}" HorizontalAlignment="Left" Margin="58,340,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="180" />
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Text="信息:" Margin="18,389,0,0" />
<TextBox Text="{Binding Message}" HorizontalAlignment="Left" Margin="58,383,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="180" />
<Border Theme="{StaticResource CardBorder}" Margin="252,331,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Width="400" Height="120">
<Grid>
<TextBlock HorizontalAlignment="Left" Margin="0,-20,0,0" TextWrapping="Wrap" Text="字节操作" VerticalAlignment="Top"/>
<TextBlock HorizontalAlignment="Left" Margin="0,16,0,0" TextWrapping="Wrap" Text="地址:" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled2}" HorizontalAlignment="Left" Margin="40,10,0,0" TextWrapping="Wrap" Text="{Binding Address2}" VerticalAlignment="Top" Width="87" />
<TextBlock HorizontalAlignment="Left" Margin="140,16,0,0" TextWrapping="Wrap" Text="字节数:" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled2}" HorizontalAlignment="Left" Margin="190,10,0,0" TextWrapping="Wrap" Text="{Binding BytesCount}" VerticalAlignment="Top" Width="100" />
<Button IsEnabled="{Binding Enabled2}" Content="读字节" Command="{Binding ReadCmd}" CommandParameter="Bytes" HorizontalAlignment="Left" Margin="105,47,0,0" VerticalAlignment="Top" Width="90" />
</Grid>
</Border>
</Grid>
</Border>
</Grid>
</UserControl>

View File

@@ -0,0 +1,13 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ;
public partial class MC协议l : UserControl
{
public MC协议l()
{
InitializeComponent();
}
}

View File

@@ -0,0 +1,105 @@
<UserControl xmlns="https://github.com/avaloniaui"
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"
mc:Ignorable="d" d:DesignHeight="680" d:DesignWidth="815"
xmlns:vm ="clr-namespace:常用工具集.ViewModel._01PLC通信调试"
xmlns:i="clr-namespace:Avalonia.Xaml.Interactivity;assembly=Avalonia.Xaml.Interactivity"
x:Class="常用工具集.串口调试工具"
x:CompileBindings="True"
x:DataType="vm:串口调试工具ViewModel">
<!-- xmlns:b="clr-namespace:Avalonia.Xaml.Behaviors;assembly=Avalonia.Xaml.Behaviors" -->
<UserControl.DataContext>
<vm:串口调试工具ViewModel />
</UserControl.DataContext>
<Grid>
<Border Theme="{StaticResource CardBorder}" HorizontalAlignment="Left" VerticalAlignment="Top" Height="324" Width="225" Margin="10,10,0,0">
<Grid>
<TextBlock HorizontalAlignment="Left" Margin="0,-20,0,0" TextWrapping="Wrap" Text="串口设置" VerticalAlignment="Top"/>
<TextBlock HorizontalAlignment="Left" Margin="0,10,0,0" TextWrapping="Wrap" Text="串口" VerticalAlignment="Top"/>
<ComboBox IsEnabled="{Binding Enabled1}" HorizontalAlignment="Left" VerticalAlignment="Top" SelectedIndex="{Binding SerialIndex}" ItemsSource="{Binding SerialList}" Margin="35,4,0,0" Width="160" />
<TextBlock HorizontalAlignment="Left" Margin="-10,44,0,0" TextWrapping="Wrap" Text="波特率" VerticalAlignment="Top"/>
<ComboBox HorizontalAlignment="Left" IsEnabled="{Binding Enabled1}" VerticalAlignment="Top" SelectedIndex="{Binding BaudRateIndex}" ItemsSource="{Binding BaudRateList}" Margin="35,38,0,0" Width="160" />
<TextBlock HorizontalAlignment="Left" Margin="-10,76,0,0" TextWrapping="Wrap" Text="数据位" VerticalAlignment="Top"/>
<ComboBox HorizontalAlignment="Left" IsEnabled="{Binding Enabled1}" VerticalAlignment="Top" SelectedIndex="{Binding DataBitIndex}" ItemsSource="{Binding DataBitList}" Margin="35,70,0,0" Width="160" />
<TextBlock HorizontalAlignment="Left" Margin="-10,110,0,0" TextWrapping="Wrap" Text="停止位" VerticalAlignment="Top"/>
<ComboBox HorizontalAlignment="Left" IsEnabled="{Binding Enabled1}" VerticalAlignment="Top" SelectedIndex="{Binding StopBitIndex}" ItemsSource="{Binding StopBitList}" Margin="35,103,0,0" Width="160" />
<TextBlock HorizontalAlignment="Left" Margin="0,144,0,0" TextWrapping="Wrap" Text="校验" VerticalAlignment="Top"/>
<ComboBox HorizontalAlignment="Left" IsEnabled="{Binding Enabled1}" VerticalAlignment="Top" SelectedIndex="{Binding ParityIndex}" ItemsSource="{Binding ParityList}" Margin="35,138,0,0" Width="160" />
<TextBlock HorizontalAlignment="Left" Margin="0,178,0,0" TextWrapping="Wrap" Text="流控" VerticalAlignment="Top"/>
<ComboBox HorizontalAlignment="Left" IsEnabled="{Binding Enabled1}" VerticalAlignment="Top" SelectedIndex="{Binding FlowControlIndex}" ItemsSource="{Binding FlowControlList}" Margin="35,172,0,0" Width="160" />
<TextBlock HorizontalAlignment="Left" Margin="0,212,0,0" TextWrapping="Wrap" Text="超时" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled1}" HorizontalAlignment="Left" TextWrapping="Wrap" Text="{Binding Timeout}" VerticalAlignment="Top" Margin="35,206,0,0" Width="160"/>
<Button Content="{Binding ButtonText}" Command="{Binding OpenSerialCmd}" Margin="0,264,0,0" VerticalAlignment="Top" Width="75" />
<CheckBox IsChecked="{Binding RTSChecked}" Content="RTS" Margin="40,234,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Height="25" />
<CheckBox IsChecked="{Binding DTRChecked}" Content="DTR" Margin="96,234,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Height="25" />
</Grid>
</Border>
<Border Theme="{StaticResource CardBorder}" HorizontalAlignment="Left" VerticalAlignment="Top" Height="70" Width="225" Margin="10,350,0,0">
<Grid>
<TextBlock HorizontalAlignment="Left" Margin="0,-20,0,0" TextWrapping="Wrap" Text="接收设置" VerticalAlignment="Top"/>
<RadioButton Height="20" Content="ASCII" IsChecked="{Binding ReciveASCChecked}" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top"/>
<RadioButton Height="20" Content="HEX" IsChecked="{Binding ReciveHexChecked}" HorizontalAlignment="Left" Margin="97,10,0,0" VerticalAlignment="Top"/>
</Grid>
</Border>
<Border Theme="{StaticResource CardBorder}" HorizontalAlignment="Left" VerticalAlignment="Top" Height="230" Width="225" Margin="10,425,0,0">
<Grid>
<TextBlock HorizontalAlignment="Left" Margin="0,-20,0,0" TextWrapping="Wrap" Text="发送设置" VerticalAlignment="Top"/>
<RadioButton Height="20" Content="ASCII" IsChecked="{Binding SendASCChecked}" HorizontalAlignment="Left" Margin="0,10,0,0" VerticalAlignment="Top"/>
<RadioButton Height="20" Content="HEX" IsChecked="{Binding SendHexChecked}" HorizontalAlignment="Left" Margin="87,10,0,0" VerticalAlignment="Top"/>
<CheckBox IsChecked="{Binding ConvertChecked}" Content="自动解析转义符" Margin="0,43,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Height="25" RenderTransformOrigin="0.24,-0.2" />
<TextBlock HorizontalAlignment="Left" FontSize="9" Margin="120,35,0,0" TextWrapping="Wrap" Text="\r回车符 0x0D" Foreground="Red" VerticalAlignment="Top" Width="105" />
<TextBlock HorizontalAlignment="Left" FontSize="9" Margin="120,51,0,0" TextWrapping="Wrap" Text="\n换行符 0x0A" Foreground="Red" VerticalAlignment="Top" Width="105" />
<TextBlock HorizontalAlignment="Left" FontSize="9" Margin="120,67,0,0" TextWrapping="Wrap" Text="\t水平制表符 0x09" Foreground="Red" VerticalAlignment="Top" Width="105" />
<TextBlock HorizontalAlignment="Left" FontSize="9" Margin="120,81,0,0" TextWrapping="Wrap" Text="\v垂直制表符 0x0B" Foreground="Red" VerticalAlignment="Top" Width="105" />
<TextBlock HorizontalAlignment="Left" FontSize="9" Margin="120,98,0,0" TextWrapping="Wrap" Text="\a响铃(BEL) 0x07" Foreground="Red" VerticalAlignment="Top" Width="105" />
<TextBlock HorizontalAlignment="Left" FontSize="9" Margin="120,114,0,0" TextWrapping="Wrap" Text="\b退格符(BS) 0x08" Foreground="Red" VerticalAlignment="Top" Width="105" />
<TextBlock HorizontalAlignment="Left" FontSize="9" Margin="120,128,0,0" TextWrapping="Wrap" Text="\f换页符(FF) 0x0C" Foreground="Red" VerticalAlignment="Top" Width="105" />
<CheckBox IsChecked="{Binding CycleChecked}" Content="循环发送" Margin="0,115,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Height="25" RenderTransformOrigin="0.24,-0.2" Width="81" />
<TextBlock HorizontalAlignment="Left" Margin="10,151,0,0" TextWrapping="Wrap" Text="循环周期" VerticalAlignment="Top"/>
<TextBox HorizontalAlignment="Left" Margin="90,145,0,0" TextWrapping="Wrap" Text="{Binding CycleTime}" VerticalAlignment="Top" Width="53" />
<TextBlock HorizontalAlignment="Left" Margin="148,151,0,0" TextWrapping="Wrap" Text="ms" VerticalAlignment="Top" Width="24" />
</Grid>
</Border>
<Border Theme="{StaticResource CardBorder}" HorizontalAlignment="Left" VerticalAlignment="Top" Height="374" Width="535" Margin="250,10,0,0">
<Grid>
<TextBlock HorizontalAlignment="Left" Margin="0,-20,0,0" TextWrapping="Wrap" Text="数据日志" VerticalAlignment="Top"/>
<TextBox x:Name="TBInfo" TextWrapping="Wrap" ScrollViewer.VerticalScrollBarVisibility="Auto" Text="{Binding Message}" Margin="10,0,10,0" HorizontalContentAlignment="Left" VerticalContentAlignment="Top" Height="330">
<i:Interaction.Behaviors>
<DataTriggerBehavior Binding="{Binding Text.Length, ElementName=TBInfo}" ComparisonCondition="NotEqual" Value="0">
<ChangePropertyAction TargetObject="TBInfo" PropertyName="CaretIndex" Value="{Binding ElementName=TBInfo, Path=Text.Length}"/>
<CallMethodAction MethodName="ScrollToEnd" />
</DataTriggerBehavior>
</i:Interaction.Behaviors>
</TextBox>
</Grid>
</Border>
<Border Theme="{StaticResource CardBorder}" HorizontalAlignment="Left" VerticalAlignment="Top" Height="210" Width="535" Margin="250,425,0,0">
<Grid>
<TextBlock HorizontalAlignment="Left" Margin="0,-20,0,0" TextWrapping="Wrap" Text="数据发送" VerticalAlignment="Top"/>
<TextBox TextWrapping="Wrap" Height="170" ScrollViewer.VerticalScrollBarVisibility="Auto" Text="{Binding SendContent}" Margin="10,15,75,10" HorizontalContentAlignment="Left" VerticalContentAlignment="Top" />
<Button Content="发送" IsEnabled="{Binding Enabled2}" Command="{Binding SendCmd}" Margin="430,57,0,0" VerticalAlignment="Top" Width="60" HorizontalAlignment="Left" Height="78" />
</Grid>
</Border>
<Button Content="清除👆" Command="{Binding ClearReciveCmd}" Margin="420,389,0,0" VerticalAlignment="Top" Width="75" HorizontalAlignment="Left" />
<Button Content="清除👇" Command="{Binding ClearSendCmd}" Margin="518,389,0,0" VerticalAlignment="Top" Width="74" HorizontalAlignment="Left" />
</Grid>
</UserControl>

View File

@@ -0,0 +1,13 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ;
public partial class : UserControl
{
public ()
{
InitializeComponent();
}
}

View File

@@ -0,0 +1,56 @@
<UserControl xmlns="https://github.com/avaloniaui"
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"
mc:Ignorable="d" d:DesignHeight="550" d:DesignWidth="815"
xmlns:vm ="clr-namespace:常用工具集.ViewModel._01PLC通信调试"
x:Class="常用工具集.倍福ADS调试"
x:CompileBindings="True"
x:DataType="vm:倍福ADS调试ViewModel">
<UserControl.DataContext>
<vm:倍福ADS调试ViewModel />
</UserControl.DataContext>
<Grid>
<TextBlock HorizontalAlignment="Left" Margin="25,21,0,0" TextWrapping="Wrap" Text="AMSNETID:" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled1}" HorizontalAlignment="Left" Margin="105,15,0,0" TextWrapping="Wrap" Text="{Binding NetId}" VerticalAlignment="Top" Width="140" />
<TextBlock HorizontalAlignment="Left" Margin="259,21,0,0" TextWrapping="Wrap" Text="端口号:" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled1}" HorizontalAlignment="Left" Margin="309,15,0,0" TextWrapping="Wrap" Text="{Binding Port}" VerticalAlignment="Top" Width="86" />
<Button IsEnabled="{Binding Enabled1}" Content="连接" Command="{Binding ConnectCmd}" HorizontalAlignment="Left" Margin="465,15,0,0" VerticalAlignment="Top" Width="90" />
<Button IsEnabled="{Binding Enabled2}" Content="断开连接" Command="{Binding DisconnectCmd}" HorizontalAlignment="Left" Margin="560,15,0,0" VerticalAlignment="Top" Width="90" />
<TextBlock HorizontalAlignment="Left" Margin="20,82,0,0" TextWrapping="Wrap" Text="变量名:" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled2}" HorizontalAlignment="Left" Margin="70,82,0,0" TextWrapping="Wrap" Text="{Binding VarName}" VerticalAlignment="Top" Width="565" />
<Border Theme="{StaticResource CardBorder}" Width="310" Height="260" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="10,0,0,0">
<Grid>
<TextBlock HorizontalAlignment="Left" Margin="0,-20,0,0" TextWrapping="Wrap" Text="读取操作" VerticalAlignment="Top"/>
<Button IsEnabled="{Binding Enabled2}" Content="读取" Command="{Binding ReadCmd}" CommandParameter="BOOL" HorizontalAlignment="Left" Margin="120,30,0,0" VerticalAlignment="Top" Width="80" />
<TextBlock HorizontalAlignment="Left" Margin="7,86,0,0" TextWrapping="Wrap" Text="数据类型:" VerticalAlignment="Top"/>
<TextBlock HorizontalAlignment="Left" Margin="32,131,0,0" TextWrapping="Wrap" Text="数据:" VerticalAlignment="Top"/>
<TextBlock HorizontalAlignment="Left" Margin="32,182,0,0" TextWrapping="Wrap" Text="信息:" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled1}" HorizontalAlignment="Left" Margin="70,80,0,0" TextWrapping="Wrap" Text="{Binding DataType}" VerticalAlignment="Top" Width="180" />
<TextBox Text="{Binding ReadedValue}" HorizontalAlignment="Left" Margin="70,125,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="180" />
<TextBox Text="{Binding Message1}" HorizontalAlignment="Left" Margin="70,176,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="180" />
</Grid>
</Border>
<Border Theme="{StaticResource CardBorder}" Margin="335,145,205,145" >
<Grid>
<TextBlock HorizontalAlignment="Left" Margin="0,-20,0,0" TextWrapping="Wrap" Text="写入操作" VerticalAlignment="Top"/>
<TextBlock HorizontalAlignment="Left" Margin="7,29,0,0" TextWrapping="Wrap" Text="写入数据:" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled2}" HorizontalAlignment="Left" Margin="70,23,0,0" TextWrapping="Wrap" Text="{Binding BoolValue}" VerticalAlignment="Top" Width="180" />
<Button IsEnabled="{Binding Enabled2}" Content="写入" Command="{Binding WriteCmd}" CommandParameter="BOOL" Margin="87,70,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.582,0.67" Width="80" HorizontalAlignment="Left" />
<TextBlock HorizontalAlignment="Left" Margin="32,150,0,0" TextWrapping="Wrap" Text="信息:" VerticalAlignment="Top"/>
<TextBox Text="{Binding Message2}" HorizontalAlignment="Left" Margin="70,144,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="180" />
</Grid>
</Border>
</Grid>
</UserControl>

View File

@@ -0,0 +1,13 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ;
public partial class ADS调试 : UserControl
{
public ADS调试()
{
InitializeComponent();
}
}

View File

@@ -0,0 +1,81 @@
<UserControl xmlns="https://github.com/avaloniaui"
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"
mc:Ignorable="d" d:DesignHeight="600" d:DesignWidth="715"
xmlns:vm ="clr-namespace:常用工具集.ViewModel._01PLC通信调试"
x:Class="常用工具集.欧姆龙Fins调试"
x:CompileBindings="True"
x:DataType="vm:欧姆龙Fins调试ViewModel">
<UserControl.DataContext>
<vm:欧姆龙Fins调试ViewModel />
</UserControl.DataContext>
<Grid>
<TextBlock HorizontalAlignment="Left" Margin="25,21,0,0" TextWrapping="Wrap" Text="IP地址:" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled1}" HorizontalAlignment="Left" Margin="75,15,0,0" TextWrapping="Wrap" Text="{Binding IpAddress}" VerticalAlignment="Top" Width="125" />
<TextBlock HorizontalAlignment="Left" Margin="225,21,0,0" TextWrapping="Wrap" Text="端口号:" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled1}" HorizontalAlignment="Left" Margin="275,15,0,0" TextWrapping="Wrap" Text="{Binding Port}" VerticalAlignment="Top" Width="86" />
<Button IsEnabled="{Binding Enabled1}" Content="连接" Command="{Binding ConnectCmd}" HorizontalAlignment="Left" Margin="465,15,0,0" VerticalAlignment="Top" Width="90" />
<Button IsEnabled="{Binding Enabled2}" Content="断开连接" Command="{Binding DisconnectCmd}" HorizontalAlignment="Left" Margin="560,15,0,0" VerticalAlignment="Top" Width="90" />
<Border Theme="{StaticResource CardBorder}" Width="310" Height="450" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,50,0,0">
<Grid>
<TextBlock HorizontalAlignment="Left" Margin="0,-20,0,0" TextWrapping="Wrap" Text="读操作" VerticalAlignment="Top"/>
<TextBlock HorizontalAlignment="Left" Margin="45,16,0,0" TextWrapping="Wrap" Text="区域" VerticalAlignment="Top"/>
<ComboBox IsEnabled="{Binding Enabled2}" HorizontalAlignment="Left" VerticalAlignment="Top" SelectedIndex="{Binding ReadAreaIndex}" ItemsSource="{Binding AreaList}" Margin="80,10,0,0" Width="150" />
<TextBlock HorizontalAlignment="Left" Margin="16,52,0,0" TextWrapping="Wrap" Text="读取地址" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled2}" HorizontalAlignment="Left" Margin="80,46,0,0" TextWrapping="Wrap" Text="{Binding ReadAddress}" VerticalAlignment="Top" Width="150" />
<TextBlock HorizontalAlignment="Left" Margin="16,86,0,0" TextWrapping="Wrap" Text="读取数量" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled2}" HorizontalAlignment="Left" Margin="80,82,0,0" TextWrapping="Wrap" Text="{Binding ReadCount}" VerticalAlignment="Top" Width="150" />
<Button IsEnabled="{Binding Enabled2}" Content="读取" Command="{Binding ReadCmd}" CommandParameter="1" HorizontalAlignment="Left" Margin="8,122,0,0" VerticalAlignment="Top" Width="110" />
<Button IsEnabled="{Binding Enabled2}" Content="读取字符串" Command="{Binding ReadCmd}" CommandParameter="2" HorizontalAlignment="Left" Width="110" Margin="128,121,0,0" VerticalAlignment="Top" />
<Button IsEnabled="{Binding Enabled2}" Content="读取Float" Command="{Binding ReadCmd}" CommandParameter="3" HorizontalAlignment="Left" Width="110" Margin="8,170,0,0" VerticalAlignment="Top" />
<Button IsEnabled="{Binding Enabled2}" Content="读取Short" Command="{Binding ReadCmd}" CommandParameter="4" Width="110" Margin="128,170,0,0" VerticalAlignment="Top" HorizontalAlignment="Left" />
<TextBlock HorizontalAlignment="Left" Margin="16,237,0,0" TextWrapping="Wrap" Text="读取结果" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled2}" HorizontalAlignment="Left" Margin="80,231,0,0" TextWrapping="Wrap" Text="{Binding ReadResult}" VerticalAlignment="Top" Width="200" Height="182" />
</Grid>
</Border>
<Border Theme="{StaticResource CardBorder}" Width="338" Height="450" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="340,50,0,0">
<Grid>
<TextBlock HorizontalAlignment="Left" Margin="0,-20,0,0" TextWrapping="Wrap" Text="写操作" VerticalAlignment="Top"/>
<TextBlock HorizontalAlignment="Left" Margin="45,16,0,0" TextWrapping="Wrap" Text="区域" VerticalAlignment="Top"/>
<ComboBox IsEnabled="{Binding Enabled2}" HorizontalAlignment="Left" VerticalAlignment="Top" SelectedIndex="{Binding WriteAreaIndex}" ItemsSource="{Binding AreaList}" Margin="80,10,0,0" Width="150" />
<TextBlock HorizontalAlignment="Left" Margin="16,52,0,0" TextWrapping="Wrap" Text="写入地址" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled2}" HorizontalAlignment="Left" Margin="80,46,0,0" TextWrapping="Wrap" Text="{Binding WriteAddress}" VerticalAlignment="Top" Width="150" />
<TextBlock HorizontalAlignment="Left" Margin="20,86,0,0" TextWrapping="Wrap" Text="空格隔开10进制数位的话填0 1" Foreground="Red" VerticalAlignment="Top" />
<TextBlock HorizontalAlignment="Left" Margin="16,115,0,0" TextWrapping="Wrap" Text="写入数据" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled2}" HorizontalAlignment="Left" Margin="80,109,0,0" TextWrapping="Wrap" Text="{Binding WriteValue}" VerticalAlignment="Top" Width="150" />
<Button IsEnabled="{Binding Enabled2}" Content="写入" Command="{Binding WriteCmd}" CommandParameter="1" HorizontalAlignment="Left" Margin="10,159,0,0" VerticalAlignment="Top" Width="110" />
<Button IsEnabled="{Binding Enabled2}" Content="写入Float" Command="{Binding WriteCmd}" CommandParameter="2" HorizontalAlignment="Left" Margin="12,196,0,0" VerticalAlignment="Top" Width="110" />
<Button IsEnabled="{Binding Enabled2}" Content="写入Short" Command="{Binding WriteCmd}" CommandParameter="3" HorizontalAlignment="Left" Margin="12,239,0,0" VerticalAlignment="Top" Width="110" />
<Button IsEnabled="{Binding Enabled2}" Content="写入字符串" Command="{Binding WriteCmd}" CommandParameter="4" HorizontalAlignment="Left" Margin="12,288,0,0" VerticalAlignment="Top" Width="110" />
<TextBlock HorizontalAlignment="Left" Margin="144,294,0,0" TextWrapping="Wrap" Text="字符串长度" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled2}" HorizontalAlignment="Left" Margin="224,288,0,0" TextWrapping="Wrap" Text="{Binding StrLength}" VerticalAlignment="Top" Width="80" />
</Grid>
</Border>
</Grid>
</UserControl>

View File

@@ -0,0 +1,13 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ;
public partial class Fins调试 : UserControl
{
public Fins调试()
{
InitializeComponent();
}
}

View File

@@ -0,0 +1,98 @@
<UserControl xmlns="https://github.com/avaloniaui"
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"
mc:Ignorable="d" d:DesignHeight="600" d:DesignWidth="715"
xmlns:vm ="clr-namespace:常用工具集.ViewModel._01PLC通信调试"
x:Class="常用工具集.西门子PLC调试"
x:CompileBindings="True"
x:DataType="vm:西门子PLC调试ViewModel">
<UserControl.DataContext>
<vm:西门子PLC调试ViewModel />
</UserControl.DataContext>
<Grid>
<TextBlock HorizontalAlignment="Left" Margin="0,21,0,0" TextWrapping="Wrap" Text="IP地址:" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled1}" HorizontalAlignment="Left" Margin="50,15,0,0" TextWrapping="Wrap" Text="{Binding IpAddress}" VerticalAlignment="Top" Width="120" />
<TextBlock HorizontalAlignment="Left" Margin="175,21,0,0" TextWrapping="Wrap" Text="PLC类型:" VerticalAlignment="Top"/>
<ComboBox IsEnabled="{Binding Enabled1}" SelectedIndex="{Binding PlcTypeIndex}" ItemsSource="{Binding PlcTypeList}" HorizontalAlignment="Left" Margin="240,15,0,0" VerticalAlignment="Top" Width="100" />
<TextBlock HorizontalAlignment="Left" Margin="350,21,0,0" TextWrapping="Wrap" Text="R:" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled1}" HorizontalAlignment="Left" Margin="370,15,0,0" TextWrapping="Wrap" Text="{Binding R}" VerticalAlignment="Top" Width="30" />
<TextBlock HorizontalAlignment="Left" Margin="410,21,0,0" TextWrapping="Wrap" Text="S:" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled1}" HorizontalAlignment="Left" Margin="430,15,0,0" TextWrapping="Wrap" Text="{Binding S}" VerticalAlignment="Top" Width="30" />
<Button IsEnabled="{Binding Enabled1}" Content="连接" Command="{Binding ConnectCmd}" HorizontalAlignment="Left" Margin="465,15,0,0" VerticalAlignment="Top" Width="90" />
<Button IsEnabled="{Binding Enabled2}" Content="断开连接" Command="{Binding DisconnectCmd}" HorizontalAlignment="Left" Margin="560,15,0,0" VerticalAlignment="Top" Width="90" />
<Border Width="680" Height="480" HorizontalAlignment="Left" VerticalAlignment="Top" Theme="{StaticResource CardBorder}" Margin="10,50,0,0">
<Grid>
<TextBlock HorizontalAlignment="Left" Margin="0,-20,0,0" TextWrapping="Wrap" Text="读写操作" VerticalAlignment="Top"/>
<TextBlock HorizontalAlignment="Left" Margin="32,29,0,0" TextWrapping="Wrap" Text="地址:" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled2}" HorizontalAlignment="Left" Margin="72,23,0,0" TextWrapping="Wrap" Text="{Binding Address}" VerticalAlignment="Top" />
<TextBlock HorizontalAlignment="Left" Margin="40,88,0,0" TextWrapping="Wrap" Text="BOOL类型DB44.DBX0.1" Foreground="Red" VerticalAlignment="Top" />
<TextBlock HorizontalAlignment="Left" Margin="40,128,0,0" TextWrapping="Wrap" Text="REAL类型DB44.DBD45" Foreground="Red" VerticalAlignment="Top" />
<TextBlock HorizontalAlignment="Left" Margin="40,178,0,0" TextWrapping="Wrap" Text="INT16类型DB44,DBW40" Foreground="Red" VerticalAlignment="Top" />
<TextBlock HorizontalAlignment="Left" Margin="40,0,0,0" TextWrapping="Wrap" Text="String类型DB44.DBX40.0" Foreground="Red" VerticalAlignment="Center" />
<TextBlock HorizontalAlignment="Left" Margin="0,286,0,0" TextWrapping="Wrap" Text="字符串长度:" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled2}" HorizontalAlignment="Left" Margin="80,280,0,0" TextWrapping="Wrap" Text="{Binding StringLength}" VerticalAlignment="Top" Width="125" />
<!-- 读写BOOL -->
<Button IsEnabled="{Binding Enabled2}" Content="读bool" Command="{Binding ReadCmd}" CommandParameter="BOOL" HorizontalAlignment="Left" Margin="252,69,0,0" VerticalAlignment="Top" Width="110" />
<TextBox IsEnabled="{Binding Enabled2}" HorizontalAlignment="Left" Margin="382,69,0,0" TextWrapping="Wrap" Text="{Binding BoolValue}" VerticalAlignment="Top" Width="135" />
<Button IsEnabled="{Binding Enabled2}" Content="写bool" Command="{Binding WriteCmd}" CommandParameter="BOOL" HorizontalAlignment="Left" Margin="532,69,0,0" VerticalAlignment="Top" Width="110" />
<!-- 读写INT16 -->
<Button IsEnabled="{Binding Enabled2}" Content="读int16" Command="{Binding ReadCmd}" CommandParameter="INT16" HorizontalAlignment="Left" Margin="252,111,0,0" VerticalAlignment="Top" Width="110" />
<TextBox IsEnabled="{Binding Enabled2}" HorizontalAlignment="Left" Margin="382,111,0,0" TextWrapping="Wrap" Text="{Binding Int16Value}" VerticalAlignment="Top" Width="135" />
<Button IsEnabled="{Binding Enabled2}" Content="写int16" Command="{Binding WriteCmd}" CommandParameter="INT16" HorizontalAlignment="Left" Margin="532,111,0,0" VerticalAlignment="Top" Width="110" />
<!-- 读写INT32 -->
<Button IsEnabled="{Binding Enabled2}" Content="读int32" Command="{Binding ReadCmd}" CommandParameter="INT32" HorizontalAlignment="Left" Margin="252,156,0,0" VerticalAlignment="Top" Width="110" />
<TextBox IsEnabled="{Binding Enabled2}" Text="{Binding Int32Value}" HorizontalAlignment="Left" Margin="382,156,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="135" />
<Button IsEnabled="{Binding Enabled2}" Content="写int32" Command="{Binding WriteCmd}" CommandParameter="INT32" HorizontalAlignment="Left" Margin="532,156,0,0" VerticalAlignment="Top" Width="110" />
<!-- 读写REAL -->
<Button IsEnabled="{Binding Enabled2}" Content="读real" Command="{Binding ReadCmd}" CommandParameter="REAL" HorizontalAlignment="Left" Margin="252,203,0,0" Width="110" VerticalAlignment="Top" />
<TextBox IsEnabled="{Binding Enabled2}" Text="{Binding RealValue}" HorizontalAlignment="Left" Margin="382,203,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="135" />
<Button IsEnabled="{Binding Enabled2}" Content="写real" Command="{Binding WriteCmd}" CommandParameter="REAL" HorizontalAlignment="Left" Margin="532,203,0,0" RenderTransformOrigin="0.582,0.67" Width="110" VerticalAlignment="Top" />
<!-- 读写STRING -->
<Button IsEnabled="{Binding Enabled2}" Content="读string" Command="{Binding ReadCmd}" CommandParameter="STRING1" HorizontalAlignment="Left" Margin="252,245,0,0" VerticalAlignment="Top" Width="110" />
<TextBox IsEnabled="{Binding Enabled2}" Text="{Binding StringValue1}" HorizontalAlignment="Left" Margin="382,245,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="135" />
<Button IsEnabled="{Binding Enabled2}" Content="写string" Command="{Binding WriteCmd}" CommandParameter="STRING1" HorizontalAlignment="Left" Margin="532,245,0,0" VerticalAlignment="Top" Width="110" />
<Button IsEnabled="{Binding Enabled2}" Content="读string" Command="{Binding ReadCmd}" CommandParameter="STRING" HorizontalAlignment="Left" Margin="252,280,0,0" VerticalAlignment="Top" Width="110" />
<TextBox IsEnabled="{Binding Enabled2}" Text="{Binding StringValue}" HorizontalAlignment="Left" Margin="382,280,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="135" />
<Button IsEnabled="{Binding Enabled2}" Content="写string" Command="{Binding WriteCmd}" CommandParameter="STRING" HorizontalAlignment="Left" Margin="532,280,0,0" VerticalAlignment="Top" Width="110" />
<TextBlock HorizontalAlignment="Left" Margin="537,310,0,0" TextWrapping="Wrap" Text="非字符串类型" Foreground="Red" VerticalAlignment="Top" />
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Text="数据:" Margin="18,346,0,0" />
<TextBox Text="{Binding ReadedValue}" HorizontalAlignment="Left" Margin="58,340,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="180" />
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Text="信息:" Margin="18,389,0,0" />
<TextBox Text="{Binding Message}" HorizontalAlignment="Left" Margin="58,383,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="180" />
<Border Theme="{StaticResource CardBorder}" Margin="252,331,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Width="400" Height="120">
<Grid>
<TextBlock HorizontalAlignment="Left" Margin="0,-20,0,0" TextWrapping="Wrap" Text="字节操作" VerticalAlignment="Top"/>
<TextBlock HorizontalAlignment="Left" Margin="0,16,0,0" TextWrapping="Wrap" Text="DB:" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled1}" HorizontalAlignment="Left" Margin="30,10,0,0" TextWrapping="Wrap" Text="{Binding DBAddress2}" VerticalAlignment="Top" Width="50" />
<TextBlock HorizontalAlignment="Left" Margin="85,16,0,0" TextWrapping="Wrap" Text="地址:" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled1}" HorizontalAlignment="Left" Margin="120,10,0,0" TextWrapping="Wrap" Text="{Binding Address2}" VerticalAlignment="Top" Width="50" />
<TextBlock HorizontalAlignment="Left" Margin="180,16,0,0" TextWrapping="Wrap" Text="字节数:" VerticalAlignment="Top"/>
<TextBox IsEnabled="{Binding Enabled1}" HorizontalAlignment="Left" Margin="230,10,0,0" TextWrapping="Wrap" Text="{Binding BytesCount}" VerticalAlignment="Top" Width="80" />
<Button IsEnabled="{Binding Enabled2}" Content="读字节" Command="{Binding ReadCmd}" CommandParameter="Bytes" HorizontalAlignment="Left" Margin="105,47,0,0" VerticalAlignment="Top" Width="70" />
</Grid>
</Border>
</Grid>
</Border>
</Grid>
</UserControl>

View File

@@ -0,0 +1,13 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ;
public partial class 西PLC调试 : UserControl
{
public 西PLC调试()
{
InitializeComponent();
}
}

View File

@@ -0,0 +1,241 @@
<UserControl xmlns="https://github.com/avaloniaui"
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"
mc:Ignorable="d" d:DesignHeight="660" d:DesignWidth="815"
xmlns:vm ="clr-namespace:常用工具集.ViewModel._02网络相关"
xmlns:utils="clr-namespace:常用工具集.Utility"
x:Class="常用工具集.FTP客户端"
xmlns:i="clr-namespace:Avalonia.Xaml.Interactivity;assembly=Avalonia.Xaml.Interactivity"
x:CompileBindings="True"
x:DataType="vm:FTP客户端ViewModel">
<!-- xmlns:b="clr-namespace:Avalonia.Xaml.Behaviors;assembly=Avalonia.Xaml.Behaviors" -->
<UserControl.DataContext>
<vm:FTP客户端ViewModel />
</UserControl.DataContext>
<Grid>
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Text="IP地址:" Margin="10,16,0,0"/>
<TextBox IsEnabled="{Binding EnableFlag1}" HorizontalAlignment="Left" Margin="60,10,0,0" TextWrapping="Wrap" Text="{Binding IpAddress}" VerticalAlignment="Top" Width="120" />
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Text="端口号:" Margin="200,16,0,0"/>
<TextBox IsEnabled="{Binding EnableFlag1}" HorizontalAlignment="Left" Margin="250,10,0,0" TextWrapping="Wrap" Text="{Binding Port}" VerticalAlignment="Top" Width="105" />
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Text="字符编码:" Margin="369,16,0,0"/>
<ComboBox HorizontalAlignment="Left" IsEnabled="{Binding EnableFlag1}" VerticalAlignment="Top" SelectedIndex="{Binding EncodingIndex}" ItemsSource="{Binding StrEncodingList}" Margin="439,10,0,0" Width="90" />
<Button Content="建立连接" IsEnabled="{Binding EnableFlag1}" Command="{Binding ConnectCmd}" HorizontalAlignment="Left" Margin="557,10,0,0" VerticalAlignment="Top" Width="85" RenderTransformOrigin="0.539,0.527" />
<Button Content="断开连接" IsEnabled="{Binding EnableFlag2}" Command="{Binding DisconnectCmd}" HorizontalAlignment="Left" Margin="655,10,0,0" VerticalAlignment="Top" Width="85" />
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Text="用户名:" Margin="10,56,0,0"/>
<TextBox IsEnabled="{Binding EnableFlag1}" HorizontalAlignment="Left" Margin="60,50,0,0" TextWrapping="Wrap" Text="{Binding UserName}" VerticalAlignment="Top" Width="120" />
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Text="密码:" Margin="210,56,0,0"/>
<TextBox IsEnabled="{Binding EnableFlag1}" HorizontalAlignment="Left" Margin="250,50,0,0" TextWrapping="Wrap" Text="{Binding Password}" VerticalAlignment="Top" Width="105" />
<CheckBox IsChecked="{Binding IsAnonymous}" IsEnabled="{Binding EnableFlag1}" Content="匿名登录" Margin="425,52,0,0" VerticalAlignment="Top" HorizontalAlignment="Left" Height="24" />
<Button Width="25" Height="25" Margin="25,95,0,0" Background="#1296db" HorizontalAlignment="Left" VerticalAlignment="Top" Command="{Binding LocalHomeClickCommand}">
<Button.Template>
<ControlTemplate TargetType="Button">
<Grid Background="Transparent">
<Path Fill="{TemplateBinding Button.Background}"
Stretch="Fill" Data="M916.16 360.494L562.622 79.919C529.939 55.927 484.353 57 452.924 82.5L104.497 360.535c-19.798 16.064-31.225 39.73-31.225 64.668V919.3c0 21.173 17.164 38.337 38.337 38.337H320.31c21.173 0 38.337-17.164 38.337-38.337V682.871c0-34.874 29.614-63.407 65.809-63.407h175.289c36.195 0 65.809 28.533 65.809 63.407V919.3c0 21.173 17.164 38.337 38.337 38.337H912.39c21.173 0 38.337-17.164 38.337-38.337V427.742c0.001-26.385-12.784-51.258-34.567-67.248z" />
</Grid>
</ControlTemplate>
</Button.Template>
</Button>
<Button Width="25" Height="25" Margin="65,95,0,0" Background="#1296db" HorizontalAlignment="Left" VerticalAlignment="Top" Command="{Binding LocalDoubleClickCommand}" CommandParameter="{Binding LocalTreeSelectedItem}">
<Button.Template>
<ControlTemplate TargetType="Button">
<Grid Background="Transparent">
<Path Fill="{TemplateBinding Button.Background}"
Stretch="Fill" Data="M467.86 64c47.68 0 91.95 11.98 133.27 35.7 41.33 23.72 74.1 56.25 98.55 97.57s36.68 86.32 36.68 135.48c0 37.66-7.34 73.12-22.01 105.89s-35.21 61.87-61.87 87.06l-44.02-18.83c25.19-21.03 45.24-46.46 59.91-76.54s22.01-62.6 22.01-97.57c0-40.59-9.78-78.01-29.34-112.25-19.56-34.23-46.46-61.63-80.7-81.92s-71.65-30.32-112.24-30.32c-40.59 0-78.01 10.02-112.24 30.32s-61.63 47.68-81.92 81.92c-20.3 34.23-30.32 71.65-30.32 112.25 0 44.75 12.23 85.59 36.68 122.76s56.98 64.8 97.57 82.9v48.17c-53.07-19.56-96.11-52.57-129.12-98.55-32.77-46.22-49.4-97.82-49.4-155.29 0-48.91 11.98-94.15 35.7-135.48s56.25-73.85 97.57-97.57C373.71 75.74 418.95 64 467.86 64z m0 90.24c48.91 0 90.97 17.61 125.94 52.57s52.58 77.03 52.58 125.94c0 33.51-8.07 64.07-24.21 91.21-16.14 27.39-38.15 48.66-66.03 64.07V433.5c30.81-26.66 46.22-59.42 46.22-98.55s-13.21-71.65-39.86-97.57c-26.65-25.92-58.45-38.88-95.37-38.88s-68.47 12.96-94.39 38.88-38.88 58.44-38.88 97.57 14.67 72.14 44.02 98.55v54.53c-27.88-15.4-50.13-36.68-66.03-64.07-16.14-27.39-24.21-57.71-24.21-91.21 0-48.91 17.61-90.97 52.58-125.94 34.47-35.21 77.26-52.57 127.64-52.57z m-46.22 178.27c0-12.47 4.64-22.99 13.7-31.55 9.05-8.32 20.05-12.47 32.52-12.47s22.99 4.16 31.55 12.47c8.56 8.32 12.47 18.83 12.47 31.55v199.3l54.53 6.36 220.33 98.55c12.47 5.62 22.01 13.7 28.37 24.21 6.36 10.51 9.54 22.74 9.54 36.68v195.14c0 18.1-6.6 33.51-20.05 46.22-13.21 12.47-29.1 19.56-47.2 21.03H467.86c-18.1 0-33.5-7.09-46.22-21.03L203.27 752.14l33.5-35.7c8.31-8.32 18.83-12.47 31.55-12.47h10.52l142.81 75.57-0.01-447.03z" />
</Grid>
</ControlTemplate>
</Button.Template>
</Button>
<Border Theme="{StaticResource CardBorder}" Width="320" Height="335" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="25,130,0,0">
<Grid>
<TextBlock HorizontalAlignment="Left" Margin="0,-20,0,0" TextWrapping="Wrap" Text="{Binding LocalPath1}" VerticalAlignment="Top"/>
<DataGrid HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
IsReadOnly="True"
ItemsSource="{Binding LocalTree}"
SelectedItem="{Binding LocalTreeSelectedItem}"
RowHeight="30"
AutoGenerateColumns="False" GridLinesVisibility="None">
<!--<i:Interaction.Triggers>
<b:EventTrigger EventName="MouseLeftButtonUp">
<b:InvokeCommandAction Command="{Binding LocalClickCommand}" CommandParameter="{Binding SelectedItem}" />
</i:EventTrigger>
<b:EventTrigger EventName="MouseDoubleClick">
<b:InvokeCommandAction Command="{Binding LocalDoubleClickCommand}" CommandParameter="{Binding LocalTreeSelectedItem}" />
</b:EventTrigger>
</b:Interaction.Triggers>-->
<DataGrid.Columns>
<DataGridTemplateColumn Header="名称" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Center" Height="20">
<Image Margin="2" HorizontalAlignment="Center" VerticalAlignment="Center" Tag="{Binding IsDirectory}">
<Image.Styles>
<Style Selector="Image[Tag=True]">
<Setter Property="Source" Value="/Assets/FTP/Folder.png" />
</Style>
<Style Selector="Image[Tag=False]">
<Setter Property="Source" Value="/Assets/FTP/File.png" />
</Style>
</Image.Styles>
</Image>
<TextBlock Text="{Binding Name}" Margin="2" HorizontalAlignment="Center" VerticalAlignment="Center" Tag="{Binding Path}"/>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Border>
<Button IsEnabled="{Binding EnableFlag2}" Width="48" Height="22" Margin="369,243,0,0" Background="#1296db" HorizontalAlignment="Left" VerticalAlignment="Top" Command="{Binding DownloadClickCommand}">
<Button.Template>
<ControlTemplate TargetType="Button">
<Grid Background="Transparent">
<Path Fill="{TemplateBinding Button.Background}"
Stretch="Fill"
Data="M185.4,87.5H95.8V56.4c0-2-0.6-3.9-1.6-5.6c-3.1-4.9-9.5-6.3-14.4-3.2L9.9,91.9c-1.3,0.8-2.5,2-3.3,3.3
c-3,4.9-1.5,11.3,3.4,14.3L80,152.7v0c1.6,1,3.5,1.5,5.5,1.5c5.8,0,10.4-4.7,10.4-10.4v-31.3h89.6c5.8,0,10.4-4.7,10.4-10.4v-4.2
C195.8,92.2,191.2,87.5,185.4,87.5z" />
</Grid>
</ControlTemplate>
</Button.Template>
</Button>
<Button IsEnabled="{Binding EnableFlag2}" Width="48" Height="22" Margin="369,308,0,0" Background="#1296db" HorizontalAlignment="Left" VerticalAlignment="Top" Command="{Binding UploadClickCommand}">
<Button.Template>
<ControlTemplate TargetType="Button">
<Grid Background="Transparent">
<Path Fill="{TemplateBinding Button.Background}"
Stretch="Fill"
Data="M15.5,87.5h89.6V56.4c0-2,0.6-3.9,1.6-5.6c3.1-4.9,9.5-6.3,14.4-3.2L191,91.9c1.3,0.8,2.5,2,3.3,3.3
c3,4.9,1.5,11.3-3.4,14.3l-69.9,43.1v0c-1.6,1-3.5,1.5-5.5,1.5c-5.8,0-10.4-4.7-10.4-10.4v-31.3H15.5c-5.8,0-10.4-4.7-10.4-10.4
v-4.2C5.1,92.2,9.7,87.5,15.5,87.5z" />
</Grid>
</ControlTemplate>
</Button.Template>
</Button>
<Button IsEnabled="{Binding EnableFlag2}" Width="25" Height="25" Margin="495,95,0,0" Background="#1296db" HorizontalAlignment="Left" VerticalAlignment="Top" Command="{Binding RemoteRenameClickCommand}">
<Button.Template>
<ControlTemplate TargetType="Button">
<Grid Background="Transparent">
<Path Fill="{TemplateBinding Button.Background}"
Stretch="Fill" Data="M105.4,137.9h-65c-3,0-5.4-2.4-5.4-5.4v-65c0-3,2.4-5.4,5.4-5.4h65c3,0,5.4,2.4,5.4,5.4s-2.4,5.4-5.4,5.4H45.8
v54.2h59.6c3,0,5.4,2.4,5.4,5.4S108.4,137.9,105.4,137.9z M62.1,94.6c-3,0-5.4,2.4-5.4,5.4s2.4,5.4,5.4,5.4h32.5
c3,0,5.4-2.4,5.4-5.4s-2.4-5.4-5.4-5.4H62.1z M148.8,159.6h-16.3V40.4h16.3c3,0,5.4-2.4,5.4-5.4s-2.4-5.4-5.4-5.4h-43.4
c-3,0-5.4,2.4-5.4,5.4s2.4,5.4,5.4,5.4h16.3v119.2h-16.3c-3,0-5.4,2.4-5.4,5.4s2.4,5.4,5.4,5.4h43.4c3,0,5.4-2.4,5.4-5.4
S151.8,159.6,148.8,159.6z M159.6,62.1h-10.8c-3,0-5.4,2.4-5.4,5.4s2.4,5.4,5.4,5.4h5.4v54.2h-5.4c-3,0-5.4,2.4-5.4,5.4
s2.4,5.4,5.4,5.4h10.8c3,0,5.4-2.4,5.4-5.4v-65C165,64.5,162.6,62.1,159.6,62.1z" />
</Grid>
</ControlTemplate>
</Button.Template>
</Button>
<Button IsEnabled="{Binding EnableFlag2}" Width="25" Height="25" Margin="540,95,0,0" Background="#1296db" HorizontalAlignment="Left" VerticalAlignment="Top" Command="{Binding RemoteDeleteClickCommand}">
<Button.Template>
<ControlTemplate TargetType="Button">
<Grid Background="Transparent">
<Path Fill="{TemplateBinding Button.Background}"
Stretch="Fill" Data="M160,60c-5.5,0-10,4.5-10,10l0,0v110H50V70c0-5.5-4.5-10-10-10c-5.5,0-10,4.5-10,10v120c0,5.5,4.5,10,10,10h120
c5.5,0,10-4.5,10-10l0,0V70C170,64.5,165.5,60,160,60C160,60,160,60,160,60z M80,160V80c0-5.5-4.5-10-10-10c-5.5,0-10,4.5-10,10v80
c0,5.5,4.5,10,10,10C75.5,170,80,165.5,80,160z M110,160V80c0-5.5-4.5-10-10-10c-5.5,0-10,4.5-10,10v80c0,5.5,4.5,10,10,10
C105.5,170,110,165.5,110,160z M140,160V80c0-5.5-4.5-10-10-10c-5.5,0-10,4.5-10,10v80c0,5.5,4.5,10,10,10
C135.5,170,140,165.5,140,160z M190,30h-50V20c0-11-9-20-20-20c0,0,0,0,0,0H80C69,0,60,9,60,20v10H10C4.5,30,0,34.5,0,40
c0,5.5,4.5,10,10,10h180c5.5,0,10-4.5,10-10C200,34.5,195.5,30,190,30z M80,30V20h40v10H80z" />
</Grid>
</ControlTemplate>
</Button.Template>
</Button>
<Button IsEnabled="{Binding EnableFlag2}" Width="24" Height="25" Margin="448,95,0,0" Background="#1296db" HorizontalAlignment="Left" VerticalAlignment="Top" Command="{Binding RemoteHomeClickCommand}">
<Button.Template>
<ControlTemplate TargetType="Button">
<Grid Background="Transparent">
<Path Fill="{TemplateBinding Button.Background}"
Stretch="Fill" Data="M916.16 360.494L562.622 79.919C529.939 55.927 484.353 57 452.924 82.5L104.497 360.535c-19.798 16.064-31.225 39.73-31.225 64.668V919.3c0 21.173 17.164 38.337 38.337 38.337H320.31c21.173 0 38.337-17.164 38.337-38.337V682.871c0-34.874 29.614-63.407 65.809-63.407h175.289c36.195 0 65.809 28.533 65.809 63.407V919.3c0 21.173 17.164 38.337 38.337 38.337H912.39c21.173 0 38.337-17.164 38.337-38.337V427.742c0.001-26.385-12.784-51.258-34.567-67.248z" />
</Grid>
</ControlTemplate>
</Button.Template>
</Button>
<Button Width="25" Height="25" Margin="585,95,0,0" Background="#1296db" HorizontalAlignment="Left" VerticalAlignment="Top" Command="{Binding RemoteDoubleClickCommand}" CommandParameter="{Binding RemoteTreeSelectedItem}">
<Button.Template>
<ControlTemplate TargetType="Button">
<Grid Background="Transparent">
<Path Fill="{TemplateBinding Button.Background}"
Stretch="Fill" Data="M467.86 64c47.68 0 91.95 11.98 133.27 35.7 41.33 23.72 74.1 56.25 98.55 97.57s36.68 86.32 36.68 135.48c0 37.66-7.34 73.12-22.01 105.89s-35.21 61.87-61.87 87.06l-44.02-18.83c25.19-21.03 45.24-46.46 59.91-76.54s22.01-62.6 22.01-97.57c0-40.59-9.78-78.01-29.34-112.25-19.56-34.23-46.46-61.63-80.7-81.92s-71.65-30.32-112.24-30.32c-40.59 0-78.01 10.02-112.24 30.32s-61.63 47.68-81.92 81.92c-20.3 34.23-30.32 71.65-30.32 112.25 0 44.75 12.23 85.59 36.68 122.76s56.98 64.8 97.57 82.9v48.17c-53.07-19.56-96.11-52.57-129.12-98.55-32.77-46.22-49.4-97.82-49.4-155.29 0-48.91 11.98-94.15 35.7-135.48s56.25-73.85 97.57-97.57C373.71 75.74 418.95 64 467.86 64z m0 90.24c48.91 0 90.97 17.61 125.94 52.57s52.58 77.03 52.58 125.94c0 33.51-8.07 64.07-24.21 91.21-16.14 27.39-38.15 48.66-66.03 64.07V433.5c30.81-26.66 46.22-59.42 46.22-98.55s-13.21-71.65-39.86-97.57c-26.65-25.92-58.45-38.88-95.37-38.88s-68.47 12.96-94.39 38.88-38.88 58.44-38.88 97.57 14.67 72.14 44.02 98.55v54.53c-27.88-15.4-50.13-36.68-66.03-64.07-16.14-27.39-24.21-57.71-24.21-91.21 0-48.91 17.61-90.97 52.58-125.94 34.47-35.21 77.26-52.57 127.64-52.57z m-46.22 178.27c0-12.47 4.64-22.99 13.7-31.55 9.05-8.32 20.05-12.47 32.52-12.47s22.99 4.16 31.55 12.47c8.56 8.32 12.47 18.83 12.47 31.55v199.3l54.53 6.36 220.33 98.55c12.47 5.62 22.01 13.7 28.37 24.21 6.36 10.51 9.54 22.74 9.54 36.68v195.14c0 18.1-6.6 33.51-20.05 46.22-13.21 12.47-29.1 19.56-47.2 21.03H467.86c-18.1 0-33.5-7.09-46.22-21.03L203.27 752.14l33.5-35.7c8.31-8.32 18.83-12.47 31.55-12.47h10.52l142.81 75.57-0.01-447.03z" />
</Grid>
</ControlTemplate>
</Button.Template>
</Button>
<Border Theme="{StaticResource CardBorder}" Width="320" Height="335" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="445,130,0,0">
<Grid>
<TextBlock HorizontalAlignment="Left" Margin="0,-20,0,0" TextWrapping="Wrap" Text="{Binding RemotePath1}" VerticalAlignment="Top"/>
<DataGrid HorizontalAlignment="Stretch"
IsEnabled="{Binding EnableFlag2}"
VerticalAlignment="Stretch"
IsReadOnly="True"
ItemsSource="{Binding RemoteTree}"
SelectedItem="{Binding RemoteTreeSelectedItem}"
RowHeight="30"
AutoGenerateColumns="False" GridLinesVisibility="None" >
<i:Interaction.Behaviors>
<!--<EventTriggerBehavior EventName="MouseDoubleClick">
<InvokeCommandAction Command="{Binding RemoteDoubleClickCommand}" CommandParameter="{Binding RemoteTreeSelectedItem}"/>
</EventTriggerBehavior>-->
</i:Interaction.Behaviors>
<DataGrid.Columns>
<DataGridTemplateColumn Header="名称" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Center" Height="20">
<Image Margin="2" HorizontalAlignment="Center" VerticalAlignment="Center" Tag="{Binding IsDirectory}">
<Image.Styles>
<Style Selector="Image[Tag=True]">
<Setter Property="Source" Value="/Assets/FTP/Folder.png" />
</Style>
<Style Selector="Image[Tag=False]">
<Setter Property="Source" Value="/Assets/FTP/File.png" />
</Style>
</Image.Styles>
</Image>
<TextBlock Text="{Binding Name}" Margin="2" HorizontalAlignment="Center" VerticalAlignment="Center" Tag="{Binding Path}"/>
</StackPanel >
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Border>
<Border Theme="{StaticResource CardBorder}" Width="755" Height="160" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,460,0,0">
<Grid>
<TextBlock HorizontalAlignment="Center" Margin="0,-20,0,0" TextWrapping="Wrap" Text="日志信息" VerticalAlignment="Top"/>
<TextBox x:Name="TBInfo" TextWrapping="Wrap" ScrollViewer.VerticalScrollBarVisibility="Auto" Height="100" Text="{Binding Message}" Margin="10,10,10,10" HorizontalContentAlignment="Left" VerticalContentAlignment="Top">
<i:Interaction.Behaviors>
<DataTriggerBehavior Binding="{Binding Text.Length, ElementName=TBInfo}" ComparisonCondition="NotEqual" Value="0">
<ChangePropertyAction TargetObject="TBInfo" PropertyName="CaretIndex" Value="{Binding ElementName=TBInfo, Path=Text.Length}"/>
<CallMethodAction MethodName="ScrollToEnd" />
</DataTriggerBehavior>
</i:Interaction.Behaviors>
</TextBox>
</Grid>
</Border>
</Grid>
</UserControl>

View File

@@ -0,0 +1,13 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ;
public partial class FTP客户端 : UserControl
{
public FTP客户端()
{
InitializeComponent();
}
}

View File

@@ -0,0 +1,38 @@
<UserControl xmlns="https://github.com/avaloniaui"
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"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
xmlns:vm ="clr-namespace:常用工具集.ViewModel._02网络相关"
x:Class="常用工具集.FTP服务"
x:CompileBindings="True"
x:DataType="vm:FTP服务ViewModel">
<UserControl.DataContext>
<vm:FTP服务ViewModel />
</UserControl.DataContext>
<Grid>
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Text="共享路径:" Margin="23,21,0,0"/>
<TextBox IsEnabled="{Binding Enabled1}" Text="{Binding Path}" HorizontalAlignment="Left" Margin="93,15,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="255" />
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Text="端口:" Margin="46,64,0,0"/>
<TextBox IsEnabled="{Binding Enabled1}" Text="{Binding Port}" HorizontalAlignment="Left" Margin="93,58,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="255" />
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Text="用户名:" Margin="34,104,0,0"/>
<TextBox IsEnabled="{Binding Enabled1}" Text="{Binding UserName}" HorizontalAlignment="Left" Margin="93,98,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="255" />
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Text="密码:" Margin="46,144,0,0"/>
<TextBox IsEnabled="{Binding Enabled1}" Text="{Binding Password}" HorizontalAlignment="Left" Margin="93,138,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="255" />
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Text="允许匿名:" Margin="23,184,0,0"/>
<CheckBox IsEnabled="{Binding Enabled1}" IsChecked="{Binding Anonymous}" Content="" Margin="93,184,0,0" VerticalAlignment="Top" HorizontalAlignment="Left" />
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Text="最大连接数:" Margin="18,224,0,0"/>
<TextBox IsEnabled="{Binding Enabled1}" Text="{Binding MaxConnectCount}" HorizontalAlignment="Left" Margin="93,218,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="255" />
<Button IsEnabled="{Binding Enabled1}" Content="选择" Command="{Binding SelectPathCmd}" Margin="370,15,0,0" VerticalAlignment="Top" Width="75" HorizontalAlignment="Left" />
<Button Content="{Binding ButtonName}" Command="{Binding StartCmd}" Margin="80,264,0,0" VerticalAlignment="Top" Width="90" HorizontalAlignment="Left" />
</Grid>
</UserControl>

View File

@@ -0,0 +1,13 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ;
public partial class FTP服务 : UserControl
{
public FTP服务()
{
InitializeComponent();
}
}

View File

@@ -0,0 +1,39 @@
<UserControl xmlns="https://github.com/avaloniaui"
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"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
xmlns:vm ="clr-namespace:常用工具集.ViewModel._02网络相关"
x:Class="常用工具集.HTTP调试"
x:CompileBindings="True"
x:DataType="vm:HTTP调试ViewModel">
<UserControl.DataContext>
<vm:HTTP调试ViewModel />
</UserControl.DataContext>
<Grid>
<Grid VerticalAlignment="Top" HorizontalAlignment="Left" Width="245" Height="45" Margin="10,25,0,0">
<RadioButton Height="20" Content="GET" IsChecked="{Binding GetChecked}" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top"/>
<RadioButton Height="20" Content="POST" IsChecked="{Binding PostChecked}" HorizontalAlignment="Left" Margin="65,10,0,0" VerticalAlignment="Top"/>
<RadioButton Height="20" Content="Get下载文件" IsChecked="{Binding DownloadChecked}" HorizontalAlignment="Left" Margin="132,10,0,0" VerticalAlignment="Top"/>
</Grid>
<TextBlock VerticalAlignment="Top" HorizontalAlignment="Left" Text="URL:" Margin="255,37,0,0" />
<TextBox Text="{Binding Url}" HorizontalAlignment="Left" Margin="285,31,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="355" />
<Button IsEnabled="{Binding ButtonEnabled}" Content="调试" Command="{Binding ButtonCmd}" HorizontalAlignment="Left" Margin="645,31,0,0" VerticalAlignment="Top" Width="60" />
<Grid IsVisible="{Binding Visiable}" VerticalAlignment="Top" HorizontalAlignment="Left" Width="163" Height="45" Margin="75,75,0,0">
<RadioButton Height="20" Content="JSON" IsChecked="{Binding JsonChecked}" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top"/>
<RadioButton Height="20" Content="表单" IsChecked="{Binding FormChecked}" HorizontalAlignment="Left" Margin="93,10,0,0" VerticalAlignment="Top"/>
</Grid>
<TextBlock VerticalAlignment="Top" HorizontalAlignment="Left" Text="超时:" Margin="255,84,0,0" />
<TextBox Text="{Binding Timeout}" HorizontalAlignment="Left" Margin="295,79,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="160" />
<TextBlock VerticalAlignment="Top" HorizontalAlignment="Left" Text="参数:" Margin="20,131,0,0" />
<TextBox Text="{Binding Parms}" Height="160" HorizontalAlignment="Left" Margin="60,125,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="395" VerticalContentAlignment="Top" HorizontalContentAlignment="Left" AcceptsReturn="True" AcceptsTab="True"/>
<TextBlock VerticalAlignment="Top" HorizontalAlignment="Left" Text="结果:" Margin="20,321,0,0" />
<TextBox Text="{Binding Result}" Height="160" HorizontalAlignment="Left" Margin="60,315,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="395" VerticalContentAlignment="Top" HorizontalContentAlignment="Left" />
<TextBlock HorizontalAlignment="Left" Margin="470,125,0,0" TextWrapping="Wrap" Text="如果是JSON,请填写JSON内容" Foreground="Red" VerticalAlignment="Top" Width="177" />
<TextBlock HorizontalAlignment="Left" Margin="470,155,0,0" TextWrapping="Wrap" Text="其他格式如下:" Foreground="Red" VerticalAlignment="Top" Width="177" />
<TextBlock HorizontalAlignment="Left" Margin="470,190,0,0" TextWrapping="Wrap" Text="userName=zjw&amp;password=123456" Foreground="Red" VerticalAlignment="Top" Width="212" />
</Grid>
</UserControl>

View File

@@ -0,0 +1,13 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ;
public partial class HTTP调试 : UserControl
{
public HTTP调试()
{
InitializeComponent();
}
}

View File

@@ -0,0 +1,65 @@
<UserControl xmlns="https://github.com/avaloniaui"
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"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
xmlns:vm ="clr-namespace:常用工具集.ViewModel._02网络相关"
x:Class="常用工具集.端口占用扫描"
x:CompileBindings="True"
x:DataType="vm:端口占用扫描ViewModel">
<UserControl.DataContext>
<vm:端口占用扫描ViewModel />
</UserControl.DataContext>
<Grid>
<Button Content="开始扫描" IsEnabled="{Binding Enabled1}" Command="{Binding StartScanCmd}" HorizontalAlignment="Left" Margin="400,10,0,0" VerticalAlignment="Top" Width="90" />
<Button Content="结束进程" IsEnabled="{Binding Enabled2}" Command="{Binding CloseProcessCmd}" HorizontalAlignment="Left" Margin="500,10,0,0" VerticalAlignment="Top" Width="90" />
<DataGrid
Height="430"
SelectedIndex="{Binding SelectedIndex}"
HeadersVisibility="All"
CanUserReorderColumns="True"
CanUserResizeColumns="True"
CanUserSortColumns="True"
IsReadOnly="True"
Margin="10,70,0,0" Width="675"
ItemsSource="{Binding DataList}">
<DataGrid.Columns>
<DataGridTextColumn
Width="*"
x:DataType="vm:ScanResult"
Binding="{Binding Protocol}"
Header="协议" />
<DataGridTextColumn
Width="*"
x:DataType="vm:ScanResult"
Binding="{Binding LocalAddress}"
Header="本机地址" />
<DataGridTextColumn
Width="*"
x:DataType="vm:ScanResult"
Binding="{Binding RemoteAddress}"
Header="远程地址" />
<DataGridTextColumn
Width="*"
x:DataType="vm:ScanResult"
Binding="{Binding State}"
Header="状态" />
<DataGridTextColumn
Width="*"
x:DataType="vm:ScanResult"
Binding="{Binding Port}"
Header="端口号" />
<DataGridTextColumn
Width="*"
x:DataType="vm:ScanResult"
Binding="{Binding PID}"
Header="进程ID" />
<DataGridTextColumn
Width="*"
x:DataType="vm:ScanResult"
Binding="{Binding ProcessName}"
Header="进程名称" />
</DataGrid.Columns>
</DataGrid>
</Grid>
</UserControl>

View File

@@ -0,0 +1,13 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ;
public partial class : UserControl
{
public ()
{
InitializeComponent();
}
}

View File

@@ -0,0 +1,54 @@
<UserControl xmlns="https://github.com/avaloniaui"
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"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
xmlns:vm ="clr-namespace:常用工具集.ViewModel._02网络相关"
x:Class="常用工具集.端口扫描"
x:CompileBindings="True"
Loaded="UserControl_Loaded"
x:DataType="vm:端口扫描ViewModel">
<UserControl.DataContext>
<vm:端口扫描ViewModel />
</UserControl.DataContext>
<Grid>
<Border Theme="{StaticResource CardBorder}" Width="300" Height="250" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,50,0,0">
<Grid Height="220">
<TextBlock HorizontalAlignment="Center" Margin="0,-20,0,0" TextWrapping="Wrap" Text="信息设置" VerticalAlignment="Top"/>
<TextBlock Text="起始IP" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="20,22,0,0" FontSize="10" />
<TextBox Text="192" Name="textBox1" VerticalAlignment="Top" HorizontalAlignment="Left" Width="40" FontSize="10" Margin="70,16,0,0" />
<TextBlock Text="." HorizontalAlignment="Center" VerticalAlignment="Top" Margin="0,26,0,0" FontSize="10"/>
<TextBlock Text="." HorizontalAlignment="Left" VerticalAlignment="Top" Margin="111,26,0,0" FontSize="10"/>
<TextBox Text="168" Name="textBox2" VerticalAlignment="Top" HorizontalAlignment="Left" Width="40" FontSize="10" Margin="115,16,0,0" />
<TextBox Text="1" Name="textBox3" VerticalAlignment="Top" HorizontalAlignment="Left" Width="40" FontSize="10" Margin="166,16,0,0" />
<TextBlock Text="." HorizontalAlignment="Left" VerticalAlignment="Top" Margin="211,26,0,0" FontSize="10"/>
<TextBox Text="1" Name="textBox4" VerticalAlignment="Top" HorizontalAlignment="Left" Width="40" FontSize="10" Margin="222,16,0,0" />
<TextBlock Text="." HorizontalAlignment="Left" VerticalAlignment="Top" Margin="160,25,0,0" FontSize="10"/>
<TextBlock Text="结束IP" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="19,58,0,0" FontSize="10"/>
<TextBox Text="192" IsEnabled="False" Name="textBox8" VerticalAlignment="Top" HorizontalAlignment="Left" FontSize="10" Width="40" Margin="69,52,0,0" />
<TextBlock Text="." HorizontalAlignment="Left" VerticalAlignment="Top" Margin="110,62,0,0" FontSize="10"/>
<TextBox Text="168" IsEnabled="False" Name="textBox7" VerticalAlignment="Top" HorizontalAlignment="Left" FontSize="10" Width="40" Margin="114,52,0,0" />
<TextBox Text="1" IsEnabled="False" Name="textBox6" VerticalAlignment="Top" HorizontalAlignment="Left" FontSize="10" Width="40" Margin="165,52,0,0" />
<TextBlock Text="." HorizontalAlignment="Left" VerticalAlignment="Top" Margin="210,62,0,0" FontSize="10" />
<TextBox Text="1" Name="textBox5" VerticalAlignment="Top" HorizontalAlignment="Left" Width="40" FontSize="10" Margin="221,52,0,0" />
<TextBlock Text="." HorizontalAlignment="Left" VerticalAlignment="Top" Margin="159,61,0,0" FontSize="10" />
<TextBlock Text="端口号" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="20,96,0,0" FontSize="10"/>
<TextBox Text="80,443,400-445" Name="textBox9" VerticalAlignment="Top" HorizontalAlignment="Left" FontSize="10" Width="191" Margin="70,90,0,0" />
<TextBlock Text="端口号" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="20,135,0,0" FontSize="10"/>
<TextBox Text="200" Name="textBox10" VerticalAlignment="Top" HorizontalAlignment="Left" Width="162" FontSize="10" Margin="70,129,0,0" />
<TextBlock Text="毫秒" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="238,135,0,0" FontSize="10"/>
<TextBlock Text="线程数" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="20,176,0,0" FontSize="10"/>
<TextBox Text="10" Name="textBox11" VerticalAlignment="Top" HorizontalAlignment="Left" Width="162" Margin="70,170,0,0" FontSize="10"/>
</Grid>
</Border>
<Border Theme="{StaticResource CardBorder}" Width="280" Height="250" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="340,50,0,0">
<Grid Height="220">
<TextBlock HorizontalAlignment="Center" Margin="0,-20,0,0" TextWrapping="Wrap" Text="扫描结果" VerticalAlignment="Top"/>
<TextBlock Name="textBox12" Text="" TextWrapping="Wrap" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="0,22,0,0" Height="188" Width="260" />
</Grid>
</Border>
<ProgressBar Name="uiProcessBar1" HorizontalAlignment="Left" Height="10" Margin="25,320,0,0" VerticalAlignment="Top" Width="595"/>
<Button Name="button1" Content="开始扫描" HorizontalAlignment="Left" Margin="545,370,0,0" VerticalAlignment="Top" Width="90" Click="button1_Click" />
</Grid>
</UserControl>

View File

@@ -0,0 +1,303 @@
using System;
using System.Collections.Generic;
using System.Threading;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Interactivity;
using Avalonia.Markup.Xaml;
using Avalonia.Threading;
using Ursa.Controls;
using .Utility.Network;
using .ViewModel._02网络相关;
namespace ;
public partial class : UserControl
{
private bool stop;
private Queue<ScanPortEntity> allScanPort;
private object lockObj = new object();
private object lockMsg = new object();
public ()
{
InitializeComponent();
}
private void UserControl_Loaded(object? sender, RoutedEventArgs e)
{
allScanPort = new Queue<ScanPortEntity>();
textBox1.TextChanged += textBox1_TextChanged;
textBox2.TextChanged += textBox2_TextChanged;
textBox3.TextChanged += textBox3_TextChanged;
}
private void textBox1_TextChanged(object sender, TextChangedEventArgs e)
{
textBox8.Text = textBox1.Text;
}
private void textBox2_TextChanged(object sender, TextChangedEventArgs e)
{
textBox7.Text = textBox2.Text;
}
private void textBox3_TextChanged(object sender, TextChangedEventArgs e)
{
textBox6.Text = textBox3.Text;
}
private void button1_Click(object sender, RoutedEventArgs e)
{
if ("停止" == button1.Content.ToString())
{
stop = true;
button1.Content = "扫描";
}
else
{
//非空检测
if (textBox1.Text.Trim().Length == 0 || textBox2.Text.Trim().Length == 0 || textBox3.Text.Trim().Length == 0 || textBox4.Text.Trim().Length == 0 || textBox5.Text.Trim().Length == 0)
{
MessageBox.ShowAsync("请填写正确的IP地址");
return;
}
//数据范围检测
if (Convert.ToInt32(textBox1.Text.Trim()) < 0 || Convert.ToInt32(textBox1.Text.Trim()) > 255)
{
MessageBox.ShowAsync("请填写正确的IP地址");
return;
}
if (Convert.ToInt32(textBox2.Text.Trim()) < 0 || Convert.ToInt32(textBox2.Text.Trim()) > 255)
{
MessageBox.ShowAsync("请填写正确的IP地址");
return;
}
if (Convert.ToInt32(textBox3.Text.Trim()) < 0 || Convert.ToInt32(textBox3.Text.Trim()) > 255)
{
MessageBox.ShowAsync("请填写正确的IP地址");
return;
}
if (Convert.ToInt32(textBox4.Text.Trim()) < 0 || Convert.ToInt32(textBox4.Text.Trim()) > 255)
{
MessageBox.ShowAsync("请填写正确的IP地址");
return;
}
if (Convert.ToInt32(textBox5.Text.Trim()) < 0 || Convert.ToInt32(textBox5.Text.Trim()) > 255)
{
MessageBox.ShowAsync("请填写正确的IP地址");
return;
}
if (Convert.ToInt32(textBox5.Text.Trim()) < Convert.ToInt32(textBox4.Text.Trim()))
{
MessageBox.ShowAsync("结束IP不能小于起始IP");
return;
}
if (textBox9.Text.Trim().Length == 0)
{
MessageBox.ShowAsync("请输入要扫描的端口号");
return;
}
if (textBox10.Text.Trim().Length == 0)
{
MessageBox.ShowAsync("请输入超时时间");
return;
}
int timeout = Convert.ToInt32(textBox10.Text.Trim());
if (textBox11.Text.Trim().Length == 0)
{
MessageBox.ShowAsync("请输入线程数");
return;
}
int threadCount = Convert.ToInt32(textBox11.Text.Trim());
allScanPort.Clear();
List<string> portList = new List<string>();
string[] strPortArray = textBox9.Text.Trim().Split(',');
foreach (string strPort in strPortArray)
{
try
{
if (strPort.Trim().Length == 0)
{
continue;
}
if (strPort.Contains("-"))
{
string[] aa = strPort.Split('-');
if (aa.Length > 2)
{
MessageBox.ShowAsync("请输入正确的端口号");
return;
}
int startPort = Convert.ToInt32(aa[0]);
int endPort = Convert.ToInt32(aa[1]);
if (endPort < startPort)
{
MessageBox.ShowAsync("请输入正确的端口号范围");
return;
}
if (startPort < 0 && startPort > 65535)
{
MessageBox.ShowAsync("端口号范围应该是0-65535");
return;
}
if (endPort < 0 && endPort > 65535)
{
MessageBox.ShowAsync("端口号范围应该是0-65535");
return;
}
for (int i = startPort; i <= endPort; i++)
{
string port = Convert.ToString(i);
if (!portList.Contains(port))
portList.Add(port);
}
}
else if (strPort.Contains("~"))
{
string[] aa = strPort.Split('~');
if (aa.Length > 2)
{
MessageBox.ShowAsync("请输入正确的端口号");
return;
}
int startPort = Convert.ToInt32(aa[0]);
int endPort = Convert.ToInt32(aa[1]);
if (endPort < startPort)
{
MessageBox.ShowAsync("请输入正确的端口号范围");
return;
}
if (startPort < 0 && startPort > 65535)
{
MessageBox.ShowAsync("端口号范围应该是0-65535");
return;
}
if (endPort < 0 && endPort > 65535)
{
MessageBox.ShowAsync("端口号范围应该是0-65535");
return;
}
for (int i = startPort; i <= endPort; i++)
{
string port = Convert.ToString(i);
if (!portList.Contains(port))
portList.Add(port);
}
}
else
{
int startPort = Convert.ToInt32(strPort);
if (startPort < 0 && startPort > 65535)
{
MessageBox.ShowAsync("端口号范围应该是0-65535");
return;
}
string port = Convert.ToString(startPort);
if (!portList.Contains(port))
portList.Add(port);
}
}
catch
{
MessageBox.ShowAsync("请输入正确的端口号");
return;
}
}
string ipFront = textBox1.Text.Trim() + "." + textBox2.Text.Trim() + "." + textBox3.Text.Trim() + ".";
int startIp = Convert.ToInt32(textBox4.Text.Trim());
int endIp = Convert.ToInt32(textBox5.Text.Trim());
for (int j = startIp; j <= endIp; j++)
{
string ipAddress = ipFront + j;
foreach (string port in portList)
{
ScanPortEntity entity = new ScanPortEntity();
entity.IP = ipAddress;
entity.Port = Convert.ToInt32(port);
allScanPort.Enqueue(entity);
}
}
textBox12.Text = string.Empty;
uiProcessBar1.Maximum = allScanPort.Count;
uiProcessBar1.Value = 0;
stop = false;
button1.Content = "停止";
for (int i = 0; i < threadCount; i++)
{
new Thread(StartScan).Start(timeout);
}
}
}
private void StartScan(object objTimeout)
{
int timeout = (int)objTimeout;
while (!stop)
{
int count = 0;
bool flag;
ScanPortEntity entity = null;
lock (lockObj)
{
try
{
entity = allScanPort.Dequeue();
count = allScanPort.Count;
flag = true;
}
catch
{
flag = false;
}
}
if (!flag)
{
break;
}
Dispatcher.UIThread.Invoke(new Action(() =>
{
if (stop)
return;
uiProcessBar1.Value = uiProcessBar1.Maximum - count;
if (count == 0)
{
allScanPort.Clear();
stop = true;
button1.Content = "扫描";
}
}));
if (entity == null)
break;
//扫描该IP和端口
try
{
TimeOutSocket tc = new TimeOutSocket(entity.IP, entity.Port, timeout);
tc.Connect();
//通
Dispatcher.UIThread.Invoke(new Action(() =>
{
lock (lockMsg)
{
string message = entity.IP + ":" + entity.Port;
textBox12.Text = textBox12.Text + message + "\r\n";
}
}));
}
catch (Exception e)
{
//不通
}
}
}
}
public class ScanPortEntity
{
public ScanPortEntity() { }
public ScanPortEntity(string ip, int port)
{
this.IP = ip;
this.Port = port;
}
public string IP { get; set; }
public int Port { get; set; }
}

View File

@@ -0,0 +1,43 @@
<UserControl xmlns="https://github.com/avaloniaui"
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"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
xmlns:vm ="clr-namespace:常用工具集.ViewModel._02网络相关"
x:Class="常用工具集.网络状态检测"
x:CompileBindings="True"
x:DataType="vm:网络状态检测ViewModel">
<UserControl.DataContext>
<vm:网络状态检测ViewModel />
</UserControl.DataContext>
<Grid RowDefinitions="40,*">
<Grid Grid.Row="0" >
<TextBlock Text="IP地址网段" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="10,0,0,0" />
<TextBox Text="{Binding IP1}" VerticalAlignment="Center" HorizontalAlignment="Left" Width="65" Margin="85,0,0,0" />
<TextBlock Text="." HorizontalAlignment="Left" VerticalAlignment="Center" Margin="160,0,0,0" />
<TextBox Text="{Binding IP2}" VerticalAlignment="Center" HorizontalAlignment="Left" Width="75" Margin="170,0,0,0" />
<TextBlock Text="." HorizontalAlignment="Left" VerticalAlignment="Center" Margin="255,0,0,0" />
<TextBox Text="{Binding IP3}" VerticalAlignment="Center" HorizontalAlignment="Left" Width="75" Margin="270,0,0,0" />
<TextBlock Text=".??" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="354,0,0,0" />
<Button Content="检测" Command="{Binding Button1Cmd}" HorizontalAlignment="Left" Margin="470,0,0,0" />
<Button Content="清空" Command="{Binding Button2Cmd}" HorizontalAlignment="Left" Margin="545,0,0,0" />
</Grid>
<Grid Grid.Row="1" ColumnDefinitions="625,*">
<ItemsControl ItemsSource="{Binding PingStatus}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border Margin="3" Background="{Binding Color}" ToolTip.Tip="{Binding Tip}" Width="25" Height="25"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
</Grid>
</UserControl>

View File

@@ -0,0 +1,13 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ;
public partial class : UserControl
{
public ()
{
InitializeComponent();
}
}

View File

@@ -0,0 +1,26 @@
<UserControl xmlns="https://github.com/avaloniaui"
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:u="https://irihi.tech/ursa"
mc:Ignorable="d" d:DesignHeight="600" d:DesignWidth="715"
xmlns:vm ="clr-namespace:常用工具集.ViewModel._03图片相关"
x:Class="常用工具集.GIF分割"
x:CompileBindings="True"
x:DataType="vm:GIF分割ViewModel">
<UserControl.DataContext>
<vm:GIF分割ViewModel />
</UserControl.DataContext>
<Grid>
<TextBlock Text="GIF路径:" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="20,26,0,0" />
<TextBox HorizontalAlignment="Left" Margin="100,20,0,0" TextWrapping="Wrap" Text="{Binding Path1}" VerticalAlignment="Top" Width="400" />
<TextBlock Text="导出目录:" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="20,82,0,0" />
<TextBox HorizontalAlignment="Left" Margin="100,76,0,0" TextWrapping="Wrap" Text="{Binding Path2}" VerticalAlignment="Top" Width="400" />
<Button Content="浏览..." Command="{Binding SelectGifCmd}" HorizontalAlignment="Left" Margin="530,20,0,0" VerticalAlignment="Top" />
<Button Content="浏览..." Command="{Binding SelectExportPathCmd}" HorizontalAlignment="Left" Margin="530,76,0,0" VerticalAlignment="Top" />
<Button Content="{Binding ButtonName}" Command="{Binding ExportCmd}" HorizontalAlignment="Left" Margin="20,135,0,0" VerticalAlignment="Top" Width="565" />
</Grid>
</UserControl>

View File

@@ -0,0 +1,13 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ;
public partial class GIF分割 : UserControl
{
public GIF分割()
{
InitializeComponent();
}
}

View File

@@ -0,0 +1,37 @@
<UserControl xmlns="https://github.com/avaloniaui"
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"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
xmlns:vm ="clr-namespace:常用工具集.ViewModel._03图片相关"
x:Class="常用工具集.二维码条形码生成" KeyDown="UserControl_KeyDown" >
<!--<UserControl.DataContext>
<vm:二维码条形码生成ViewModel />
</UserControl.DataContext>-->
<Grid>
<TextBlock HorizontalAlignment="Left" Margin="65,10,0,0" TextWrapping="Wrap" Text="输入完按回车键可以直接生成,按ctrl+s可以保存ctrl+c可以复制到剪切板" Foreground="Red" VerticalAlignment="Top" Width="450" Height="25" />
<TextBlock HorizontalAlignment="Left" Margin="34,46,0,0" TextWrapping="Wrap" Text="内容"/>
<TextBox x:Name="txtContent" KeyDown="TextBox_KeyDown" HorizontalAlignment="Left" Margin="85,40,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="273" Height="25" >
<!--以下为CTRL+C功能-->
<!--<TextBox.CommandBindings>
<CommandBinding Command="Copy" Executed="btnCopy_Click"/>
</TextBox.CommandBindings>
<TextBox.InputBindings>
<KeyBinding Key="C" Modifiers="Control" Command="Copy" />
</TextBox.InputBindings>-->
<!--以上为CTRL+C功能-->
</TextBox>
<Button x:Name="btnGenerate" Click="btnGenerate_Click" Content="生成" HorizontalAlignment="Left" Margin="395,40,0,0" VerticalAlignment="Top" Width="75" />
<Button x:Name="btnSave" Content="保存" HorizontalAlignment="Left" Margin="475,40,0,0" VerticalAlignment="Top" Width="75" Click="btnSave_Click" />
<Button x:Name="btnSaveSVG" Content="保存SVG" HorizontalAlignment="Left" Margin="555,40,0,0" VerticalAlignment="Top" Width="90" Click="btnSaveSVG_Click" />
<RadioButton x:Name="rdChecked1" Content="QRCode" IsChecked="True" HorizontalAlignment="Left" Margin="35,89,0,0" VerticalAlignment="Top"/>
<RadioButton x:Name="rdChecked2" Content="DataMatrix(12*12)" IsChecked="False" HorizontalAlignment="Left" Margin="162,89,0,0" VerticalAlignment="Top"/>
<RadioButton x:Name="rdChecked3" Content="DataMatrix(16*16)" IsChecked="False" HorizontalAlignment="Left" Margin="343,89,0,0" VerticalAlignment="Top"/>
<RadioButton x:Name="rdChecked4" Content="Code39" IsChecked="False" HorizontalAlignment="Left" Margin="35,125,0,0" VerticalAlignment="Top"/>
<RadioButton x:Name="rdChecked5" Content="Code128" IsChecked="False" HorizontalAlignment="Left" Margin="159,128,0,0" VerticalAlignment="Top"/>
<Image x:Name="image1" HorizontalAlignment="Left" Height="350" Margin="159,175,0,0" VerticalAlignment="Top" Width="350" />
</Grid>
</UserControl>

View File

@@ -0,0 +1,176 @@
using System.IO;
using System.Text;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Input;
using Avalonia.Interactivity;
using Avalonia.Media.Imaging;
using Avalonia.Platform.Storage;
using MES.Utility.Core;
using SkiaSharp;
using Ursa.Controls;
using ZXing;
using .Base;
using .Utility.Qrcode;
namespace ;
public partial class : UserControl
{
private SKBitmap Image;
private string svg;
public ()
{
InitializeComponent();
}
private Bitmap BitmapToBitmapImage(SKBitmap skBitmap)
{
byte[] bytes = null;
using (MemoryStream stream = new MemoryStream())
{
skBitmap.Encode(SKEncodedImageFormat.Png, 100).SaveTo(stream);
bytes = stream.ToArray();
}
using (MemoryStream stream = new MemoryStream(bytes))
{
return new Bitmap(stream);
}
}
private void btnGenerate_Click(object sender, RoutedEventArgs e)
{
if (txtContent.Text.IsNullOrEmpty())
{
MessageBox.ShowAsync("请输入内容");
return;
}
if (rdChecked1.IsChecked.Value)
{
SKBitmap image = QRCodeUtils.EncodeQrCode(txtContent.Text, 900, out svg);
Image = image;
image1.Source = BitmapToBitmapImage(image);
}
else if (rdChecked2.IsChecked.Value)
{
SKBitmap image = DataMatrixUtils.EncodeDataMatrix(DmtxSymbolSize.DmtxSymbol12x12, txtContent.Text, 900, out svg);
Image = image;
image1.Source = BitmapToBitmapImage(image);
}
else if (rdChecked3.IsChecked.Value)
{
SKBitmap image = DataMatrixUtils.EncodeDataMatrix(DmtxSymbolSize.DmtxSymbol16x16, txtContent.Text, 900, out svg);
Image = image;
image1.Source = BitmapToBitmapImage(image);
}
else if (rdChecked4.IsChecked.Value)
{
SKBitmap image = BarCodeUtils.EncodeBarCode(BarcodeFormat.CODE_39, txtContent.Text, 900, 500, out svg);
Image = image;
image1.Source = BitmapToBitmapImage(image);
}
else if (rdChecked5.IsChecked.Value)
{
SKBitmap image = BarCodeUtils.EncodeBarCode(BarcodeFormat.CODE_128, txtContent.Text, 900, 500, out svg);
Image = image;
image1.Source = BitmapToBitmapImage(image);
}
}
private async void btnSave_Click(object sender, RoutedEventArgs e)
{
if (Image == null)
return;
var sp = GlobalValues.StorageProvider;
if (sp is null) return;
var result = await sp.SaveFilePickerAsync(new FilePickerSaveOptions()
{
Title = "保存图像",
DefaultExtension = "png"
});
if (result == null) return;
string temp = result.Path.LocalPath;
Save(temp, Image);
}
private void Save(string path, SKBitmap bitmap)
{
using (var stream = File.OpenWrite(path))
{
bitmap.Encode(SKEncodedImageFormat.Png, 100).SaveTo(stream);
}
}
private async void btnSaveSVG_Click(object sender, RoutedEventArgs e)
{
if (Image == null)
return;
var sp = GlobalValues.StorageProvider;
if (sp is null) return;
var result = await sp.SaveFilePickerAsync(new FilePickerSaveOptions()
{
Title = "保存SVG",
DefaultExtension = "svg"
});
if (result == null) return;
string temp = result.Path.LocalPath;
System.IO.File.WriteAllText(temp, svg, Encoding.UTF8);
}
private void TextBox_KeyDown(object? sender, Avalonia.Input.KeyEventArgs e)
{
if (e.KeyModifiers == Avalonia.Input.KeyModifiers.Control)
{
e.Handled = true;
if (e.Key == Key.LeftCtrl || e.Key == Key.RightCtrl)
{
return;
}
if (e.Key == Key.V)
{
}
return;
}
if (e.Key == Key.Enter)
{
btnGenerate_Click(sender, e);
}
else if (e.KeyModifiers == KeyModifiers.Control && e.Key == Key.S)
{
e.Handled = true;
btnSave_Click(sender, e);
}
}
private void UserControl_KeyDown(object? sender, Avalonia.Input.KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
btnGenerate_Click(sender, e);
}
else if (e.KeyModifiers == KeyModifiers.Control && e.Key == Key.C)
{
e.Handled = true;
if (Image == null)
return;
byte[] bytes = null;
using (MemoryStream stream = new MemoryStream())
{
Image.Encode(SKEncodedImageFormat.Png, 100).SaveTo(stream);
bytes = stream.ToArray();
}
DataObject clipboardData = new DataObject();
clipboardData.Set(DataFormats.Files, BitmapToBitmapImage(Image));
GlobalValues.Clipboard.SetDataObjectAsync(clipboardData);
}
else if (e.KeyModifiers == KeyModifiers.Control && e.Key == Key.S)
{
e.Handled = true;
btnSave_Click(sender, e);
}
}
}

View File

@@ -0,0 +1,22 @@
<UserControl xmlns="https://github.com/avaloniaui"
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:vm="clr-namespace:常用工具集.ViewModel._03图片相关"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="常用工具集.二维码条形码解析"
x:CompileBindings="True"
x:DataType="vm:二维码条形码解析ViewModel">
<UserControl.DataContext>
<vm:二维码条形码解析ViewModel/>
</UserControl.DataContext>
<Grid>
<TextBlock Text="图片文件:" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="30,33,0,0" />
<TextBox Text="{Binding ImagePath}" Height="30" HorizontalAlignment="Left" Margin="110,27,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="275" />
<Button Content="选择" Command="{Binding SelectPathCmd}" HorizontalAlignment="Left" Margin="390,27,0,0" VerticalAlignment="Top" Width="76" />
<Button Content="解析" Command="{Binding GetResultCmd}" HorizontalAlignment="Left" Margin="150,72,0,0" VerticalAlignment="Top" Width="76" />
<TextBlock Text="结果:" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="50,136,0,0" />
<TextBox Text="{Binding Result}" Height="200" HorizontalContentAlignment="Left" VerticalContentAlignment="Top" HorizontalAlignment="Left" Margin="130,130,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="255" />
</Grid>
</UserControl>

View File

@@ -0,0 +1,13 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ;
public partial class : UserControl
{
public ()
{
InitializeComponent();
}
}

View File

@@ -0,0 +1,24 @@
<UserControl xmlns="https://github.com/avaloniaui"
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"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
xmlns:vm ="clr-namespace:常用工具集.ViewModel._03图片相关"
x:Class="常用工具集.图片转ICO"
x:CompileBindings="True"
x:DataType="vm:图片转ICOViewModel">
<UserControl.DataContext>
<vm:图片转ICOViewModel />
</UserControl.DataContext>
<Grid>
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Text="请选择图片:" Margin="40,56,0,0" />
<TextBox HorizontalAlignment="Left" Margin="120,50,0,0" TextWrapping="Wrap" Text="{Binding ImagePath}" VerticalAlignment="Top" Width="420" />
<Button Content="选择图片" Command="{Binding SelectImageCmd}" HorizontalAlignment="Left" Margin="550,50,0,0" VerticalAlignment="Top" />
<Image Source="{Binding ImageSource}" HorizontalAlignment="Left" Height="350" Margin="140,83,0,0" VerticalAlignment="Top" Width="350" />
<Button Content="16*16" Width="80" Command="{Binding ExportCmd}" CommandParameter="16" HorizontalAlignment="Left" Margin="40,455,0,0" VerticalAlignment="Top" />
<Button Content="32*32" Width="80" Command="{Binding ExportCmd}" CommandParameter="32" HorizontalAlignment="Left" Margin="150,455,0,0" VerticalAlignment="Top" />
<Button Content="64*64" Width="80" Command="{Binding ExportCmd}" CommandParameter="64" HorizontalAlignment="Left" Margin="262,455,0,0" VerticalAlignment="Top" />
<Button Content="128*128" Width="80" Command="{Binding ExportCmd}" CommandParameter="128" HorizontalAlignment="Left" Margin="375,455,0,0" VerticalAlignment="Top" />
<Button Content="255*255" Width="80" Command="{Binding ExportCmd}" CommandParameter="255" HorizontalAlignment="Left" Margin="495,455,0,0" VerticalAlignment="Top" />
</Grid>
</UserControl>

View File

@@ -0,0 +1,13 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ;
public partial class ICO : UserControl
{
public ICO()
{
InitializeComponent();
}
}

View File

@@ -0,0 +1,25 @@
<UserControl xmlns="https://github.com/avaloniaui"
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"
mc:Ignorable="d" d:DesignHeight="660" d:DesignWidth="715"
x:Class="常用工具集.导航二维码生成">
<Grid>
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Text="二维码值:" Margin="10,16,0,0" />
<TextBox Name="textBox1" HorizontalAlignment="Left" Margin="75,10,0,0" TextWrapping="Wrap" Text="2" VerticalAlignment="Top" Width="35" />
<Button Name="button1" Click="button1_Click" Content="单个生成" HorizontalAlignment="Left" Margin="135,10,0,0" VerticalAlignment="Top" />
<TextBox Name="textBox2" HorizontalAlignment="Left" Margin="230,10,0,0" TextWrapping="Wrap" Text="1" VerticalAlignment="Top" Width="45" />
<TextBlock HorizontalAlignment="Left" Margin="275,16,0,0" TextWrapping="Wrap" Text="~" VerticalAlignment="Top" Width="10" />
<TextBox Name="textBox3" HorizontalAlignment="Left" Margin="290,10,0,0" TextWrapping="Wrap" Text="255" VerticalAlignment="Top" Width="45" />
<Button Name="button2" Click="button2_Click" Content="批量生成" HorizontalAlignment="Left" Margin="335,10,0,0" VerticalAlignment="Top" />
<CheckBox Name="uiCheckBox1" IsChecked="True" Content="A4" Margin="410,14,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Height="25" />
<RadioButton Name="uiRadioButton1" Height="20" Content="倍加福" IsChecked="True" HorizontalAlignment="Left" Margin="60,55,0,0" VerticalAlignment="Top"/>
<RadioButton Name="uiRadioButton2" Height="20" Content="大华" IsChecked="False" HorizontalAlignment="Left" Margin="147,55,0,0" VerticalAlignment="Top"/>
<TextBlock HorizontalAlignment="Left" Margin="275,58,0,0" TextWrapping="Wrap" Text="线程数" VerticalAlignment="Top" Width="45" />
<NumericUpDown Name="threadCountUpDown" Increment="1" Value="5" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="320,51,0,0" Width="115" Maximum="10" Minimum="1" />
<Image x:Name="pictureBox1" HorizontalAlignment="Left" Height="350" Margin="35,110,0,0" VerticalAlignment="Top" Width="350" />
</Grid>
</UserControl>

View File

@@ -0,0 +1,940 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading;
using Avalonia.Controls;
using Avalonia.Controls.Shapes;
using Avalonia.Interactivity;
using Avalonia.Media.Imaging;
using Avalonia.Platform;
using Avalonia.Platform.Storage;
using Avalonia.Threading;
using SkiaSharp;
using Ursa.Controls;
using .Base;
using .Utility.Qrcode;
namespace
{
public partial class : UserControl
{
private static int every = 16;
private object _obj = new object();
private bool flag;
private int totalCount;
private Queue<string> qrcodeList;
SKBitmap background;
SKBitmap left;
SKBitmap down;
public ()
{
InitializeComponent();
background = GetResource("background");
left = GetResource("left");
down = GetResource("down");
}
private SKBitmap GetResource(string name)
{
// 获取Pack URI
string packUri = $"avares://常用工具集/Assets/Navi/{name}.png";
Stream stream = AssetLoader.Open(new Uri(packUri));
return SKBitmap.Decode(stream);
}
private async void button1_Click(object sender, RoutedEventArgs e)
{
string text = this.textBox1.Text.Trim();
int num;
bool flag = int.TryParse(text, out num);
SKBitmap bitmap = null;
if (!flag)
{
await MessageBox.ShowAsync("请输入数字");
return;
}
if (uiRadioButton1.IsChecked.Value)
{
if (num < 0 || num > 99999999)
{
await MessageBox.ShowAsync("数据只能在0~99999999之间");
return;
}
bitmap = this.GetBeiJiaFuDataMatrixImage2(num.ToString().PadLeft(8, '0'));
}
if (uiRadioButton2.IsChecked.Value)
{
if (num < 0 || num > 9999999)
{
MessageBox.ShowAsync("数据只能在0~9999999之间");
return;
}
bitmap = this.GetHaiKangDataMatrixImage2(num.ToString().PadLeft(7, '0'));
}
if (bitmap == null)
{
GlobalValues.Error("生成失败");
return;
}
this.pictureBox1.Source = BitmapToBitmapImage(bitmap);
var sp = GlobalValues.StorageProvider;
if (sp is null) return;
var result = await sp.OpenFolderPickerAsync(new FolderPickerOpenOptions()
{
Title = "请选择要生成的目录",
AllowMultiple = false,
});
if (result == null || result.Count == 0)
{
await MessageBox.ShowAsync("文件夹路径不能为空");
return;
}
string str2 = result.FirstOrDefault()?.Path.LocalPath;
if (!str2.EndsWith("/"))
{
str2 += "/";
}
string path = str2 + text + ".png";
if (File.Exists(path))
{
File.Delete(path);
}
Save(path, bitmap);
GlobalValues.Success("保存成功");
}
private Bitmap BitmapToBitmapImage(SKBitmap skBitmap)
{
byte[] bytes = null;
using (MemoryStream stream = new MemoryStream())
{
skBitmap.Encode(SKEncodedImageFormat.Png, 100).SaveTo(stream);
bytes = stream.ToArray();
}
using (MemoryStream stream = new MemoryStream(bytes))
{
return new Bitmap(stream);
}
}
private async void button2_Click(object sender, RoutedEventArgs e)
{
if (uiRadioButton1.IsChecked.Value)
{
if (button2.Content.ToString() == "批量生成")
{
int start = 0;
int end = 0;
if (!CheckBeiJiaFuNum(ref start, ref end))
{
return;
}
//提示
var sp = GlobalValues.StorageProvider;
if (sp is null) return;
var result = await sp.OpenFolderPickerAsync(new FolderPickerOpenOptions()
{
Title = "请选择要生成的目录",
AllowMultiple = false,
});
if (result == null || result.Count == 0)
{
await MessageBox.ShowAsync("文件夹路径不能为空");
return;
}
string str = result.FirstOrDefault()?.Path.LocalPath;
if (!str.EndsWith("/"))
{
str = str + "/";
}
flag = true;
//开始生成线程
GlobalValues.Warning("正在执行保存操作,这将会比较耗时,请稍等");
GenerateObject obj = new GenerateObject { StartNum = start, EndNum = end, ThreadCount = (int)threadCountUpDown.Value, SavePath = str, IsA4 = uiCheckBox1.IsChecked.Value };
new Thread(GenerateBeiJiaFuFunc).Start(obj);
button2.Content = "停止生成";
}
else
{
flag = false;
button2.Content = "批量生成";
if (qrcodeList != null)
qrcodeList.Clear();
}
}
if (uiRadioButton2.IsChecked.Value)
{
if (button2.Content.ToString() == "批量生成")
{
int start = 0;
int end = 0;
if (!CheckHaiKangNum(ref start, ref end))
{
return;
}
//提示
var sp = GlobalValues.StorageProvider;
if (sp is null) return;
var result = await sp.OpenFolderPickerAsync(new FolderPickerOpenOptions()
{
Title = "请选择要生成的目录",
AllowMultiple = false,
});
if (result == null || result.Count == 0)
{
await MessageBox.ShowAsync("文件夹路径不能为空");
return;
}
string str = result.FirstOrDefault()?.Path.LocalPath;
if (!str.EndsWith("/"))
{
str = str + "/";
}
flag = true;
//开始生成线程
GlobalValues.Warning("正在执行保存操作,这将会比较耗时,请稍等");
GenerateObject obj = new GenerateObject { StartNum = start, EndNum = end, ThreadCount = (int)threadCountUpDown.Value, SavePath = str, IsA4 = uiCheckBox1.IsChecked.Value };
new Thread(GenerateHaiKangFunc).Start(obj);
button2.Content = "停止生成";
}
else
{
flag = false;
button2.Content = "批量生成";
if (qrcodeList != null)
qrcodeList.Clear();
}
}
}
private void GenerateHaiKangFunc(object obj)
{
GenerateObject parm = (GenerateObject)obj;
if (qrcodeList == null)
qrcodeList = new Queue<string>();
qrcodeList.Clear();
if (!parm.IsA4)
{
//普通生成
for (int i = parm.StartNum; i <= parm.EndNum; i++)
{
qrcodeList.Enqueue(i.ToString().PadLeft(7, '0'));
}
totalCount = qrcodeList.Count;
}
else
{
//A4生成
//计算组
int count = (parm.EndNum - parm.StartNum + 1);
int group = 0;
if (count % 12 == 0)
group = count / 12;
else
group = count / 12 + 1;
int num = parm.StartNum;
for (int i = 0; i < (group - 1); i++)
{
int st = num + 12 * i;
int ed = num + 12 * i + 11;
string str = "";
for (int j = st; j <= ed; j++)
{
str = str + j.ToString().PadLeft(7, '0') + ",";
}
str = str.Substring(0, str.Length - 1);
qrcodeList.Enqueue(str);
}
//最后一组开始
int st1 = num + 12 * (group - 1);
int ed1 = parm.EndNum;
string str1 = "";
for (int j = st1; j <= ed1; j++)
{
str1 = str1 + j.ToString().PadLeft(7, '0') + ",";
}
str1 = str1.Substring(0, str1.Length - 1);
qrcodeList.Enqueue(str1);
totalCount = qrcodeList.Count;
}
//根据线程数,创建线程
for (int i = 0; i < parm.ThreadCount; i++)
{
Thread thread = new Thread(GenerateOneHaiKangQrCode);
thread.Start(parm);
}
while (true)
{
if (!flag)
{
break;
}
//判断qrcodeList是否为空
bool isEmpty = false;
lock (_obj)
{
isEmpty = qrcodeList.Count == 0;
}
if (isEmpty && totalCount == 0)
{
Dispatcher.UIThread.Invoke(() =>
{
GlobalValues.Success("保存成功");
});
flag = false;
Dispatcher.UIThread.Invoke(() =>
{
button2.Content = "批量生成";
});
if (qrcodeList != null)
qrcodeList.Clear();
break;
}
}
}
private void GenerateOneHaiKangQrCode(object obj)
{
GenerateObject parm = (GenerateObject)obj;
while (flag)
{
try
{
//从list中取出一个
bool isEmpty;
string txt = "";
lock (_obj)
{
isEmpty = qrcodeList.Count == 0;
if (!isEmpty)
{
txt = qrcodeList.Dequeue();
}
}
if (isEmpty)
return;
List<string> everyQrcode = txt.Split(',').ToList();
if (parm.IsA4)
{
CreateHaiKangA4AndSave(everyQrcode, parm.SavePath);
lock (_obj)
{
totalCount--;
}
}
else
{
string path = parm.SavePath + everyQrcode[0] + ".png";
if (File.Exists(path))
{
File.Delete(path);
}
SKBitmap bitmap = this.GetHaiKangDataMatrixImage2(everyQrcode[0]);
Save(path, bitmap);
bitmap.Dispose();
bitmap = null;
lock (_obj)
{
totalCount--;
}
}
}
catch { }
}
}
private void Save(string path, SKBitmap bitmap)
{
using (var stream = File.OpenWrite(path))
{
bitmap.Encode(SKEncodedImageFormat.Png, 100).SaveTo(stream);
}
}
private bool CheckHaiKangNum(ref int start, ref int end)
{
int startNum = 0;
int endNum = 0;
try
{
startNum = Convert.ToInt32(this.textBox2.Text.Trim());
}
catch (Exception)
{
MessageBox.ShowAsync("开始数据只能为整数");
return false;
}
try
{
endNum = Convert.ToInt32(this.textBox3.Text.Trim());
}
catch (Exception)
{
MessageBox.ShowAsync("结束数据只能为整数");
return false;
}
if (startNum > 9999999)
{
MessageBox.ShowAsync("开始数据不能超过9999999");
return false;
}
if (endNum > 9999999)
{
MessageBox.ShowAsync("结束数据不能超过9999999");
return false;
}
if (startNum > endNum)
{
MessageBox.ShowAsync("开始数据不能大于结束数据");
return false;
}
start = startNum;
end = endNum;
return true;
}
private void CreateHaiKangA4AndSave(List<string> everyQrcode, string savaPath)
{
string path = "";
if (everyQrcode.Count == 1)
{
path = savaPath + everyQrcode[0] + ".png";
}
else
{
path = savaPath + Convert.ToInt32(everyQrcode[0]) + "_" + Convert.ToInt32(everyQrcode[everyQrcode.Count - 1]) + ".png";
}
if (File.Exists(path))
{
File.Delete(path);
}
//创建一张A4纸
SKBitmap a4 = new SKBitmap(2480, 3508);
SKCanvas graphics = new SKCanvas(a4);
//循环生成start 到end的单个文件
int index = 1;
foreach (string text in everyQrcode)
{
SKBitmap bitmap = this.GetHaiKangDataMatrixImage2(text);
if (index == 1)
{
graphics.DrawBitmap(bitmap, 170 + 730 * 0, 200 + 790 * 0);
}
else if (index == 2)
{
graphics.DrawBitmap(bitmap, 170 + 730 * 1, 200 + 790 * 0);
}
else if (index == 3)
{
graphics.DrawBitmap(bitmap, 170 + 730 * 2, 200 + 790 * 0);
}
else if (index == 4)
{
graphics.DrawBitmap(bitmap, 170 + 730 * 0, 200 + 790 * 1);
}
else if (index == 5)
{
graphics.DrawBitmap(bitmap, 170 + 730 * 1, 200 + 790 * 1);
}
else if (index == 6)
{
graphics.DrawBitmap(bitmap, 170 + 730 * 2, 200 + 790 * 1);
}
else if (index == 7)
{
graphics.DrawBitmap(bitmap, 170 + 730 * 0, 200 + 790 * 2);
}
else if (index == 8)
{
graphics.DrawBitmap(bitmap, 170 + 730 * 1, 200 + 790 * 2);
}
else if (index == 9)
{
graphics.DrawBitmap(bitmap, 170 + 730 * 2, 200 + 790 * 2);
}
else if (index == 10)
{
graphics.DrawBitmap(bitmap, 170 + 730 * 0, 200 + 790 * 3);
}
else if (index == 11)
{
graphics.DrawBitmap(bitmap, 170 + 730 * 1, 200 + 790 * 3);
}
else if (index == 12)
{
graphics.DrawBitmap(bitmap, 170 + 730 * 2, 200 + 790 * 3);
}
bitmap.Dispose();
bitmap = null;
index++;
}
//保存A4纸
//清内存
graphics.Flush();
graphics.Dispose();
Save(path, a4);
a4.Dispose();
a4 = null;
GC.Collect();
}
private SKBitmap GetHaiKangDataMatrixImage2(string text)
{
SKBitmap bitmap = new SKBitmap(700, 733);
SKCanvas graphics = new SKCanvas(bitmap);
graphics.DrawBitmap(background, new SKRect(0, 0, 700, 733));
//在周围画上一圈虚线
var pen = new SKPaint
{
IsAntialias = true,
Style = SKPaintStyle.Stroke,
Color = SKColors.Black,
StrokeWidth = 2,
PathEffect = SKPathEffect.CreateDash(new float[] { 11F, 5.5F }, 0)
};
#region 线
//最上面的虚线
graphics.DrawLine(0, 0, 700, 0, pen);
//左边的虚线
graphics.DrawLine(0, 0, 0, 733, pen);
//右边
graphics.DrawLine(700, 0, 700, 700, pen);
//下边
graphics.DrawLine(0, 733, 700, 733, pen);
#endregion
SKBitmap every = GetHaiKangDataMatrixImage(text);
graphics.DrawBitmap(every, new SKRect(225, 220, 225 + 246, 220 + 246));
var brush = new SKPaint
{
Color = SKColors.Black,
IsAntialias = true,
Style = SKPaintStyle.Fill
};
graphics.DrawText(text, new SKPoint(410f, 640f), new SKFont
{
Size = 16f,
Typeface = SKTypeface.FromFamilyName("Arial", SKFontStyle.Bold)
}, brush);
every.Dispose();
graphics.Flush();
graphics.Dispose();
return bitmap;
}
public SKBitmap GetHaiKangDataMatrixImage(string data)
{
return DataMatrixUtils.EncodeDataMatrix(DmtxSymbolSize.DmtxSymbol14x14, data, 280, out string svg);
}
private void GenerateBeiJiaFuFunc(object obj)
{
GenerateObject parm = (GenerateObject)obj;
if (qrcodeList == null)
qrcodeList = new Queue<string>();
qrcodeList.Clear();
if (!parm.IsA4)
{
//普通生成
for (int i = parm.StartNum; i <= parm.EndNum; i++)
{
qrcodeList.Enqueue(i.ToString().PadLeft(8, '0'));
}
totalCount = qrcodeList.Count;
}
else
{
//A4生成
//计算组
int count = (parm.EndNum - parm.StartNum + 1);
int group = 0;
if (count % 6 == 0)
group = count / 6;
else
group = count / 6 + 1;
int num = parm.StartNum;
for (int i = 0; i < (group - 1); i++)
{
int st = num + 6 * i;
int ed = num + 6 * i + 5;
string str = "";
for (int j = st; j <= ed; j++)
{
str = str + j.ToString().PadLeft(8, '0') + ",";
}
str = str.Substring(0, str.Length - 1);
qrcodeList.Enqueue(str);
}
//最后一组开始
int st1 = num + 6 * (group - 1);
int ed1 = parm.EndNum;
string str1 = "";
for (int j = st1; j <= ed1; j++)
{
str1 = str1 + j.ToString().PadLeft(8, '0') + ",";
}
str1 = str1.Substring(0, str1.Length - 1);
qrcodeList.Enqueue(str1);
totalCount = qrcodeList.Count;
}
//根据线程数,创建线程
for (int i = 0; i < parm.ThreadCount; i++)
{
Thread thread = new Thread(GenerateOneBeiJiaFuQrCode);
thread.Start(parm);
}
while (true)
{
if (!flag)
{
break;
}
//判断qrcodeList是否为空
bool isEmpty = false;
lock (_obj)
{
isEmpty = qrcodeList.Count == 0;
}
if (isEmpty && totalCount == 0)
{
Dispatcher.UIThread.Invoke(() => { GlobalValues.Success("保存成功"); });
flag = false;
Dispatcher.UIThread.Invoke(() => { button2.Content = "批量生成"; });
if (qrcodeList != null)
qrcodeList.Clear();
break;
}
}
}
private void GenerateOneBeiJiaFuQrCode(object obj)
{
GenerateObject parm = (GenerateObject)obj;
while (flag)
{
try
{
//从list中取出一个
bool isEmpty;
string txt = "";
lock (_obj)
{
isEmpty = qrcodeList.Count == 0;
if (!isEmpty)
{
txt = qrcodeList.Dequeue();
}
}
if (isEmpty)
return;
List<string> everyQrcode = txt.Split(',').ToList();
if (parm.IsA4)
{
CreateBeiJiaFuA4AndSave(everyQrcode, parm.SavePath);
lock (_obj)
{
totalCount--;
}
}
else
{
string path = parm.SavePath + everyQrcode[0] + ".png";
if (File.Exists(path))
{
File.Delete(path);
}
SKBitmap bitmap = this.GetBeiJiaFuDataMatrixImage2(everyQrcode[0]);
Save(path, bitmap);
bitmap.Dispose();
bitmap = null;
lock (_obj)
{
totalCount--;
}
}
}
catch { }
}
}
private bool CheckBeiJiaFuNum(ref int start, ref int end)
{
int startNum = 0;
int endNum = 0;
try
{
startNum = Convert.ToInt32(this.textBox2.Text.Trim());
}
catch (Exception)
{
MessageBox.ShowAsync("开始数据只能为整数");
return false;
}
try
{
endNum = Convert.ToInt32(this.textBox3.Text.Trim());
}
catch (Exception)
{
MessageBox.ShowAsync("结束数据只能为整数");
return false;
}
if (startNum > 99999999)
{
MessageBox.ShowAsync("开始数据不能超过99999999");
return false;
}
if (endNum > 99999999)
{
MessageBox.ShowAsync("结束数据不能超过99999999");
return false;
}
if (startNum > endNum)
{
MessageBox.ShowAsync("开始数据不能大于结束数据");
return false;
}
start = startNum;
end = endNum;
return true;
}
private void CreateBeiJiaFuA4AndSave(List<string> everyQrcode, string savaPath)
{
string path = "";
if (everyQrcode.Count == 1)
{
path = savaPath + everyQrcode[0] + ".png";
}
else
{
path = savaPath + Convert.ToInt32(everyQrcode[0]) + "_" + Convert.ToInt32(everyQrcode[everyQrcode.Count - 1]) + ".png";
}
if (File.Exists(path))
{
File.Delete(path);
}
//创建一张A4纸
SKBitmap a4 = new SKBitmap(2480, 3508);
SKCanvas graphics = new SKCanvas(a4);
//循环生成start 到end的单个文件
int index = 1;
foreach (string text in everyQrcode)
{
SKBitmap bitmap = this.GetBeiJiaFuDataMatrixImage2(text);
if (index == 1)
{
graphics.DrawBitmap(bitmap, 200, 170);
}
else if (index == 2)
{
graphics.DrawBitmap(bitmap, 1300, 170);
}
else if (index == 3)
{
graphics.DrawBitmap(bitmap, 200, 1270);
}
else if (index == 4)
{
graphics.DrawBitmap(bitmap, 1300, 1270);
}
else if (index == 5)
{
graphics.DrawBitmap(bitmap, 200, 2370);
}
else if (index == 6)
{
graphics.DrawBitmap(bitmap, 1300, 2370);
}
bitmap.Dispose();
bitmap = null;
index++;
}
//保存A4纸
graphics.Dispose();
Save(path, a4);
a4.Dispose();
a4 = null;
GC.Collect();
}
public SKBitmap GetBeiJiaFuDataMatrixImage(string data)
{
return DataMatrixUtils.EncodeDataMatrix(DmtxSymbolSize.DmtxSymbol12x12, data, 240, out string svg);
}
public SKBitmap GetBeiJiaFuDataMatrixImage2(string text)
{
List<string> list = new List<string>();
for (int i = 3; i <= 6; i++)
{
for (int j = 3; j <= 6; j++)
{
string item = string.Format("{0}{1}{2}", j, 9 - i, text);
list.Add(item);
}
}
List<SKBitmap> list2 = new List<SKBitmap>();
foreach (string str2 in list)
{
list2.Add(this.GetBeiJiaFuDataMatrixImage(str2));
}
//生成的图片大小
SKBitmap image = new SKBitmap(1360 + 4, 1360 + 4);
SKCanvas graphics = new SKCanvas(image);
//在周围画上一圈虚线
var paint = new SKPaint
{
IsAntialias = true,
Style = SKPaintStyle.Stroke,
Color = SKColors.Black,
StrokeWidth = 5,
PathEffect = SKPathEffect.CreateDash(new float[] { 11F, 5.5F }, 0)
};
#region 线
//最上面的虚线
graphics.DrawLine(0, 0, 1364, 0, paint);
//左边的虚线
graphics.DrawLine(0, 0, 0, 1364, paint);
//右边
graphics.DrawLine(1362, 0, 1362, 1362, paint);
//下边
graphics.DrawLine(0, 1362, 1362, 1362, paint);
#endregion
//graphics.FillRectangle(brush, 0, 0, 4, 0x5a8);
//graphics.FillRectangle(brush, 0, 0, 0x5a8, 4);
//graphics.FillRectangle(brush, 0x5a4, 0, 0x5a8, 0x5a8);
//graphics.FillRectangle(brush, 0, 0x5a4, 0x5a8, 0x5a8);
#region 16
//第一行
graphics.DrawBitmap(list2[0], 5 * every + 2, 5 * every + 2);
graphics.DrawBitmap(list2[1], 25 * every + 2, 5 * every + 2);
graphics.DrawBitmap(list2[2], 45 * every + 2, 5 * every + 2);
graphics.DrawBitmap(list2[3], 65 * every + 2, 5 * every + 2);
//第二行
graphics.DrawBitmap(list2[4], 5 * every + 2, 25 * every + 2);
graphics.DrawBitmap(list2[5], 25 * every + 2, 25 * every + 2);
graphics.DrawBitmap(list2[6], 45 * every + 2, 25 * every + 2);
graphics.DrawBitmap(list2[7], 65 * every + 2, 25 * every + 2);
//第三行
graphics.DrawBitmap(list2[8], 5 * every + 2, 45 * every + 2);
graphics.DrawBitmap(list2[9], 25 * every + 2, 45 * every + 2);
graphics.DrawBitmap(list2[10], 45 * every + 2, 45 * every + 2);
graphics.DrawBitmap(list2[11], 65 * every + 2, 45 * every + 2);
//第四行
graphics.DrawBitmap(list2[12], 5 * every + 2, 65 * every + 2);
graphics.DrawBitmap(list2[13], 25 * every + 2, 65 * every + 2);
graphics.DrawBitmap(list2[14], 45 * every + 2, 65 * every + 2);
graphics.DrawBitmap(list2[15], 65 * every + 2, 65 * every + 2);
#endregion
#region
var brush = new SKPaint
{
Color = SKColors.Black,
IsAntialias = true,
Style = SKPaintStyle.Fill
};
//上三角
SKPath path1 = new SKPath();
path1.MoveTo(40 * every + 2, 9 * every / 4 + 2);
path1.LineTo(40 * every + 9 * every / 4 + 2, 9 * every / 4 + 2);
path1.LineTo(40 * every + 9 * every / 4 + 2, 2);
graphics.DrawPath(path1, brush);
SKPath path2 = new SKPath();
path2.MoveTo(40 * every + 9 * every / 4 + 2 + every / 2, 9 * every / 4 + 2);
path2.LineTo(40 * every + 9 * every / 4 + 2 + every / 2, 2);
path2.LineTo(45 * every + 2, 9 * every / 4 + 2);
graphics.DrawPath(path2, brush);
#endregion
#region
//右三角
SKPath path3 = new SKPath();
path3.MoveTo(1364 - (9 * every / 4 + 2), 40 * every + 2);
path3.LineTo(1364 - (9 * every / 4 + 2), 40 * every + 9 * every / 4 + 2);
path3.LineTo(1364 - 2, 40 * every + 9 * every / 4 + 2);
graphics.DrawPath(path3, brush);
SKPath path4 = new SKPath();
path4.MoveTo(1364 - (9 * every / 4 + 2), 40 * every + 9 * every / 4 + 2 + every / 2);
path4.LineTo(1364 - 2, 40 * every + 9 * every / 4 + 2 + every / 2);
path4.LineTo(1364 - (9 * every / 4 + 2), 45 * every + 2);
graphics.DrawPath(path4, brush);
#endregion
#region
graphics.DrawBitmap(left, new SKRect(2, 40 * every + 2, 2 + 9 * every / 4, 40 * every + 2 + 5 * every));
graphics.DrawBitmap(down, new SKRect(40 * every + 2, 1364 - 2 - 9 * every / 4, 40 * every + 2 + 5 * every, 1364 - 2 - 9 * every / 4 + 9 * every / 4));
#endregion
#region
graphics.DrawRect(40 * every + 2 - 4, 40 * every + 9 * every / 4 + 2, 5 * every + 8, 8, brush);
graphics.DrawRect(40 * every + 9 * every / 4 + 2, 40 * every + 2 - 4, 8, 5 * every + 8, brush);
#endregion
#region X Y
graphics.DrawText("Y", new SKPoint(580f, 50f), SKTextAlign.Center, new SKFont
{
Size = 50f,
Typeface = SKTypeface.FromFamilyName("Arial", SKFontStyle.Bold)
}, brush);
graphics.DrawText("X", new SKPoint(1340f, 560f), SKTextAlign.Center, new SKFont
{
Size = 50f,
Typeface = SKTypeface.FromFamilyName("Arial", SKFontStyle.Bold)
}, brush);
text = ("TAG " + text).Insert(6, " ").Insert(10, " ");
graphics.DrawText(text, new SKPoint(850f, 39f), SKTextAlign.Center, new SKFont
{
Size = 35f,
Typeface = SKTypeface.FromFamilyName("Arial", SKFontStyle.Bold)
}, brush);
#endregion
graphics.Flush();
graphics.Dispose();
foreach (SKBitmap bitmap2 in list2)
{
bitmap2.Dispose();
}
list2 = null;
GC.Collect();
////去除白色,将白色转成透明
//image.MakeTransparent(System.Drawing.Color.White);
////将image转换为8.5cm * 8.5cm(1004px) dpi改成300像素/英寸
SKBitmap bitmap = new SKBitmap(1004, 1004);
using (SKCanvas canvas = new SKCanvas(bitmap))
{
canvas.DrawBitmap(image, new SKRect(0, 0, 1004, 1004));
}
//bitmap.SetResolution(300, 300);
//return bitmap;
return bitmap;
}
}
public class GenerateObject
{
public int StartNum { get; set; }
public int EndNum { get; set; }
public int ThreadCount { get; set; }
public string SavePath { get; set; }
public bool IsA4 { get; set; }
}
}

View File

@@ -0,0 +1,66 @@
<UserControl xmlns="https://github.com/avaloniaui"
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"
mc:Ignorable="d" Height="660" Width="815"
xmlns:vm ="clr-namespace:常用工具集.ViewModel._03图片相关"
x:Class="常用工具集.色卡包"
x:CompileBindings="True"
x:DataType="vm:色卡包ViewModel">
<UserControl.DataContext>
<vm:色卡包ViewModel />
</UserControl.DataContext>
<Grid ColumnDefinitions="2*,3*">
<Grid Grid.Column="0" ColumnDefinitions="*,*,*,*" RowDefinitions="*,*,*,*,*,*,*,*,*,*,*,*,*,*,*">
<Button Grid.Row="0" Grid.Column="0" CornerRadius="10" Content="钴蓝" Command="{Binding ButtonCmd}" CommandParameter="钴蓝" Width="80" Height="30" Background="#569DD9" Foreground="White" />
<Button Grid.Row="1" Grid.Column="0" CornerRadius="10" Content="琉璃色" Command="{Binding ButtonCmd}" CommandParameter="琉璃色" Width="80" Height="30" Background="#1D50A2" Foreground="White"/>
<Button Grid.Row="2" Grid.Column="0" CornerRadius="10" Content="浓蓝" Command="{Binding ButtonCmd}" CommandParameter="浓蓝" Width="80" Height="30" Background="#005977" Foreground="White"/>
<Button Grid.Row="3" Grid.Column="0" CornerRadius="10" Content="青金石" Command="{Binding ButtonCmd}" CommandParameter="青金石" Width="80" Height="30" Background="#134098" Foreground="White"/>
<Button Grid.Row="4" Grid.Column="0" CornerRadius="10" Content="深青灰" Command="{Binding ButtonCmd}" CommandParameter="深青灰" Width="80" Height="30" Background="#005178" Foreground="White"/>
<Button Grid.Row="5" Grid.Column="0" CornerRadius="10" Content="绯红" Command="{Binding ButtonCmd}" CommandParameter="绯红" Width="80" Height="30" Background="#E72520" Foreground="White"/>
<Button Grid.Row="6" Grid.Column="0" CornerRadius="10" Content="桃色" Command="{Binding ButtonCmd}" CommandParameter="桃色" Width="80" Height="30" Background="#DE7896" Foreground="White"/>
<Button Grid.Row="7" Grid.Column="0" CornerRadius="10" Content="正红" Command="{Binding ButtonCmd}" CommandParameter="正红" Width="80" Height="30" Background="#D8210D" Foreground="White"/>
<Button Grid.Row="8" Grid.Column="0" CornerRadius="10" Content="黄橙色" Command="{Binding ButtonCmd}" CommandParameter="黄橙色" Width="80" Height="30" Background="#E7A53B" Foreground="White"/>
<Button Grid.Row="9" Grid.Column="0" CornerRadius="10" Content="橘红色" Command="{Binding ButtonCmd}" CommandParameter="橘红色" Width="80" Height="30" Background="#ED6D00" Foreground="White"/>
<Button Grid.Row="10" Grid.Column="0" CornerRadius="10" Content="太阳橙" Command="{Binding ButtonCmd}" CommandParameter="太阳橙" Width="80" Height="30" Background="#F18D00" Foreground="White"/>
<Button Grid.Row="11" Grid.Column="0" CornerRadius="10" Content="酒红" Command="{Binding ButtonCmd}" CommandParameter="酒红" Width="80" Height="30" Background="#B5003E" Foreground="White"/>
<Button Grid.Row="12" Grid.Column="0" CornerRadius="10" Content="牡丹红" Command="{Binding ButtonCmd}" CommandParameter="牡丹红" Width="80" Height="30" Background="#F1006F" Foreground="White"/>
<Button Grid.Row="13" Grid.Column="0" CornerRadius="10" Content="蔷薇色" Command="{Binding ButtonCmd}" CommandParameter="蔷薇色" Width="80" Height="30" Background="#D7003F" Foreground="White"/>
<Button Grid.Row="14" Grid.Column="0" CornerRadius="10" Content="洋红" Command="{Binding ButtonCmd}" CommandParameter="洋红" Width="80" Height="30" Background="#E61C64" Foreground="White"/>
<Button Grid.Row="0" Grid.Column="1" CornerRadius="10" Content="梨色" Command="{Binding ButtonCmd}" CommandParameter="梨色" Width="80" Height="30" Background="#FCDDAE" Foreground="White"/>
<Button Grid.Row="1" Grid.Column="1" CornerRadius="10" Content="麦色" Command="{Binding ButtonCmd}" CommandParameter="麦色" Width="80" Height="30" Background="#CDB081" Foreground="White"/>
<Button Grid.Row="2" Grid.Column="1" CornerRadius="10" Content="椰棕色" Command="{Binding ButtonCmd}" CommandParameter="椰棕色" Width="80" Height="30" Background="#7A4817" Foreground="White"/>
<Button Grid.Row="3" Grid.Column="1" CornerRadius="10" Content="草绿" Command="{Binding ButtonCmd}" CommandParameter="草绿" Width="80" Height="30" Background="#A9C368" Foreground="White"/>
<Button Grid.Row="4" Grid.Column="1" CornerRadius="10" Content="浅绿" Command="{Binding ButtonCmd}" CommandParameter="浅绿" Width="80" Height="30" Background="#CCE198" Foreground="White"/>
<Button Grid.Row="5" Grid.Column="1" CornerRadius="10" Content="闪光绿" Command="{Binding ButtonCmd}" CommandParameter="闪光绿" Width="80" Height="30" Background="#D9E480" Foreground="Red"/>
<Button Grid.Row="6" Grid.Column="1" CornerRadius="10" Content="贝色" Command="{Binding ButtonCmd}" CommandParameter="贝色" Width="80" Height="30" Background="#FCFBF4" Foreground="Red"/>
<Button Grid.Row="7" Grid.Column="1" CornerRadius="10" Content="黑灰" Command="{Binding ButtonCmd}" CommandParameter="黑灰" Width="80" Height="30" Background="#534A46" Foreground="White"/>
<Button Grid.Row="8" Grid.Column="1" CornerRadius="10" Content="鸠羽灰" Command="{Binding ButtonCmd}" CommandParameter="鸠羽灰" Width="80" Height="30" Background="#9E8B8E" Foreground="White"/>
<Button Grid.Row="9" Grid.Column="1" CornerRadius="10" Content="浅灰" Command="{Binding ButtonCmd}" CommandParameter="浅灰" Width="80" Height="30" Background="#9F9FA0" Foreground="White"/>
<Button Grid.Row="10" Grid.Column="1" CornerRadius="10" Content="濡雨色" Command="{Binding ButtonCmd}" CommandParameter="濡雨色" Width="80" Height="30" Background="#000A00" Foreground="White"/>
<Button Grid.Row="11" Grid.Column="1" CornerRadius="10" Content="古代紫" Command="{Binding ButtonCmd}" CommandParameter="古代紫" Width="80" Height="30" Background="#D0ABBF" Foreground="White"/>
<Button Grid.Row="12" Grid.Column="1" CornerRadius="10" Content="青紫色" Command="{Binding ButtonCmd}" CommandParameter="青紫色" Width="80" Height="30" Background="#775F9F" Foreground="White"/>
<Button Grid.Row="13" Grid.Column="1" CornerRadius="10" Content="薰衣草" Command="{Binding ButtonCmd}" CommandParameter="薰衣草" Width="80" Height="30" Background="#D4C4DB" Foreground="White"/>
<Button Grid.Row="14" Grid.Column="1" CornerRadius="10" Content="紫色" Command="{Binding ButtonCmd}" CommandParameter="紫色" Width="80" Height="30" Background="#920783" Foreground="White"/>
<Button Grid.Row="0" Grid.Column="2" CornerRadius="10" Content="紫水晶" Command="{Binding ButtonCmd}" CommandParameter="紫水晶" Width="80" Height="30" Background="#7E4985" Foreground="White"/>
<Button Grid.Row="1" Grid.Column="2" CornerRadius="10" Content="卡机色" Command="{Binding ButtonCmd}" CommandParameter="卡机色" Width="80" Height="30" Background="#B08727" Foreground="White"/>
<Button Grid.Row="2" Grid.Column="2" CornerRadius="10" Content="鲜黄色" Command="{Binding ButtonCmd}" CommandParameter="鲜黄色" Width="80" Height="30" Background="#FFEA00" Foreground="White"/>
<Button Grid.Row="3" Grid.Column="2" CornerRadius="10" Content="月亮黄" Command="{Binding ButtonCmd}" CommandParameter="月亮黄" Width="80" Height="30" Background="#FFED61" Foreground="White"/>
<Button Grid.Row="4" Grid.Column="2" CornerRadius="10" Content="铬绿" Command="{Binding ButtonCmd}" CommandParameter="铬绿" Width="80" Height="30" Background="#6ABD78" Foreground="White"/>
<Button Grid.Row="5" Grid.Column="2" CornerRadius="10" Content="孔雀绿" Command="{Binding ButtonCmd}" CommandParameter="孔雀绿" Width="80" Height="30" Background="#007F77" Foreground="White"/>
<Button Grid.Row="6" Grid.Column="2" CornerRadius="10" Content="墨绿" Command="{Binding ButtonCmd}" CommandParameter="墨绿" Width="80" Height="30" Background="#006450" Foreground="White"/>
<Button Grid.Row="7" Grid.Column="2" CornerRadius="10" Content="青灰绿" Command="{Binding ButtonCmd}" CommandParameter="青灰绿" Width="80" Height="30" Background="#418D6D" Foreground="White"/>
<Button Grid.Row="8" Grid.Column="2" CornerRadius="10" Content="铬黄" Command="{Binding ButtonCmd}" CommandParameter="铬黄" Width="80" Height="30" Background="#FDD000" Foreground="White"/>
<Button Grid.Row="9" Grid.Column="2" CornerRadius="10" Content="芥予色" Command="{Binding ButtonCmd}" CommandParameter="芥予色" Width="80" Height="30" Background="#D6C55F" Foreground="White"/>
<Button Grid.Row="10" Grid.Column="2" CornerRadius="10" Content="那不勒斯黄" Command="{Binding ButtonCmd}" CommandParameter="那不勒斯黄" Width="80" Height="30" Background="#D7CC48" Foreground="White"/>
<Button Grid.Row="11" Grid.Column="2" CornerRadius="10" Content="秋菊黄" Command="{Binding ButtonCmd}" CommandParameter="秋菊黄" Width="80" Height="30" Background="#FFEC94" Foreground="White"/>
<Button Grid.Row="12" Grid.Column="2" CornerRadius="10" Content="地平线" Command="{Binding ButtonCmd}" CommandParameter="地平线" Width="80" Height="30" Background="#B0DCD5" Foreground="White"/>
<Button Grid.Row="13" Grid.Column="2" CornerRadius="10" Content="灰瓷" Command="{Binding ButtonCmd}" CommandParameter="灰瓷" Width="80" Height="30" Background="#AFD3D9" Foreground="White"/>
<Button Grid.Row="14" Grid.Column="2" CornerRadius="10" Content="浓蓝绿" Command="{Binding ButtonCmd}" CommandParameter="浓蓝绿" Width="80" Height="30" Background="#00697F" Foreground="White"/>
<Button Grid.Row="0" Grid.Column="3" CornerRadius="10" Content="深蓝" Command="{Binding ButtonCmd}" CommandParameter="深蓝" Width="80" Height="30" Background="#006296" Foreground="White"/>
</Grid>
<Grid Grid.Column="1">
<Image Source="{Binding ImageSource}" Stretch="Fill"/>
</Grid>
</Grid>
</UserControl>

View File

@@ -0,0 +1,13 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ;
public partial class : UserControl
{
public ()
{
InitializeComponent();
}
}

View File

@@ -0,0 +1,21 @@
<UserControl xmlns="https://github.com/avaloniaui"
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"
mc:Ignorable="d" d:DesignWidth="715" d:DesignHeight="600"
x:Class="常用工具集.AdobeAcrobatXI破解"
xmlns:vm ="clr-namespace:常用工具集.ViewModel._04破解及系统相关"
x:CompileBindings="True"
x:DataType="vm:AdobeAcrobatXI破解ViewModel">
<UserControl.DataContext>
<vm:AdobeAcrobatXI破解ViewModel />
</UserControl.DataContext>
<Grid>
<TextBlock HorizontalAlignment="Left" Margin="10,10,0,0" TextWrapping="Wrap" Text="请先下载安装AdobeAcrobatXI下载路径" Foreground="Red" VerticalAlignment="Top" Width="225" />
<TextBox HorizontalAlignment="Left" Margin="245,4,0,0" TextWrapping="Wrap" Text="https://cloud.189.cn/web/share?code=RrIJbyEriM3e访问码6j8j" VerticalAlignment="Top" Width="440"/>
<TextBlock HorizontalAlignment="Left" Margin="30,101,0,0" Text="安装路径:" VerticalAlignment="Top" Width="245" />
<TextBox HorizontalAlignment="Left" Margin="110,95,0,0" TextWrapping="Wrap" Text="{Binding FilePath}" VerticalAlignment="Top" Width="420" />
<Button Width="120" Content="查找安装目录" Command="{Binding FindPathCmd}" HorizontalAlignment="Left" Margin="115,142,0,0" VerticalAlignment="Top" />
<Button Width="120" Content="一键破解" Command="{Binding CrackCmd}" Margin="280,142,0,0" VerticalAlignment="Top" HorizontalAlignment="Left" />
</Grid>
</UserControl>

View File

@@ -0,0 +1,13 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ;
public partial class AdobeAcrobatXI破解 : UserControl
{
public AdobeAcrobatXI破解()
{
InitializeComponent();
}
}

View File

@@ -0,0 +1,60 @@
<UserControl xmlns="https://github.com/avaloniaui"
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"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="常用工具集.MySQL定时备份"
xmlns:vm ="clr-namespace:常用工具集.ViewModel._04破解及系统相关"
x:CompileBindings="True"
x:DataType="vm:MySQL定时备份ViewModel">
<UserControl.DataContext>
<vm:MySQL定时备份ViewModel />
</UserControl.DataContext>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="20" />
<RowDefinition Height="60" />
<RowDefinition Height="60" />
<RowDefinition Height="60" />
<RowDefinition Height="60" />
<RowDefinition Height="60" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="40" />
</Grid.ColumnDefinitions>
<TextBlock Text="mysqldump所在目录" Grid.Column="0" Grid.Row="1" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,10,0" />
<TextBox Text="{Binding FilePath}" Grid.Column="1" Grid.ColumnSpan="4" Grid.Row="1" VerticalAlignment="Center" HorizontalAlignment="Left" Width="390" Margin="10,0,0,0"/>
<Button Grid.Column="5" Grid.Row="1" Content="查询" HorizontalAlignment="Left" VerticalAlignment="Center" Command="{Binding FindPathCmd}" Margin="10,0,0,0" />
<TextBlock Text="MySQL用户名" Grid.Column="0" Grid.Row="2" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,10,0" />
<TextBox Text="{Binding UserName}" Grid.Column="1" Grid.Row="2" VerticalAlignment="Center" HorizontalAlignment="Center" Width="99" />
<TextBlock Text="MySQL密码" Grid.Column="2" Grid.Row="2" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,10,0"/>
<TextBox Text="{Binding Password}" Grid.Column="3" Grid.Row="2" VerticalAlignment="Center" HorizontalAlignment="Center" Width="99" />
<TextBlock Text="需要备份的库" Grid.Column="4" Grid.Row="2" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,10,0" />
<TextBox Text="{Binding DatabaseName}" Grid.Column="5" Grid.Row="2" VerticalAlignment="Center" HorizontalAlignment="Center" Width="99" />
<TextBlock Text="每天几点钟开始备份" Grid.Column="0" Grid.Row="3" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,10,0" />
<TimePicker UseSeconds="True" SelectedTime="{Binding SelectedTime}" Grid.Column="1" Grid.Row="3" Grid.ColumnSpan="2" HorizontalAlignment="Center" VerticalAlignment="Center" Width="250"/>
<!--<hc:TimePicker SelectedTime="{Binding SelectedTime}" Grid.Column="1" Grid.Row="3" HorizontalAlignment="Center" VerticalAlignment="Center" Width="99" Style="{StaticResource TimePickerPlus}">
<hc:TimePicker.Clock>
<hc:ListClock/>
</hc:TimePicker.Clock>
</hc:TimePicker>-->
<TextBlock Text="备份到哪" Grid.Column="0" Grid.Row="4" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,10,0"/>
<TextBox Text="{Binding BackPath}" Grid.Column="1" Grid.ColumnSpan="4" Grid.Row="4" VerticalAlignment="Center" HorizontalAlignment="Left" Width="390" Margin="10,0,0,0"/>
<Button Grid.Row="5" Grid.Column="2" Content="创建备份计划" Command="{Binding CreateBackPlanCmd}" />
</Grid>
</UserControl>

View File

@@ -0,0 +1,13 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ;
public partial class MySQL定时备份 : UserControl
{
public MySQL定时备份()
{
InitializeComponent();
}
}

View File

@@ -0,0 +1,32 @@
<UserControl xmlns="https://github.com/avaloniaui"
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"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="常用工具集.串口转键盘输入"
xmlns:vm ="clr-namespace:常用工具集.ViewModel._04破解及系统相关"
x:CompileBindings="True"
x:DataType="vm:串口转键盘输入ViewModel">
<UserControl.DataContext>
<vm:串口转键盘输入ViewModel />
</UserControl.DataContext>
<Grid>
<TextBlock Text="串口" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="82,66,0,0" />
<ComboBox HorizontalAlignment="Left" IsEnabled="{Binding Enabled}" VerticalAlignment="Top" SelectedIndex="{Binding SerialIndex}" ItemsSource="{Binding SerialList}" Margin="162,60,0,0" Width="206" />
<TextBlock Text="波特率" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="82,110,0,0" />
<ComboBox HorizontalAlignment="Left" IsEnabled="{Binding Enabled}" VerticalAlignment="Top" SelectedIndex="{Binding BaudRateIndex}" ItemsSource="{Binding BaudRateList}" Margin="162,104,0,0" Width="206" />
<TextBlock Text="校验" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="82,156,0,0" />
<ComboBox HorizontalAlignment="Left" IsEnabled="{Binding Enabled}" VerticalAlignment="Top" SelectedIndex="{Binding ParityIndex}" ItemsSource="{Binding ParityList}" Margin="162,150,0,0" Width="206" />
<TextBlock Text="数据位" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="82,198,0,0" />
<ComboBox HorizontalAlignment="Left" IsEnabled="{Binding Enabled}" VerticalAlignment="Top" SelectedIndex="{Binding DataBitIndex}" ItemsSource="{Binding DataBitList}" Margin="162,192,0,0" Width="206" />
<TextBlock Text="停止位" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="82,248,0,0" />
<ComboBox HorizontalAlignment="Left" IsEnabled="{Binding Enabled}" VerticalAlignment="Top" SelectedIndex="{Binding StopBitIndex}" ItemsSource="{Binding StopBitList}" Margin="162,242,0,0" Width="206" />
<TextBlock Text="读取超时" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="82,296,0,0" />
<TextBox IsEnabled="{Binding Enabled}" Margin="162,290,0,0" HorizontalAlignment="Left" TextWrapping="Wrap" Text="{Binding Timeout}" VerticalAlignment="Top" Width="206" />
<Button Content="{Binding ButtonText}" Command="{Binding ButtonCmd}" Margin="154,341,0,0" VerticalAlignment="Top" HorizontalAlignment="Left" Width="106" />
</Grid>
</UserControl>

View File

@@ -0,0 +1,13 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ;
public partial class : UserControl
{
public ()
{
InitializeComponent();
}
}

View File

@@ -0,0 +1,24 @@
<UserControl xmlns="https://github.com/avaloniaui"
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"
mc:Ignorable="d" d:DesignWidth="725" d:DesignHeight="600"
x:Class="常用工具集.删除WPS图标"
xmlns:vm ="clr-namespace:常用工具集.ViewModel._04破解及系统相关"
x:CompileBindings="True"
x:DataType="vm:删除WPS图标ViewModel">
<UserControl.DataContext>
<vm:删除WPS图标ViewModel />
</UserControl.DataContext>
<Grid>
<Image HorizontalAlignment="Left" Height="377" Margin="50,39,0,0" VerticalAlignment="Top" Width="566" Source="avares://常用工具集/Assets/WPS/show.jpg"/>
<Button Content="删除" Command="{Binding ClearCmd}" Margin="252,427,0,0" VerticalAlignment="Top" HorizontalAlignment="Left" Width="106" />
<TextBlock HorizontalAlignment="Left" Margin="25,10,0,0" TextWrapping="Wrap" Text="该功能只针对于特定版本,下载路径:" Foreground="Red" VerticalAlignment="Top" Width="205" Height="19" />
<TextBox HorizontalAlignment="Left" Margin="235,6,0,0" TextWrapping="Wrap" Text="https://cloud.189.cn/web/share?code=zM3Ebaum2YBn访问码iow7" VerticalAlignment="Top" Width="440"/>
</Grid>
</UserControl>

View File

@@ -0,0 +1,13 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ;
public partial class WPS图标 : UserControl
{
public WPS图标()
{
InitializeComponent();
}
}

View File

@@ -0,0 +1,16 @@
<UserControl xmlns="https://github.com/avaloniaui"
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"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="常用工具集.图标缓存清理"
xmlns:vm ="clr-namespace:常用工具集.ViewModel._04破解及系统相关"
x:CompileBindings="True"
x:DataType="vm:图标缓存清理ViewModel">
<UserControl.DataContext>
<vm:图标缓存清理ViewModel />
</UserControl.DataContext>
<Grid>
<Button HorizontalAlignment="Left" VerticalAlignment="Top" Margin="50,50,0,0" Content="图标缓存清理" Command="{Binding ClearCmd}" />
</Grid>
</UserControl>

View File

@@ -0,0 +1,13 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ;
public partial class : UserControl
{
public ()
{
InitializeComponent();
}
}

View File

@@ -0,0 +1,16 @@
<UserControl xmlns="https://github.com/avaloniaui"
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"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
xmlns:vm ="clr-namespace:常用工具集.ViewModel._04破解及系统相关"
x:Class="常用工具集.快速打开网络和共享中心"
x:CompileBindings="True"
x:DataType="vm:快速打开网络和共享中心ViewModel">
<UserControl.DataContext>
<vm:快速打开网络和共享中心ViewModel />
</UserControl.DataContext>
<Grid>
<Button HorizontalAlignment="Left" VerticalAlignment="Top" Margin="50,50,0,0" Content="快速打开网络和共享中心" Command="{Binding ButtonCmd}" />
</Grid>
</UserControl>

View File

@@ -0,0 +1,13 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ;
public partial class : UserControl
{
public ()
{
InitializeComponent();
}
}

View File

@@ -0,0 +1,102 @@
<UserControl xmlns="https://github.com/avaloniaui"
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"
mc:Ignorable="d" d:DesignWidth="815" d:DesignHeight="660"
x:Class="常用工具集.服务器性能监控"
xmlns:vm ="clr-namespace:常用工具集.ViewModel._04破解及系统相关"
x:CompileBindings="True"
x:DataType="vm:服务器性能监控ViewModel">
<UserControl.DataContext>
<vm:服务器性能监控ViewModel/>
</UserControl.DataContext>
<Grid>
<Border Theme="{StaticResource CardBorder}" Margin="10,10,30,440">
<Grid>
<TextBlock HorizontalAlignment="Center" Margin="0,-20,0,0" TextWrapping="Wrap" Text="操作系统" VerticalAlignment="Top"/>
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Margin="20,14,0,0" Text="操作系统架构:" />
<TextBox Text="{Binding OSArchitecture}" HorizontalAlignment="Left" Margin="120,8,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="190" />
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Margin="405,14,0,0" Text="操作系统类型:" />
<TextBox Text="{Binding OSPlatformID}" HorizontalAlignment="Left" Margin="505,8,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="190" />
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Margin="20,48,0,0" Text="操作系统版本:" />
<TextBox Text="{Binding OSVersion}" HorizontalAlignment="Left" Margin="120,42,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="190" />
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Margin="365,48,0,0" Text="操作系统的版本描述:" />
<TextBox Text="{Binding OSDescription}" HorizontalAlignment="Left" Margin="505,43,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="190" />
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Margin="20,89,0,0" Text="本进程的架构:" />
<TextBox Text="{Binding ProcessArchitecture}" HorizontalAlignment="Left" Margin="120,83,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="190" />
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Margin="335,89,0,0" Text="当前计算机上的处理器数:" />
<TextBox Text="{Binding ProcessorCount}" HorizontalAlignment="Left" Margin="505,83,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="190" />
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Margin="20,121,0,0" Text="计算机名称:" />
<TextBox Text="{Binding MachineName}" HorizontalAlignment="Left" Margin="120,115,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="190" />
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Margin="429,121,0,0" Text=".NET版本:" />
<TextBox Text="{Binding FrameworkVersion}" HorizontalAlignment="Left" Margin="505,115,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="190" />
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Margin="429,154,0,0" Text=".NET描述:" />
<TextBox Text="{Binding FrameworkDescription}" HorizontalAlignment="Left" Margin="505,148,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="190" />
</Grid>
</Border>
<Border Theme="{StaticResource CardBorder}" Margin="10,225,30,320">
<Grid>
<TextBlock HorizontalAlignment="Center" Margin="0,-20,0,0" TextWrapping="Wrap" Text="CPU内存使用率" VerticalAlignment="Top"/>
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Margin="20,14,0,0" Text="CPU使用率:" />
<TextBox Text="{Binding CPURate}" HorizontalAlignment="Left" Margin="120,8,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="190" />
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Margin="420,14,0,0" Text="已用内存:" />
<TextBox Text="{Binding MemoryRate}" Height="30" HorizontalAlignment="Left" Margin="505,8,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="190" />
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Margin="20,48,0,0" Text="网络上传:" />
<TextBox Text="{Binding UploadSpeed}" HorizontalAlignment="Left" Margin="120,43,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="190" />
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Margin="420,48,0,0" Text="网络下载:" />
<TextBox Text="{Binding DownloadSpeed}" Height="30" HorizontalAlignment="Left" Margin="505,43,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="190" />
</Grid>
</Border>
<Border Theme="{StaticResource CardBorder}" Margin="10,345,30,30">
<Grid>
<TextBlock HorizontalAlignment="Center" Margin="0,-20,0,0" TextWrapping="Wrap" Text="磁盘信息" VerticalAlignment="Top"/>
<DataGrid
HeadersVisibility="All"
CanUserReorderColumns="True"
CanUserResizeColumns="True"
CanUserSortColumns="True"
IsReadOnly="True"
ItemsSource="{Binding DataList}">
<DataGrid.Columns>
<DataGridTextColumn
Width="*"
x:DataType="vm:MyDisk"
Binding="{Binding Name}"
Header="磁盘名称" />
<DataGridTextColumn
Width="*"
x:DataType="vm:MyDisk"
Binding="{Binding Total}"
Header="总容量" />
<DataGridTextColumn
Width="*"
x:DataType="vm:MyDisk"
Binding="{Binding Used}"
Header="已使用" />
<DataGridTextColumn
Width="*"
x:DataType="vm:MyDisk"
Binding="{Binding Free}"
Header="未使用" />
</DataGrid.Columns>
</DataGrid>
</Grid>
</Border>
</Grid>
</UserControl>

View File

@@ -0,0 +1,13 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ;
public partial class : UserControl
{
public ()
{
InitializeComponent();
}
}

View File

@@ -0,0 +1,22 @@
<UserControl xmlns="https://github.com/avaloniaui"
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"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="常用工具集.猫猫回收站"
xmlns:vm ="clr-namespace:常用工具集.ViewModel._04破解及系统相关"
x:CompileBindings="True"
x:DataType="vm:猫猫回收站ViewModel">
<UserControl.DataContext>
<vm:猫猫回收站ViewModel />
</UserControl.DataContext>
<Grid>
<Image HorizontalAlignment="Left" Height="150" Margin="54,73,0,0" VerticalAlignment="Top" Width="150" Source="avares://常用工具集/Assets/Cat/full.png"/>
<Image HorizontalAlignment="Left" Height="150" Margin="239,73,0,0" VerticalAlignment="Top" Width="150" Source="avares://常用工具集/Assets/Cat/empty.png"/>
<Button Content="变成猫猫回收站" Command="{Binding Button1Cmd}" Margin="189,248,0,0" VerticalAlignment="Top" HorizontalAlignment="Left" />
<Button Content="还原" Command="{Binding Button2Cmd}" Margin="189,281,0,0" VerticalAlignment="Top" HorizontalAlignment="Left" Width="106" />
</Grid>
</UserControl>

View File

@@ -0,0 +1,13 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ;
public partial class : UserControl
{
public ()
{
InitializeComponent();
}
}

View File

@@ -0,0 +1,27 @@
<UserControl xmlns="https://github.com/avaloniaui"
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"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="常用工具集.远程路径软链接"
xmlns:vm ="clr-namespace:常用工具集.ViewModel._04破解及系统相关"
x:CompileBindings="True"
x:DataType="vm:远程路径软链接ViewModel">
<UserControl.DataContext>
<vm:远程路径软链接ViewModel />
</UserControl.DataContext>
<Grid>
<TextBlock HorizontalAlignment="Left" Margin="85,10,0,0" TextWrapping="Wrap" Text="您需要将哪个远程路径映射到本地哪个路径" Foreground="Red" VerticalAlignment="Top" />
<TextBlock HorizontalAlignment="Left" Margin="30,56,0,0" TextWrapping="Wrap" Text="远程路径:" VerticalAlignment="Top" />
<TextBox HorizontalAlignment="Left" Margin="110,50,0,0" TextWrapping="Wrap" Text="{Binding RemotePath}" VerticalAlignment="Top" Width="420" />
<TextBlock HorizontalAlignment="Left" Margin="30,101,0,0" TextWrapping="Wrap" Text="本地路径:" VerticalAlignment="Top" />
<TextBox HorizontalAlignment="Left" Margin="110,95,0,0" TextWrapping="Wrap" Text="{Binding LocalPath}" VerticalAlignment="Top" Width="420" />
<Button Width="100" Content="创建软链接" Command="{Binding MakeLinkCmd}" HorizontalAlignment="Left" Margin="115,142,0,0" VerticalAlignment="Top" />
</Grid>
</UserControl>

View File

@@ -0,0 +1,13 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ;
public partial class : UserControl
{
public ()
{
InitializeComponent();
}
}

View File

@@ -0,0 +1,35 @@
<UserControl xmlns="https://github.com/avaloniaui"
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"
mc:Ignorable="d" d:DesignHeight="600" d:DesignWidth="715"
x:Class="常用工具集.键盘钩子"
xmlns:vm ="clr-namespace:常用工具集.ViewModel._04破解及系统相关"
xmlns:i="clr-namespace:Avalonia.Xaml.Interactivity;assembly=Avalonia.Xaml.Interactivity"
x:CompileBindings="True"
x:DataType="vm:键盘钩子ViewModel">
<!-- xmlns:b="clr-namespace:Avalonia.Xaml.Behaviors;assembly=Avalonia.Xaml.Behaviors" -->
<UserControl.DataContext>
<vm:键盘钩子ViewModel />
</UserControl.DataContext>
<Grid RowDefinitions="60,*">
<Grid>
<Button Content="{Binding ButtonText}" Command="{Binding StartStopCmd}" HorizontalAlignment="Left" Margin="40,15,0,0" VerticalAlignment="Top" />
<Button Content="清空" Command="{Binding CleanCmd}" HorizontalAlignment="Left" Margin="571,0,0,0" Width="74" />
</Grid>
<Border Theme="{StaticResource CardBorder}" Grid.Row="1" Margin="10,10,10,10">
<Grid>
<TextBlock HorizontalAlignment="Center" Margin="0,-20,0,0" TextWrapping="Wrap" Text="运行日志" VerticalAlignment="Top"/>
<TextBox x:Name="TBInfo" Height="439" TextWrapping="Wrap" ScrollViewer.VerticalScrollBarVisibility="Auto" Text="{Binding Message}" Margin="10,10,0,0" HorizontalContentAlignment="Left" VerticalContentAlignment="Top">
<i:Interaction.Behaviors>
<DataTriggerBehavior Binding="{Binding Text.Length, ElementName=TBInfo}" ComparisonCondition="NotEqual" Value="0">
<ChangePropertyAction TargetObject="TBInfo" PropertyName="CaretIndex" Value="{Binding ElementName=TBInfo, Path=Text.Length}"/>
<CallMethodAction MethodName="ScrollToEnd" />
</DataTriggerBehavior>
</i:Interaction.Behaviors>
</TextBox>
</Grid>
</Border>
</Grid>
</UserControl>

View File

@@ -0,0 +1,13 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ;
public partial class : UserControl
{
public ()
{
InitializeComponent();
}
}

View File

@@ -0,0 +1,42 @@
<UserControl xmlns="https://github.com/avaloniaui"
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"
mc:Ignorable="d" d:DesignWidth="715" d:DesignHeight="600"
xmlns:vm ="clr-namespace:常用工具集.ViewModel._05其他"
x:Class="常用工具集.MD5DES"
x:CompileBindings="True"
x:DataType="vm:MD5DESViewModel">
<UserControl.DataContext>
<vm:MD5DESViewModel />
</UserControl.DataContext>
<Grid ColumnDefinitions="*,*">
<Border Theme="{StaticResource CardBorder}" Grid.Column="0" Margin="10,10,10,10">
<Grid>
<TextBlock HorizontalAlignment="Center" Margin="0,-20,0,0" TextWrapping="Wrap" Text="信息摘要" VerticalAlignment="Top"/>
<TextBlock HorizontalAlignment="Left" Margin="13,28,0,0" TextWrapping="Wrap" Text="内容:" VerticalAlignment="Top"/>
<TextBox HorizontalAlignment="Left" Margin="31,48,0,0" Text="{Binding MD5Source}" VerticalAlignment="Top" Width="270" Height="135" TextWrapping="Wrap" ScrollViewer.VerticalScrollBarVisibility="Auto" HorizontalContentAlignment="Left" VerticalContentAlignment="Top"/>
<Button Command="{Binding CalcMD5Cmd}" Content="计算MD5值" HorizontalAlignment="Left" Margin="112,208,0,0" VerticalAlignment="Top" />
<TextBlock HorizontalAlignment="Left" Margin="25,240,0,0" TextWrapping="Wrap" Text="MD5:" VerticalAlignment="Top"/>
<TextBox HorizontalAlignment="Center" Margin="0,258,0,0" Text="{Binding MD5Dest}" VerticalAlignment="Top" Width="275" Height="135" TextWrapping="Wrap" ScrollViewer.VerticalScrollBarVisibility="Auto" HorizontalContentAlignment="Left" VerticalContentAlignment="Top"/>
</Grid>
</Border>
<Border Theme="{StaticResource CardBorder}" Grid.Column="1" Margin="10,10,10,10">
<Grid>
<TextBlock HorizontalAlignment="Center" Margin="0,-20,0,0" TextWrapping="Wrap" Text="DES加解密" VerticalAlignment="Top"/>
<TextBlock HorizontalAlignment="Left" Margin="13,30,0,0" TextWrapping="Wrap" Text="密钥:" VerticalAlignment="Top"/>
<TextBox HorizontalAlignment="Left" Margin="49,24,0,0" TextWrapping="Wrap" Text="{Binding DESKey}" VerticalAlignment="Top" Width="252" Watermark="不填使用内置KEY"/>
<TextBlock HorizontalAlignment="Left" Margin="13,62,0,0" TextWrapping="Wrap" Text="内容:" VerticalAlignment="Top"/>
<TextBox HorizontalAlignment="Left" Margin="31,82,0,0" Text="{Binding DESSource}" VerticalAlignment="Top" Width="270" Height="135" TextWrapping="Wrap" ScrollViewer.VerticalScrollBarVisibility="Auto" HorizontalContentAlignment="Left" VerticalContentAlignment="Top"/>
<Button Command="{Binding DESEncryptCmd}" Content="加密" HorizontalAlignment="Left" Margin="49,235,0,0" VerticalAlignment="Top" Width="69" />
<Button Command="{Binding DESDecryptCmd}" Content="解密" HorizontalAlignment="Left" Margin="169,235,0,0" VerticalAlignment="Top" Width="69" />
<TextBlock HorizontalAlignment="Left" Margin="25,275,0,0" TextWrapping="Wrap" Text="结果:" VerticalAlignment="Top"/>
<TextBox HorizontalAlignment="Center" Margin="0,292,0,0" Text="{Binding DESDest}" VerticalAlignment="Top" Width="275" Height="135" TextWrapping="Wrap" ScrollViewer.VerticalScrollBarVisibility="Auto" HorizontalContentAlignment="Left" VerticalContentAlignment="Top"/>
</Grid>
</Border>
</Grid>
</UserControl>

View File

@@ -0,0 +1,13 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ;
public partial class MD5DES : UserControl
{
public MD5DES()
{
InitializeComponent();
}
}

View File

@@ -0,0 +1,35 @@
<UserControl xmlns="https://github.com/avaloniaui"
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:vm ="clr-namespace:常用工具集.ViewModel._05其他"
mc:Ignorable="d" d:DesignHeight="600" d:DesignWidth="715"
x:Class="常用工具集.SQLStringBuilder封装"
x:CompileBindings="True"
x:DataType="vm:SQLStringBuilder封装ViewModel">
<UserControl.DataContext>
<vm:SQLStringBuilder封装ViewModel />
</UserControl.DataContext>
<Grid>
<TextBlock Text="转换前:" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,16,0,0" />
<TextBox Text="{Binding TextBox1}" Height="160" HorizontalAlignment="Left" Margin="60,10,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="555" VerticalContentAlignment="Top" HorizontalContentAlignment="Left" AcceptsReturn="True" AcceptsTab="True"/>
<TextBlock Text="转换后:" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,206,0,0" />
<TextBox Text="{Binding TextBox2}" Height="160" HorizontalAlignment="Left" Margin="60,200,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="555" VerticalContentAlignment="Top" HorizontalContentAlignment="Left" AcceptsReturn="True" AcceptsTab="True"/>
<TextBlock Text="{Binding Text3Title}" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,386,0,0" />
<TextBox Text="{Binding TextBox3}" IsVisible="{Binding TextBox3Visiable}" Height="30" HorizontalAlignment="Left" Margin="140,380,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="90" />
<TextBlock Text="功能:" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="227,386,0,0" />
<ComboBox HorizontalAlignment="Left" VerticalAlignment="Top" SelectedIndex="{Binding FuncIndex}" ItemsSource="{Binding FuncList}" Margin="257,382,0,0" Width="188" />
<RadioButton Height="20" Content="{Binding RadioButton1Text}" IsChecked="{Binding RadioButton1}" IsVisible="{Binding RadioButton1Visiable}" HorizontalAlignment="Left" Margin="470,385,0,0" VerticalAlignment="Top"/>
<RadioButton Height="20" Content="{Binding RadioButton2Text}" IsChecked="{Binding RadioButton2}" IsVisible="{Binding RadioButton2Visiable}" HorizontalAlignment="Left" Margin="535,385,0,0" VerticalAlignment="Top"/>
<RadioButton Height="20" Content="{Binding RadioButton3Text}" IsChecked="{Binding RadioButton3}" IsVisible="{Binding RadioButton3Visiable}" HorizontalAlignment="Left" Margin="600,385,0,0" VerticalAlignment="Top"/>
<CheckBox IsChecked="{Binding CheckBox1}" IsVisible="{Binding CheckBox1Visiable}" Content="格式化" Margin="354,410,274,0" VerticalAlignment="Top" Height="25" />
<CheckBox IsChecked="{Binding CheckBox3}" IsVisible="{Binding CheckBox3Visiable}" Content="AppendLine" Margin="437,410,164,0" VerticalAlignment="Top" Height="25" RenderTransformOrigin="0.24,-0.2" />
<CheckBox IsChecked="{Binding CheckBox2}" IsVisible="{Binding CheckBox2Visiable}" Content="首尾对齐" Margin="570,410,51,0" VerticalAlignment="Top" Height="25" RenderTransformOrigin="0.24,-0.2" />
<Button Content="{Binding Button1Text}" Command="{Binding GenerateCmd}" HorizontalAlignment="Left" Margin="475,455,0,0" VerticalAlignment="Top" Width="76" />
<Button Content="清空" Command="{Binding ClearCmd}" HorizontalAlignment="Left" Margin="570,455,0,0" VerticalAlignment="Top" Width="76" />
</Grid>
</UserControl>

View File

@@ -0,0 +1,13 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ;
public partial class SQLStringBuilder封装 : UserControl
{
public SQLStringBuilder封装()
{
InitializeComponent();
}
}

View File

@@ -0,0 +1,28 @@
<UserControl xmlns="https://github.com/avaloniaui"
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:vm ="clr-namespace:常用工具集.ViewModel._05其他"
mc:Ignorable="d" d:DesignHeight="600" d:DesignWidth="715"
x:Class="常用工具集.人民币转大写"
x:CompileBindings="True"
x:DataType="vm:MD5DESViewModel">
<UserControl.DataContext>
<vm:人民币转大写ViewModel />
</UserControl.DataContext>
<Grid>
<TextBlock Text="输入金额:" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="37,37,0,0" />
<TextBox x:Name="txt1" KeyDown="TextBox_KeyDown" HorizontalAlignment="Left" Margin="97,31,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="108" />
<TextBlock Text="×" Margin="207,31,0,0" FontSize="20" HorizontalAlignment="Left" VerticalAlignment="Top" Height="28" Width="28"/>
<TextBox x:Name="txt2" Text="30" HorizontalAlignment="Left" Margin="253,31,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="67" />
<TextBlock Text="%" Margin="330,31,0,0" FontSize="20" HorizontalAlignment="Left" VerticalAlignment="Top" Height="28" Width="28"/>
<Button Content="计算" HorizontalAlignment="Left" Margin="395,30,0,0" VerticalAlignment="Top" Width="76" Click="Button_Click" />
<Button Content="转换" HorizontalAlignment="Left" Margin="183,77,0,0" VerticalAlignment="Top" Width="76" Click="Button2_Click" />
<TextBlock Text="千位分隔:" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="42,136,0,0" />
<TextBox x:Name="txt3" HorizontalAlignment="Left" Margin="102,130,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="264" />
<TextBlock Text="输出:" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="42,196,0,0" />
<TextBox x:Name="txt4" HorizontalAlignment="Left" Margin="102,190,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="264" Height="120" VerticalContentAlignment="Top" HorizontalContentAlignment="Left"/>
</Grid>
</UserControl>

View File

@@ -0,0 +1,92 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using System;
using System.Text.RegularExpressions;
namespace ;
public partial class : UserControl
{
public ()
{
InitializeComponent();
}
private void TextBox_KeyDown(object? sender, Avalonia.Input.KeyEventArgs e)
{
if (e.Key == Avalonia.Input.Key.Enter)
{
this.Button2_Click(sender, e);//触发button事件
}
}
private void Button_Click(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
{
if (txt2.Text.Trim().Length == 0)
{
this.Button2_Click(sender, e);//触发button事件
return;
}
try
{
txt1.Text = txt1.Text.Replace(",", "");
int num = Convert.ToInt32(txt2.Text.Trim());
double rate = num * 1.0 / 100.0;
double money = Convert.ToDouble(txt1.Text);
money = money * rate;
string strMoney = Convert.ToString(money);
Show(strMoney);//触发button事件
}
catch
{
txt4.Text = "";
txt3.Text = "";
}
}
private void Button2_Click(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
{
try
{
txt1.Text = txt1.Text.Replace(",", "");
decimal money = Convert.ToDecimal(txt1.Text);
string str = ConvertToChinese(money);
if (!txt1.Text.Contains("."))
str += "整";
txt4.Text = str;
txt3.Text = money.ToString("N0");
}
catch
{
txt4.Text = "";
txt3.Text = "";
}
}
public static string ConvertToChinese(decimal number)
{
var s = number.ToString("#L#E#D#C#K#E#D#C#J#E#D#C#I#E#D#C#H#E#D#C#G#E#D#C#F#E#D#C#.0B0A");
var d = Regex.Replace(s, @"((?<=-|^)[^1-9]*)|((?'z'0)[0A-E]*((?=[1-9])|(?'-z'(?=[F-L\.]|$))))|((?'b'[F-L])(?'z'0)[0A-L]*((?=[1-9])|(?'-z'(?=[\.]|$))))", "${b}${z}");
var r = Regex.Replace(d, ".", m => "负元空零壹贰叁肆伍陆柒捌玖空空空空空空空分角拾佰仟万亿兆京垓秭穰"[m.Value[0] - '-'].ToString());
return r;
}
private void Show(string money1)
{
try
{
decimal money = Convert.ToDecimal(money1);
string str = ConvertToChinese(money);
if (!txt1.Text.Contains("."))
str += "整";
txt4.Text = str;
txt3.Text = money.ToString("N0");
}
catch
{
txt4.Text = "";
txt3.Text = "";
}
}
}

View File

@@ -0,0 +1,26 @@
<UserControl xmlns="https://github.com/avaloniaui"
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"
mc:Ignorable="d" d:DesignHeight="600" d:DesignWidth="715"
xmlns:vm ="clr-namespace:常用工具集.ViewModel._05其他"
x:Class="常用工具集.地标写入"
x:CompileBindings="True"
x:DataType="vm:地标写入ViewModel">
<UserControl.DataContext>
<vm:地标写入ViewModel />
</UserControl.DataContext>
<Grid>
<TextBlock VerticalAlignment="Top" HorizontalAlignment="Left" Text="串口:" Margin="50,61,0,0" />
<ComboBox IsEnabled="{Binding Enabled1}" HorizontalAlignment="Left" VerticalAlignment="Top" SelectedIndex="{Binding SerialIndex}" ItemsSource="{Binding SerialList}" Margin="80,55,0,0" Width="130" />
<Button IsEnabled="{Binding Enabled1}" Content="打开串口" Command="{Binding OpenCmd}" HorizontalAlignment="Left" Margin="55,102,0,0" VerticalAlignment="Top" Width="90" />
<Button IsEnabled="{Binding Enabled2}" Content="关闭串口" Command="{Binding CloseCmd}" HorizontalAlignment="Left" Margin="150,102,0,0" VerticalAlignment="Top" Width="90" />
<TextBlock VerticalAlignment="Top" HorizontalAlignment="Left" Text="数据:" Margin="50,148,0,0" />
<TextBox IsEnabled="{Binding Enabled2}" HorizontalAlignment="Left" Margin="80,142,0,0" TextWrapping="Wrap" Text="{Binding Data}" VerticalAlignment="Top" Width="128" />
<Button IsEnabled="{Binding Enabled2}" Content="读取" Command="{Binding ReadCmd}" HorizontalAlignment="Left" Margin="14,200,0,0" VerticalAlignment="Top" Width="76" />
<Button IsEnabled="{Binding Enabled2}" Content="写入" Command="{Binding WriteCmd}" HorizontalAlignment="Left" Margin="111,200,0,0" VerticalAlignment="Top" Width="76" />
<Button IsEnabled="{Binding Enabled2}" Content="清空" Command="{Binding ClearCmd}" HorizontalAlignment="Left" Margin="219,200,0,0" VerticalAlignment="Top" Width="76" />
</Grid>
</UserControl>

View File

@@ -0,0 +1,13 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ;
public partial class : UserControl
{
public ()
{
InitializeComponent();
}
}

View File

@@ -0,0 +1,21 @@
<UserControl xmlns="https://github.com/avaloniaui"
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"
mc:Ignorable="d" d:DesignHeight="600" d:DesignWidth="715"
xmlns:vm ="clr-namespace:常用工具集.ViewModel._05其他"
x:Class="常用工具集.角度弧度转换"
x:CompileBindings="True"
x:DataType="vm:角度弧度转换ViewModel">
<UserControl.DataContext>
<vm:角度弧度转换ViewModel />
</UserControl.DataContext>
<Grid>
<TextBlock VerticalAlignment="Top" HorizontalAlignment="Left" Text="角度:" Margin="60,43,0,0" />
<TextBox Name="txtAngle" KeyDown="txtAngle_KeyDown" HorizontalAlignment="Left" Margin="95,37,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="148" />
<TextBlock VerticalAlignment="Top" HorizontalAlignment="Left" Text="弧度:" Margin="60,93,0,0" />
<TextBox Name="txtRad" KeyDown="txtRad_KeyDown" HorizontalAlignment="Left" Margin="95,87,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="148" />
<Button Content="转换" HorizontalAlignment="Left" Margin="255,37,0,0" VerticalAlignment="Top" Width="76" Click="Button_Click" />
<Button Content="转换" HorizontalAlignment="Left" Margin="255,87,0,0" VerticalAlignment="Top" Width="76" Click="Button_Click_1" />
</Grid>
</UserControl>

View File

@@ -0,0 +1,70 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Input;
using Avalonia.Interactivity;
using Avalonia.Markup.Xaml;
using System;
using Ursa.Controls;
namespace ;
public partial class : UserControl
{
public ()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
string strAngle = txtAngle.Text;
double angle;
bool flag = double.TryParse(strAngle, out angle);
if (!flag)
{
MessageBox.ShowAsync("请输入0~360之间的数字");
return;
}
if (angle < 0 || angle > 360)
{
MessageBox.ShowAsync("请输入0~360之间的数字");
return;
}
double rad = angle * (Math.PI / 180);
txtRad.Text = string.Format("{0:N6}", rad);
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
string strRad = txtRad.Text;
double rad;
bool flag = double.TryParse(strRad, out rad);
if (!flag)
{
MessageBox.ShowAsync("请输入0~2Π之间的数字");
return;
}
if (rad < 0 || rad > (2 * Math.PI))
{
MessageBox.ShowAsync("请输入0~2Π之间的数字");
return;
}
double angle = rad * 180 / Math.PI;
txtAngle.Text = string.Format("{0:N6}", angle);
}
private void txtAngle_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
Button_Click(sender, null);
}
}
private void txtRad_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
Button_Click_1(sender, null);
}
}
}

View File

@@ -0,0 +1,68 @@
<UserControl xmlns="https://github.com/avaloniaui"
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"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
xmlns:vm ="clr-namespace:常用工具集.ViewModel._05其他"
x:Class="常用工具集.进制转换及ASCII转换"
x:CompileBindings="True"
x:DataType="vm:进制转换及ASCII转换ViewModel" >
<UserControl.DataContext>
<vm:进制转换及ASCII转换ViewModel />
</UserControl.DataContext>
<Grid>
<Border Theme="{StaticResource CardBorder}" Width="345" Height="210" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,40,0,0">
<Grid Height="180">
<TextBlock HorizontalAlignment="Center" Margin="0,-20,0,0" TextWrapping="Wrap" Text="进制转换" VerticalAlignment="Top"/>
<TextBlock Text="二进制:" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,16,0,0" />
<TextBox Name="textBox1" Text="" KeyDown="textBox1_KeyDown" HorizontalAlignment="Left" Margin="70,10,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="180" />
<TextBlock Text="十进制:" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,88,0,0" />
<TextBox Name="textBox3" Text="" KeyDown="textBox3_KeyDown" HorizontalAlignment="Left" Margin="70,82,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="180" />
<TextBlock Text="八进制:" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,52,0,0" />
<TextBox Name="textBox2" Text="" KeyDown="textBox2_KeyDown" HorizontalAlignment="Left" Margin="70,46,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="180" />
<TextBlock Text="十六进制:" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,131,0,0" />
<TextBox Name="textBox4" Text="" KeyDown="textBox4_KeyDown" HorizontalAlignment="Left" Margin="70,125,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="180" />
<Button Name="button1" Content="转换" HorizontalAlignment="Left" Margin="255,10,0,0" VerticalAlignment="Top" Width="75" Click="button1_Click" />
<Button Name="button2" Content="转换" HorizontalAlignment="Left" Margin="255,43,0,0" VerticalAlignment="Top" Width="75" Click="button2_Click" />
<Button Name="button3" Content="转换" HorizontalAlignment="Left" Margin="255,82,0,0" VerticalAlignment="Top" Width="75" Click="button3_Click" />
<Button Name="button4" Content="转换" HorizontalAlignment="Left" Margin="255,125,0,0" VerticalAlignment="Top" Width="75" Click="button4_Click" />
</Grid>
</Border>
<Border Theme="{StaticResource CardBorder}" Width="355" Height="210" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="360,40,0,0">
<Grid Height="180">
<TextBlock HorizontalAlignment="Center" Margin="0,-20,0,0" TextWrapping="Wrap" Text="颜色值转换" VerticalAlignment="Top"/>
<TextBlock Text="R:" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="13,41,0,0" />
<TextBox Name="textBox5" Text="" KeyDown="textBox5_KeyDown" HorizontalAlignment="Left" Margin="33,35,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="55" />
<TextBlock Text="B:" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="181,41,0,0" />
<TextBox Name="textBox7" Text="" KeyDown="textBox7_KeyDown" HorizontalAlignment="Left" Margin="201,35,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="55" />
<TextBlock Text="G:" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="90,41,0,0" />
<TextBox Name="textBox6" Text="" KeyDown="textBox6_KeyDown" HorizontalAlignment="Left" Margin="110,35,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="55" />
<Button Name="button5" Content="转换" HorizontalAlignment="Left" Margin="258,35,0,0" VerticalAlignment="Top" Width="75" Click="button5_Click" />
<TextBlock HorizontalAlignment="Left" Margin="18,16,0,0" TextWrapping="Wrap" Text="颜色转换10进制" Foreground="Red" VerticalAlignment="Top" Width="192" />
<TextBlock HorizontalAlignment="Left" Margin="23,0,0,0" TextWrapping="Wrap" Text="颜色转换16进制" Foreground="Red" VerticalAlignment="Center" Width="192" />
<TextBlock Text="#" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="13,109,0,0" />
<TextBox Name="textBox8" Text="" KeyDown="textBox8_KeyDown" HorizontalAlignment="Left" Margin="33,103,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="220" />
<Button Name="button6" Content="转换" HorizontalAlignment="Left" Margin="258,103,0,0" VerticalAlignment="Top" Width="75" Click="button6_Click" />
</Grid>
</Border>
<Border Width="700" Height="90" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="5,255,0,0">
<Grid Height="60">
<TextBlock HorizontalAlignment="Center" Margin="0,-20,0,0" TextWrapping="Wrap" Text="ASCII码转换" VerticalAlignment="Top"/>
<TextBlock Text="字符:" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="20,16,0,0" />
<TextBox Name="textBox9" Text="" KeyDown="textBox9_KeyDown" HorizontalAlignment="Left" Margin="55,10,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="70" />
<Button Name="button7" Content="转换" HorizontalAlignment="Left" Margin="150,10,0,0" VerticalAlignment="Top" Width="75" Click="button7_Click" />
<TextBlock Text="ASCII码:" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="250,17,0,0" />
<TextBox Name="textBox10" Text="" KeyDown="textBox10_KeyDown" HorizontalAlignment="Left" Margin="310,11,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="70" />
<Button Name="button8" Content="转换" HorizontalAlignment="Left" Margin="385,11,0,0" VerticalAlignment="Top" Width="75" Click="button8_Click" />
<TextBlock Text="16进制:" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="485,16,0,0" />
<TextBox Name="textBox11" Text="" KeyDown="textBox11_KeyDown" HorizontalAlignment="Left" Margin="535,10,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="75" />
<Button Name="button9" Content="转换" HorizontalAlignment="Left" Margin="615,10,0,0" VerticalAlignment="Top" Width="75" Click="button9_Click" />
</Grid>
</Border>
</Grid>
</UserControl>

View File

@@ -0,0 +1,346 @@
using Avalonia.Controls;
using Avalonia.Controls.Notifications;
using Avalonia.Input;
using System;
using .Base;
namespace ;
public partial class ASCII转换 : UserControl
{
public ASCII转换()
{
InitializeComponent();
}
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
button1_Click(sender, e);
}
}
private void button1_Click(object sender, Avalonia.Interactivity.RoutedEventArgs e)
{
try
{
string bin = textBox1.Text.Trim();
if (bin.Length == 0)
{
bin = "0";
}
//二进制转换十进制
int num = Convert.ToInt32(bin, 2);
//十进制转
string num8 = Convert.ToString(num, 8);
//十进制转16进制
string num16 = Convert.ToString(num, 16).ToUpper();
textBox1.Text = bin;
textBox2.Text = num8;
textBox3.Text = Convert.ToString(num);
textBox4.Text = num16;
}
catch (Exception ex)
{
GlobalValues.Error($"转换错误:{ex.Message}");
}
}
private void textBox2_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
button2_Click(sender, e);
}
}
private void button2_Click(object sender, Avalonia.Interactivity.RoutedEventArgs e)
{
try
{
string num8 = textBox2.Text.Trim();
if (num8.Length == 0)
{
num8 = "0";
}
//二进制转换十进制
int num10 = Convert.ToInt32(num8, 8);
//十进制转
string num2 = Convert.ToString(num10, 2);
//十进制转16进制
string num16 = Convert.ToString(num10, 16).ToUpper();
textBox1.Text = num2;
textBox2.Text = num8;
textBox3.Text = Convert.ToString(num10);
textBox4.Text = num16;
}
catch (Exception ex)
{
GlobalValues.Error($"转换错误:{ex.Message}");
}
}
private void textBox3_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
button3_Click(sender, e);
}
}
private void button3_Click(object sender, Avalonia.Interactivity.RoutedEventArgs e)
{
try
{
string strNum10 = textBox3.Text.Trim();
if (strNum10.Length == 0)
{
strNum10 = "0";
}
//二进制转换十进制
int num10 = Convert.ToInt32(strNum10);
string num2 = Convert.ToString(num10, 2);
string num8 = Convert.ToString(num10, 8);
//十进制转16进制
string num16 = Convert.ToString(num10, 16).ToUpper();
textBox1.Text = num2;
textBox2.Text = num8;
textBox3.Text = Convert.ToString(num10);
textBox4.Text = num16;
}
catch (Exception ex)
{
GlobalValues.Error($"转换错误:{ex.Message}");
}
}
private void textBox4_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
button4_Click(sender, e);
}
}
private void button4_Click(object sender, Avalonia.Interactivity.RoutedEventArgs e)
{
try
{
string strNum16 = textBox4.Text.Trim();
if (strNum16.Length == 0)
{
strNum16 = "0";
}
//二进制转换十进制
int num10 = Convert.ToInt32(strNum16, 16);
string num2 = Convert.ToString(num10, 2);
string num8 = Convert.ToString(num10, 8);
//十进制转16进制
string num16 = Convert.ToString(num10, 16).ToUpper();
textBox1.Text = num2;
textBox2.Text = num8;
textBox3.Text = Convert.ToString(num10);
textBox4.Text = num16;
}
catch (Exception ex)
{
GlobalValues.Error($"转换错误:{ex.Message}");
}
}
private void textBox5_KeyDown(object sender, Avalonia.Input.KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
button5_Click(sender, e);
}
}
private void textBox6_KeyDown(object sender, Avalonia.Input.KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
button5_Click(sender, e);
}
}
private void textBox7_KeyDown(object sender, Avalonia.Input.KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
button5_Click(sender, e);
}
}
private void button5_Click(object sender, Avalonia.Interactivity.RoutedEventArgs e)
{
try
{
string r = textBox5.Text.Trim();
if (r.Length == 0)
{
textBox5.Text = "0";
}
int intR = Convert.ToInt32(r);
if (intR > 255)
{
intR = 255;
textBox5.Text = "255";
}
string g = textBox6.Text.Trim();
if (g.Length == 0)
{
textBox6.Text = "0";
}
int intG = Convert.ToInt32(g);
if (intG > 255)
{
intG = 255;
textBox6.Text = "255";
}
string b = textBox7.Text.Trim();
if (b.Length == 0)
{
textBox7.Text = "0";
}
int intB = Convert.ToInt32(b);
if (intB > 255)
{
intB = 255;
textBox7.Text = "255";
}
string r16 = Convert.ToString(intR, 16).ToUpper().PadLeft(2, '0');
string g16 = Convert.ToString(intG, 16).ToUpper().PadLeft(2, '0');
string b16 = Convert.ToString(intB, 16).ToUpper().PadLeft(2, '0');
textBox8.Text = r16 + g16 + b16;
}
catch (Exception ex)
{
GlobalValues.Error($"转换错误:{ex.Message}");
}
}
private void textBox8_KeyDown(object sender, Avalonia.Input.KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
button6_Click(sender, e);
}
}
private void button6_Click(object sender, Avalonia.Interactivity.RoutedEventArgs e)
{
try
{
string value = textBox8.Text.Trim().ToUpper();
if (value.Length == 0)
{
value = "000000";
}
else if (value.Length > 6)
{
value = value.Substring(0, 6);
}
else
{
value = value.PadLeft(6, '0');
}
textBox8.Text = value;
string strR = value.Substring(0, 2);
string strG = value.Substring(2, 2);
string strB = value.Substring(4, 2);
int intR = Convert.ToInt32(strR, 16);
int intG = Convert.ToInt32(strG, 16);
int intB = Convert.ToInt32(strB, 16);
textBox5.Text = Convert.ToString(intR);
textBox6.Text = Convert.ToString(intG);
textBox7.Text = Convert.ToString(intB);
}
catch (Exception ex)
{
GlobalValues.Error($"转换错误:{ex.Message}");
}
}
private void textBox9_KeyDown(object sender, Avalonia.Input.KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
button7_Click(sender, e);
}
}
private void button7_Click(object sender, Avalonia.Interactivity.RoutedEventArgs e)
{
try
{
string strChar = textBox9.Text.Trim();
if (strChar.Length == 0)
{
strChar = "0";
}
textBox9.Text = strChar;
char c = strChar.ToCharArray()[0];
int intChar = c;
textBox10.Text = Convert.ToString(intChar);
textBox11.Text = Convert.ToString(intChar, 16);
}
catch (Exception ex)
{
GlobalValues.Error($"转换错误:{ex.Message}");
}
}
private void textBox10_KeyDown(object sender, Avalonia.Input.KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
button8_Click(sender, e);
}
}
private void button8_Click(object sender, Avalonia.Interactivity.RoutedEventArgs e)
{
try
{
string asc2 = textBox10.Text.Trim();
if (asc2.Length == 0)
{
asc2 = "48";
}
textBox10.Text = asc2;
int num = Convert.ToInt32(asc2);
char c = (char)num;
textBox9.Text = Convert.ToString(c);
textBox11.Text = Convert.ToString(num, 16);
}
catch (Exception ex)
{
GlobalValues.Error($"转换错误:{ex.Message}");
}
}
private void textBox11_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
button9_Click(sender, e);
}
}
private void button9_Click(object sender, Avalonia.Interactivity.RoutedEventArgs e)
{
try
{
string asc16 = textBox11.Text.Trim();
if (asc16.Length == 0)
{
asc16 = "30";
}
textBox11.Text = asc16;
int num = Convert.ToInt32(asc16, 16);
char c = (char)num;
textBox9.Text = Convert.ToString(c);
textBox10.Text = Convert.ToString(num);
}
catch (Exception ex)
{
GlobalValues.Error($"转换错误:{ex.Message}");
}
}
}

View File

@@ -0,0 +1,70 @@
<UserControl xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:u="https://irihi.tech/ursa"
xmlns:iri="https://irihi.tech/shared"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:vm="using:常用工具集.ViewModels"
x:CompileBindings="True"
x:DataType="vm:MainViewViewModel"
mc:Ignorable="d" d:DesignWidth="1000" d:DesignHeight="700"
x:Class="常用工具集.Views.MainView">
<UserControl.DataContext>
<vm:MainViewViewModel/>
</UserControl.DataContext>
<Grid ColumnDefinitions="Auto,*">
<u:NavMenu
Name="menu"
ExpandWidth="240"
IconBinding="{Binding IconPath}"
HeaderBinding="{Binding Header}"
ItemsSource="{Binding MenuItems}"
SelectedItem="{Binding SelectedMenuItem}"
SubMenuBinding="{Binding Children}">
<!---->
<!--IconBinding="{Binding IconPath}"-->
<!--IsHorizontalCollapsed="{Binding #collapse.IsChecked, Mode=OneWay}"-->
<u:NavMenu.Styles>
<Style x:DataType="vm:MenuItem" Selector="u|NavMenuItem">
<Setter Property="IsSeparator" Value="{Binding IsSeparator}" />
</Style>
</u:NavMenu.Styles>
<u:NavMenu.IconTemplate>
<DataTemplate>
<u:TwoTonePathIcon
Width="16"
Height="16"
ActiveForeground="{DynamicResource SemiBlue5}"
ActiveStrokeBrush="{DynamicResource SemiBlue5}"
Data="{Binding}"
Foreground="{DynamicResource SemiGrey5}"
IsActive="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=u:NavMenuItem}, Path=IsHighlighted, Mode=TwoWay}"
StrokeBrush="{DynamicResource SemiGrey5}" />
</DataTemplate>
</u:NavMenu.IconTemplate>
<!--<u:NavMenu.Header>
<Grid HorizontalAlignment="Center" ColumnDefinitions="Auto, Auto">
<Panel
VerticalAlignment="Center"
u:NavMenu.CanToggle="True"
Margin="4 12"
Background="Transparent"
DockPanel.Dock="Left">
<iri:IrihiLogo Width="32" Fill="{DynamicResource SemiGrey7}" />
</Panel>
<TextBlock
Grid.Column="1"
VerticalAlignment="Center"
Classes="H5"
IsVisible="{Binding !#menu.IsHorizontalCollapsed}"
Text="Ursa Avalonia"
Theme="{DynamicResource TitleTextBlock}" />
</Grid>
</u:NavMenu.Header>-->
</u:NavMenu>
<ScrollViewer Grid.Column="1" Content="{Binding ContentPage}">
</ScrollViewer>
</Grid>
</UserControl>

View File

@@ -0,0 +1,29 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using Ursa.Controls;
using .Base;
using .ViewModels;
namespace .Views;
public partial class MainView : UserControl
{
public MainView()
{
InitializeComponent();
}
protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e)
{
base.OnAttachedToVisualTree(e);
var topLevel = TopLevel.GetTopLevel(this);
if (topLevel is null)
return;
GlobalValues.StorageProvider = topLevel?.StorageProvider;
GlobalValues.Clipboard = topLevel.Clipboard;
GlobalValues.NotificationManager = WindowNotificationManager.TryGetNotificationManager(topLevel, out var manager) ? manager : new WindowNotificationManager(topLevel);
GlobalValues.NotificationManager.Position = Avalonia.Controls.Notifications.NotificationPosition.BottomRight;
GlobalValues.NotificationManager.MaxItems = 5;
}
}

View File

@@ -0,0 +1,25 @@
<u:UrsaWindow
x:Class="常用工具集.Views.MainWindow"
xmlns="https://github.com/avaloniaui"
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:u="https://irihi.tech/ursa"
xmlns:views="clr-namespace:常用工具集.Views"
mc:Ignorable="d" d:DesignWidth="1200" d:DesignHeight="700"
Height="700" Width="1200"
CanResize="False"
BorderThickness="1"
BorderBrush="Gray"
WindowStartupLocation="CenterScreen"
Icon="/Assets/favicon.ico"
Title="常用工具集">
<Grid RowDefinitions="30,*">
<Grid Grid.Row="0" ColumnDefinitions="30,*">
<Image Width="20" Height="20" Margin="5,0,5,0" Source="/Assets/favicon.ico" />
<TextBlock Grid.Column="1" Text="常用工具集" Margin="0,5,0,0"/>
</Grid>
<views:MainView Grid.Row="1" />
</Grid>
</u:UrsaWindow>

View File

@@ -0,0 +1,39 @@
using Avalonia.Controls;
using System;
using System.Threading.Tasks;
using Ursa.Controls;
namespace .Views
{
public partial class MainWindow : UrsaWindow
{
public MainWindow()
{
InitializeComponent();
}
protected override async Task<bool> CanClose()
{
var result = await MessageBox.ShowOverlayAsync("Are you sure you want to exit?\n您确定要退出吗", "Exit", button: MessageBoxButton.YesNo);
if (result != MessageBoxResult.Yes)
{
return false;
}
Environment.Exit(0);
return true;
}
//private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
//{
// //MessageBoxResult result = MessageBox.Show("确定退出程序?", "提示", MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.No);
// //if (result == MessageBoxResult.No)
// //{
// // e.Cancel = true;
// //}
// //else
// //{
// Environment.Exit(0);
// //}
//}
}
}

View File

@@ -0,0 +1,8 @@
<UserControl xmlns="https://github.com/avaloniaui"
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"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="常用工具集.UserControl1">
<Label x:Name="label" Content="HelloWorld" Margin="20,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top"/>
</UserControl>

View File

@@ -0,0 +1,19 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using System;
namespace ;
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
}
internal void SetText(string header)
{
label.Content = header;
}
}