1.升级UI

2.修复日志
3.自适应
master
zhangxy 8 months ago
parent ccff2c2627
commit 2f23e79852

@ -31,5 +31,63 @@
</Setter>
</Style>
<!-- 颜色定义 -->
<Color x:Key="PrimaryColor">#FF4285F4</Color>
<Color x:Key="DarkPrimaryColor">#FF3367D6</Color>
<Color x:Key="AccentColor">#FF34A853</Color>
<Color x:Key="WarningColor">#FFEA4335</Color>
<Color x:Key="LightGray">#FFEEEEEE</Color>
<Color x:Key="DarkGray">#FF757575</Color>
<!-- 笔刷定义 -->
<SolidColorBrush x:Key="PrimaryBrush" Color="{StaticResource PrimaryColor}"/>
<SolidColorBrush x:Key="DarkPrimaryBrush" Color="{StaticResource DarkPrimaryColor}"/>
<SolidColorBrush x:Key="AccentBrush" Color="{StaticResource AccentColor}"/>
<SolidColorBrush x:Key="WarningBrush" Color="{StaticResource WarningColor}"/>
<SolidColorBrush x:Key="LightGrayBrush" Color="{StaticResource LightGray}"/>
<SolidColorBrush x:Key="DarkGrayBrush" Color="{StaticResource DarkGray}"/>
<!-- 终端样式 -->
<Style x:Key="TerminalStyle" TargetType="Border">
<Setter Property="Background" Value="White"/>
<Setter Property="CornerRadius" Value="8"/>
<Setter Property="Padding" Value="1"/>
<Setter Property="Margin" Value="4"/>
<Setter Property="Effect">
<Setter.Value>
<DropShadowEffect BlurRadius="12"
ShadowDepth="0"
Color="#20000000"/>
</Setter.Value>
</Setter>
</Style>
<!-- 扁平化按钮样式 -->
<Style x:Key="FlatButton" TargetType="Button">
<Setter Property="Background" Value="{StaticResource PrimaryBrush}"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Padding" Value="12 8"/>
<Setter Property="FontWeight" Value="SemiBold"/>
<Setter Property="FontSize" Value="15"/>
<Setter Property="Cursor" Value="Hand"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border Background="{TemplateBinding Background}"
CornerRadius="4">
<ContentPresenter HorizontalAlignment="Center"
VerticalAlignment="Center"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="{StaticResource DarkPrimaryBrush}"/>
</Trigger>
</Style.Triggers>
</Style>
</Application.Resources>
</Application>

@ -259,6 +259,9 @@
<ItemGroup>
<Resource Include="Pictogrammers-Material-Monitor-eye.ico" />
</ItemGroup>
<ItemGroup>
<Resource Include="海威图标-横.png" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\packages\System.ValueTuple.4.6.1\build\net471\System.ValueTuple.targets" Condition="Exists('..\packages\System.ValueTuple.4.6.1\build\net471\System.ValueTuple.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">

@ -4,9 +4,12 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
xmlns:controls="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit"
xmlns:PresentationOptions="http://schemas.microsoft.com/winfx/2006/xaml/presentation/options"
xmlns:local="clr-namespace:SocketExample"
mc:Ignorable="d"
Title="RFID读写器多终端监控软件v1.062" Height="450" Width="800">
Title="RFID读写器多终端监控软件v1.07" Height="450" Width="800"
Background="Transparent" AllowsTransparency="True" WindowStyle="None" WindowStartupLocation="CenterScreen">
<Window.Resources>
<Style x:Key="SocketButton" TargetType="Button" BasedOn="{StaticResource BaseButtonStyle}">
@ -51,18 +54,62 @@
</Style>
</Window.Resources>
<Border>
<Border CornerRadius="30" BorderThickness="2" BorderBrush="#ebedf3" Padding="10" MouseDown="Border_MouseDown" Background="#FFCFD5E5">
<Border CornerRadius="30">
<Border.Background>
<LinearGradientBrush>
<GradientStop Color="#fefefe" Offset="0"/>
<GradientStop Color="#ededef" Offset="1"/>
</LinearGradientBrush>
</Border.Background>
<Border CornerRadius="30">
<Border.Background>
<DrawingBrush Opacity="0.2" TileMode="Tile" Viewport="0,0,300,80" ViewportUnits="Absolute">
<DrawingBrush.Transform>
<RotateTransform Angle="-45" CenterX="0" CenterY="0"/>
</DrawingBrush.Transform>
<DrawingBrush.Drawing>
<DrawingGroup>
<GeometryDrawing Brush="Transparent">
<GeometryDrawing.Geometry>
<RectangleGeometry Rect="0,0,110,75"/>
</GeometryDrawing.Geometry>
</GeometryDrawing>
<ImageDrawing ImageSource="/海威图标-横.png" Rect="5,5,100,60"/>
</DrawingGroup>
</DrawingBrush.Drawing>
</DrawingBrush>
</Border.Background>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="90"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<StackPanel Grid.Row="0" Orientation="Horizontal" Margin="10" Height="30">
<TextBlock Text="监控终端生成数量:" VerticalAlignment="Center" Margin="0,0,10,0"/>
<TextBox x:Name="CountTextBox" Width="100" Margin="0,0,10,0" VerticalAlignment="Center"/>
<Button Content="生成" Click="GenerateButton_Click" Width="50" Margin="10 0 0 0" Style="{StaticResource SocketButton}"/>
<Button Content="清空" Click="ClearButton_Click" Width="50" Margin="10 0 0 0" Style="{StaticResource SocketButton}"/>
<Border Grid.Row="0" CornerRadius="20" Background="{StaticResource PrimaryBrush}" Margin="10" Cursor="">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" Orientation="Horizontal" Margin="10 0 0 0" VerticalAlignment="Center">
<TextBlock Text="监控终端生成数量:" VerticalAlignment="Center" Margin="0,0,10,0" Foreground="White" FontSize="15" FontWeight="SemiBold"/>
<TextBox x:Name="CountTextBox" Width="100" Margin="0,0,10,0" VerticalAlignment="Center" FontSize="15" FontWeight="SemiBold"/>
<Button Content="生成" Click="GenerateButton_Click" Height="40" Width="50" Margin="10 0 0 0" Style="{StaticResource FlatButton}"/>
<Button Content="清空" Click="ClearButton_Click" Height="40" Width="50" Margin="10 0 0 0" Style="{StaticResource FlatButton}"/>
</StackPanel>
<Grid Grid.Column="1" HorizontalAlignment="Right" Margin="0 0 10 0" VerticalAlignment="Center">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Button x:Name="Minimize_Button" Grid.Column="0" Content="最小化" Height="40" Width="50" Style="{StaticResource FlatButton}" Margin="0 0 16 0" Click="Minimize_Button_Click"/>
<Button x:Name="Maxmize_Button" Grid.Column="1" Content="最大化" Height="40" Width="50" Style="{StaticResource FlatButton}" Margin="0 0 0 0" Click="Maxmize_Button_Click"/>
<Button x:Name="Shutdown_Button" Grid.Column="2" Content="关闭" Height="40" Width="50" Style="{StaticResource FlatButton}" Click="Shutdown_Button_Click"/>
</Grid>
</Grid>
</Border>
<ScrollViewer Grid.Row="1" VerticalScrollBarVisibility="Auto">
<ItemsControl x:Name="PanelContainer">
@ -73,19 +120,19 @@
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border BorderThickness="1" BorderBrush="Black" Margin="1" Width="{Binding Borderwidth}" >
<Border Style="{StaticResource TerminalStyle}" Width="{Binding Borderwidth}">
<StackPanel Orientation="Vertical" Margin="5 5 5 5" >
<Border Width="Auto" Background="LightSkyBlue" >
<TextBox Width="Auto" Foreground="Black" Background="LightSkyBlue" Text="{Binding Text}" FontSize="14"></TextBox>
<Border Width="Auto" Background="LightSkyBlue" CornerRadius="6" Padding="3">
<TextBox Width="Auto" Foreground="Black" Background="LightSkyBlue" Text="{Binding Text}" BorderThickness="0" FontSize="15" FontWeight="SemiBold"></TextBox>
</Border>
<StackPanel Orientation="Horizontal" Margin="5 1 5 1">
<StackPanel Orientation="Vertical">
<StackPanel Orientation="Horizontal">
<Label Content="IP地址" Height="30" Margin="10 8 0 0"/>
<Label Content="IP地址" Height="30" Margin="10 8 0 0" FontWeight="SemiBold"/>
<TextBox TextWrapping="Wrap" x:Name="IPtextbox" Text="{Binding IPtext}" Width="100" Height="20" Margin="5 8 0 0"/>
</StackPanel>
<StackPanel Orientation="Horizontal">
<Label Content="端口号" Height="30" Margin="10 8 0 0"/>
<Label Content="端口号" Height="30" Margin="10 8 0 0" FontWeight="SemiBold"/>
<TextBox TextWrapping="Wrap" Text="{Binding Porttext}" x:Name="Porttextbox" Width="45" Height="20" Margin="5 8 0 0"/>
<!-- <Button Content="读取" Height="20" Width="40" Margin="10 8 0 0" Command="{Binding _readcomn}" Style="{StaticResource SocketButton}"/>-->
</StackPanel>
@ -114,7 +161,7 @@
</Border>
<StackPanel Orientation="Vertical" Margin="0,2,0,0">
<TextBlock Text="请输入需要发送的内容:"></TextBlock>
<TextBlock Text="请输入需要发送的内容:" FontWeight="SemiBold"></TextBlock>
<TextBox TextWrapping="Wrap" x:Name="MessageTextBox_Client" Text="{Binding MessageText}" Height="50" Width="140" Margin="0,0,0,1"/>
<Button Content="发送" Width="40" Height="22" Command="{Binding _sendcomn}" Style="{StaticResource SocketButton}"/>
</StackPanel>
@ -129,8 +176,9 @@
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Hidden" Margin="0.5 0 0.5 0">
<Grid Margin="5">
<Border BorderThickness="0.5" CornerRadius="10" BorderBrush="Black" Padding="2.5 3 2.5 3" Margin="0.5 1 0.5 1">
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Hidden">
<Grid Margin="0.5">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
@ -165,7 +213,7 @@
</StackPanel>
</Grid>
</ScrollViewer>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
@ -176,7 +224,7 @@
<Border BorderBrush="Black" BorderThickness="0.5">
<StackPanel Orientation="Horizontal" Margin="1 2 1 2">
<Label Content="触发动作:" FontWeight="Bold" FontSize="13"/>
<TextBox Text="{Binding ActionType}" Width="70" TextAlignment="Center" FontSize="13"/>
<TextBox Text="{Binding ActionType}" Width="70" TextAlignment="Center" VerticalContentAlignment="Center" FontSize="13"/>
<ComboBox x:Name="TextComboBox" Width="20" Height="20" ItemsSource="{Binding SendTextComboBox,Mode=TwoWay}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
@ -187,7 +235,7 @@
</i:Interaction.Triggers>
</ComboBox>
<Label Content="时间段:" FontWeight="Bold" FontSize="13"/>
<TextBox Text="{Binding TimeOut}" Width="50" TextAlignment="Center" FontSize="13"/>
<TextBox Text="{Binding TimeOut}" Width="50" TextAlignment="Center" VerticalContentAlignment="Center" FontSize="13"/>
<Button Content="发送" Width="50" Margin="15 2 0 2" Command="{Binding _sendactioncomn}" Style="{StaticResource SocketButton}"/>
</StackPanel>
</Border>
@ -318,6 +366,7 @@
</Border>
-->
<!--gpio部分-->
<Border BorderBrush="Black" BorderThickness="0.5">
<Grid Margin="0 0 0 2">
<Grid.RowDefinitions>
@ -468,4 +517,6 @@
</ScrollViewer>
</Grid>
</Border>
</Border>
</Border>
</Window>

@ -75,7 +75,9 @@ namespace SocketExample
private string _linkbuttontext { get; set; }
private string _infotext;//信息框
public string Infotext { get => _infotext; set
public string Infotext
{
get => _infotext; set
{
_infotext = value;
OnPropertyChanged(); // 通知 UI 更新
@ -206,7 +208,7 @@ namespace SocketExample
string[] GPOdatasource = { "高", "低" };
string[] SendTextdatasource = { "单次读取", "时间段盘点" };
Borderwidth = ((int)SystemParameters.PrimaryScreenWidth-25)/4;
Borderwidth = ((int)SystemParameters.PrimaryScreenWidth - 60) / 4; //动态生成界面宽度
MessageText = string.Empty;
IPtext = "192.168.0.7";//默认IP
Porttext = "20108";//默认端口
@ -259,6 +261,7 @@ namespace SocketExample
private Task onRecieved(ITcpClient client, ReceivedDataEventArgs e) //接收事件
{
Text = Text.Replace(" ", "");
path = "";
string time = DateTime.Now.ToString();
string currentTime = time.Substring(9, time.Length - 9);
@ -350,7 +353,8 @@ namespace SocketExample
TagItems = items;
}
catch (Exception ex) {
catch (Exception ex)
{
Infotext += ex;
}
@ -618,7 +622,7 @@ namespace SocketExample
Thread.Sleep(1000);
GPIOthread = new Thread(new ThreadStart(delegate () { while (true) { byte[] data = strToToHexByte("AA 55 00 81 81 0D"); client.Send(data); Thread.Sleep(3000); } }));
GPIOthread = new Thread(new ThreadStart(delegate () { while (true) { byte[] data = strToToHexByte("AA 55 00 81 81 0D"); client.Send(data); Thread.Sleep(1000); } }));
GPIOthread.Start();//心跳获取GPIO状态
}
catch (Exception ex)
@ -747,7 +751,8 @@ namespace SocketExample
byte[] data = strToToHexByte("AA 55 02 02 07 D0 D7 0D");//获取2000ms内标签信息
client.Send(data);
}
catch (Exception ex) {
catch (Exception ex)
{
Infotext += $"发送读取命令时出错: {ex.Message}\n";
}
@ -780,7 +785,8 @@ namespace SocketExample
string setPowerString = "AA 55 14 42 ";//设置命令开头
int[] powers = new int[8] {int.Parse(Port1ReadText),int.Parse(Port2ReadText), int.Parse(Port3ReadText), int.Parse(Port4ReadText),
int.Parse(Port1WriteText),int.Parse(Port2WriteText),int.Parse(Port3WriteText),int.Parse(Port4WriteText)};
for (int i = 0; i < powers.Length/2; i++) {
for (int i = 0; i < powers.Length / 2; i++)
{
setPowerString += $"0{i + 1} {(powers[i] * 100).ToString("X").PadLeft(4, '0').Insert(2, " ")} {(powers[i + 4] * 100).ToString("X").PadLeft(4, '0').Insert(2, " ")} ";
}//功率设置时为两位数乘100后再转换为16进制字符串再填满左侧保证4位数最后两位两位隔开
byte[] powerdata = strToToHexByte(setPowerString);
@ -1152,23 +1158,34 @@ namespace SocketExample
}
}
#region 主界面参数
int currentcount = 0;//目前客户端的数量
List<PanelItem> items = new List<PanelItem>();//客户端组件列表
public static double? WindowLeft { get; set; }
public static double? WindowTop { get; set; }
public static double? WindowWidth { get; set; }
public static double? WindowHeight { get; set; }
public static WindowState? OriginWindowState { get; set; }
public static int? Buttonflag { get; set; }
public TCPWindowV2()
{
InitializeComponent();
EnsureFolderExists("日志文件夹");
this.Closing += TCPWindowV2_Closing;
SaveWindowSettings();
Buttonflag = 0;
}
#endregion
//结束所有线程,防止心跳线程冗余
private void TCPWindowV2_Closing(object sender, CancelEventArgs e)
{
System.Environment.Exit(0);
}
int currentcount = 0;//目前客户端的数量
List<PanelItem> items = new List<PanelItem>();//客户端组件列表
#region 主界面按钮事件
private void GenerateButton_Click(object sender, RoutedEventArgs e)//添加客户端框体
{
if (int.TryParse(CountTextBox.Text, out int count) && count > 0)
@ -1189,13 +1206,50 @@ namespace SocketExample
}
}
private void Shutdown_Button_Click(object sender, RoutedEventArgs e)
{
Application.Current.Shutdown();
}
private void Maxmize_Button_Click(object sender, RoutedEventArgs e)
{
if (Buttonflag == 0)
{
this.WindowState = WindowState.Maximized;
Maxmize_Button.Content = "缩小";
Buttonflag = 1;
}
else
{
LoadWindowSettings();
Maxmize_Button.Content = "最大化";
Buttonflag = 0;
}
}
private void Minimize_Button_Click(object sender, RoutedEventArgs e)
{
this.WindowState = WindowState.Minimized;
}
private void ClearButton_Click(object sender, RoutedEventArgs e)//清空客户端
{
foreach (PanelItem item in items)
{
item.dispose();
}
items = new List<PanelItem>();
PanelContainer.ItemsSource = null;
currentcount = 0;
}
#endregion
public class LinkCommand : ICommand //command方法实现
{
private Action _excute;
private Action<int> _excutewithindex;
public LinkCommand(Action action) {
public LinkCommand(Action action)
{
_excute = action;
}
@ -1217,17 +1271,6 @@ namespace SocketExample
}
}
private void ClearButton_Click(object sender, RoutedEventArgs e)//清空客户端
{
foreach (PanelItem item in items)
{
item.dispose();
}
items = new List<PanelItem>();
PanelContainer.ItemsSource = null;
currentcount = 0;
}
private static List<TagInfo> GetTagInfos(byte[] AutoDealReportData)
{
List<TagInfo> tagInfoList = new List<TagInfo>();
@ -1425,5 +1468,39 @@ namespace SocketExample
}
}
private void Border_MouseDown(object sender, MouseButtonEventArgs e)
{
if (e.ChangedButton == MouseButton.Left)
{
this.DragMove();
}
}
private void LoadWindowSettings()
{
if (WindowLeft.HasValue && WindowTop.HasValue)
{
this.Left = WindowLeft.Value;
this.Top = WindowTop.Value;
}
if (WindowWidth.HasValue && WindowHeight.HasValue)
{
this.Width = WindowWidth.Value;
this.Height = WindowHeight.Value;
}
if (OriginWindowState.HasValue)
{
this.WindowState = OriginWindowState.Value;
}
}
private void SaveWindowSettings()
{
WindowLeft = this.Left;
WindowTop = this.Top;
WindowWidth = this.Width;
WindowHeight = this.Height;
OriginWindowState = this.WindowState;
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Loading…
Cancel
Save