5 changed files with 196 additions and 8 deletions
@ -0,0 +1,59 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Text; |
|||
using TouchSocket.Core; |
|||
using TouchSocket.Sockets; |
|||
|
|||
namespace SunlightAggregationManager.UserClass |
|||
{ |
|||
public class AsyncTcpClient |
|||
{ |
|||
public static TouchSocket.Sockets.TcpClient tcpClient = new TouchSocket.Sockets.TcpClient(); |
|||
public static async void Configuration(string ip, string Name, string user, string Password) |
|||
{ |
|||
await TcpClient(tcpClient, "tcp://"+ip); |
|||
} |
|||
public static async Task TcpClient(TouchSocket.Sockets.TcpClient tcpClient, string ip) |
|||
{ |
|||
tcpClient.Connecting = (client, e) => { return EasyTask.CompletedTask; };//即将连接到服务器,此时已经创建socket,但是还未建立tcp
|
|||
tcpClient.Connected = (client, e) => |
|||
{ |
|||
|
|||
return EasyTask.CompletedTask; |
|||
};//成功连接到服务器
|
|||
tcpClient.Closing = (client, e) => { return EasyTask.CompletedTask; };//即将从服务器断开连接。此处仅主动断开才有效。
|
|||
tcpClient.Closed = (client, e) => { return EasyTask.CompletedTask; };//从服务器断开连接,当连接不成功时不会触发。
|
|||
#region Tcp客户端使用Received异步委托接收数据
|
|||
tcpClient.Received = (client, e) => |
|||
{ |
|||
//从服务器收到信息。但是一般byteBlock和requestInfo会根据适配器呈现不同的值。
|
|||
var mes = e.Memory.Span.ToString(Encoding.UTF8); |
|||
|
|||
//DataReceived.Received(mes);
|
|||
|
|||
return EasyTask.CompletedTask; |
|||
}; |
|||
#endregion
|
|||
|
|||
try |
|||
{ |
|||
await tcpClient.SetupAsync(new TouchSocketConfig() |
|||
.SetSingleStreamDataHandlingAdapter(() => new PeriodPackageAdapter())//以超时周期和包
|
|||
.SetRemoteIPHost(ip) |
|||
.ConfigurePlugins(a => |
|||
{ |
|||
a.UseReconnection<TouchSocket.Sockets.TcpClient>(options => |
|||
{ |
|||
options.PollingInterval = TimeSpan.FromSeconds(5); |
|||
}); |
|||
})); |
|||
|
|||
await tcpClient.ConnectAsync();//调用连接,当连接不成功时,会抛出异常。
|
|||
} |
|||
catch (Exception ex) |
|||
{ |
|||
Console.WriteLine("Tcp:" + ex.ToString()); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,72 @@ |
|||
<UserControl x:Class="SunlightAggregationManager.View.ServicePage" |
|||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" |
|||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" |
|||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" |
|||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" |
|||
xmlns:local="clr-namespace:SunlightAggregationManager.View" |
|||
xmlns:viewmodel="clr-namespace:SunlightAggregationManager.ViewModel" |
|||
d:DataContext="{d:DesignInstance Type=viewmodel:MainWindowViewModel}" |
|||
mc:Ignorable="d" |
|||
d:DesignHeight="720" d:DesignWidth="1080"> |
|||
<Grid> |
|||
<DataGrid x:Name="DataGridmachinesdata" |
|||
ItemsSource="{Binding Service.DefaultView}" |
|||
SelectionMode="Single" |
|||
AlternationCount="2" |
|||
IsReadOnly="True" |
|||
FontSize="26" |
|||
Margin="5,5,5,5" |
|||
AutoGenerateColumns="False" |
|||
MinColumnWidth="30" |
|||
HorizontalGridLinesBrush="#FFC9C9C9" |
|||
VerticalGridLinesBrush="#FFC9C9C9" |
|||
GridLinesVisibility="All" |
|||
BorderBrush="#CCCCCC" |
|||
BorderThickness="1,1,1,1" |
|||
ColumnHeaderHeight="40" |
|||
HorizontalContentAlignment="Right" |
|||
CanUserReorderColumns="False" |
|||
VerticalContentAlignment="Center"> |
|||
<DataGrid.RowStyle > |
|||
<Style TargetType="{x:Type DataGridRow}"> |
|||
<Style.Triggers> |
|||
<Trigger Property="ItemsControl.AlternationIndex" Value="0"> |
|||
<Setter Property="Background" Value="#FFFFFFFF" /> |
|||
<Setter Property="Height" Value="40" /> |
|||
</Trigger> |
|||
<Trigger Property="ItemsControl.AlternationIndex" Value="1"> |
|||
<Setter Property="Background" Value="#FFF0F0F0" /> |
|||
<Setter Property="Height" Value="40" /> |
|||
</Trigger> |
|||
<Trigger Property="IsMouseOver" Value="False"> |
|||
</Trigger> |
|||
</Style.Triggers> |
|||
</Style> |
|||
</DataGrid.RowStyle> |
|||
<DataGrid.CellStyle> |
|||
<Style TargetType="DataGridCell"> |
|||
<Setter Property="BorderThickness" Value="0"/> |
|||
<Setter Property="MinWidth" Value="20"/> |
|||
<Style.Triggers> |
|||
<Trigger Property="IsSelected" Value="True"> |
|||
<Setter Property="Background" Value="#FFC0C0C0"/> |
|||
<Setter Property="BorderBrush" Value="#FFC0C0C0"/> |
|||
<Setter Property="Foreground" Value="#000000"/> |
|||
</Trigger> |
|||
</Style.Triggers> |
|||
</Style> |
|||
</DataGrid.CellStyle> |
|||
|
|||
<DataGrid.Columns> |
|||
<!--列信息绑定--> |
|||
<DataGridTextColumn Header="ID" Width="100" FontSize="26" |
|||
Binding="{Binding ID}" MaxWidth="100" MinWidth="100" CanUserReorder="False"/> |
|||
<DataGridTextColumn Header="Status" Width="200" FontSize="26" |
|||
Binding="{Binding Status}" MaxWidth="200" MinWidth="200" CanUserReorder="False"/> |
|||
<DataGridTextColumn Header="Service" Width="*" FontSize="26" |
|||
Binding="{Binding Service}" MinWidth="200" CanUserReorder="False"/> |
|||
|
|||
</DataGrid.Columns> |
|||
</DataGrid> |
|||
</Grid> |
|||
</UserControl> |
|||
@ -0,0 +1,27 @@ |
|||
using SunlightAggregationManager.ViewModel; |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Text; |
|||
using System.Windows; |
|||
using System.Windows.Controls; |
|||
using System.Windows.Data; |
|||
using System.Windows.Documents; |
|||
using System.Windows.Input; |
|||
using System.Windows.Media; |
|||
using System.Windows.Media.Imaging; |
|||
using System.Windows.Navigation; |
|||
using System.Windows.Shapes; |
|||
|
|||
namespace SunlightAggregationManager.View |
|||
{ |
|||
/// <summary>
|
|||
/// ServicePage.xaml 的交互逻辑
|
|||
/// </summary>
|
|||
public partial class ServicePage : UserControl |
|||
{ |
|||
public ServicePage() |
|||
{ |
|||
InitializeComponent(); |
|||
} |
|||
} |
|||
} |
|||
Loading…
Reference in new issue