Compare commits

...

2 Commits

Author SHA1 Message Date
zhangxy 2aaefaa247 1.添加注释 2 days ago
zhangxy 8dc60981a3 1.读取功率
2.修改功率
2 days ago

@ -162,22 +162,70 @@
</ScrollViewer>
</Border>
<Border BorderBrush="Black" BorderThickness="0.5">
<Grid Margin="0 0 0 2">
<Grid Margin="0 0 0 0">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Label Content="功率状态" FontSize="14" FontWeight="Bold" FontStyle="Oblique" HorizontalAlignment="Center" Grid.Row="0"/>
<StackPanel Orientation="Horizontal" Grid.Row="1">
<Label Content="读功率:" FontSize="14"/>
<Label Content="{Binding ReadPowerState}" FontSize="14"></Label>
</StackPanel>
<StackPanel Orientation="Horizontal" Grid.Row="2">
<Label Content="写功率:" FontSize="14"/>
<Label Content="{Binding WritePowerState}" FontSize="14"></Label>
</StackPanel>
<Border BorderBrush="Black" BorderThickness="0.5" Grid.Row="0">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Label Content="功率状态" FontSize="14" FontWeight="Bold" FontStyle="Oblique" HorizontalAlignment="Center" Grid.Row="0"/>
<StackPanel Orientation="Horizontal" Grid.Row="1">
<Label Content="读功率:" FontSize="14"/>
<Label Content="{Binding ReadPowerState}" FontSize="14"></Label>
</StackPanel>
<StackPanel Orientation="Horizontal" Grid.Row="2">
<Label Content="写功率:" FontSize="14"/>
<Label Content="{Binding WritePowerState}" FontSize="14"></Label>
</StackPanel>
</Grid>
</Border>
<Border BorderBrush="Black" BorderThickness="0.5" Grid.Row="1">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal" Margin="0 1 0 1" Grid.Row="0">
<Label Content="读功率:" FontSize="14"/>
<Label Content="端口1:" FontSize="14"/>
<TextBox Text="{Binding Port1ReadText}" Width="25" Height="20" VerticalAlignment="Center" HorizontalContentAlignment="Center"/>
<Label Content="端口2:" FontSize="14"/>
<TextBox Text="{Binding Port2ReadText}" Width="25" Height="20" VerticalAlignment="Center" HorizontalContentAlignment="Center"/>
<Label Content="端口3:" FontSize="14"/>
<TextBox Text="{Binding Port3ReadText}" Width="25" Height="20" VerticalAlignment="Center" HorizontalContentAlignment="Center"/>
<Label Content="端口4:" FontSize="14"/>
<TextBox Text="{Binding Port4ReadText}" Width="25" Height="20" VerticalAlignment="Center" HorizontalContentAlignment="Center"/>
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="0 1 0 1" Grid.Row="1">
<Label Content="写功率:" FontSize="14"/>
<Label Content="端口1:" FontSize="14"/>
<TextBox Text="{Binding Port1WriteText}" Width="25" Height="20" VerticalAlignment="Center" HorizontalContentAlignment="Center"/>
<Label Content="端口2:" FontSize="14"/>
<TextBox Text="{Binding Port2WriteText}" Width="25" Height="20" VerticalAlignment="Center" HorizontalContentAlignment="Center"/>
<Label Content="端口3:" FontSize="14"/>
<TextBox Text="{Binding Port3WriteText}" Width="25" Height="20" VerticalAlignment="Center" HorizontalContentAlignment="Center"/>
<Label Content="端口4:" FontSize="14"/>
<TextBox Text="{Binding Port4WriteText}" Width="25" Height="20" VerticalAlignment="Center" HorizontalContentAlignment="Center"/>
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="0 1 0 3" Grid.Row="2">
<Button Content="设置功率" Command="{Binding _setpowercomn}" Width="50" Height="25" Margin="100 0 0 0" Style="{StaticResource SocketButton}" />
<Button Content="获取功率" Command="{Binding _getpowercomn}" Width="50" Height="25" Margin="60 0 0 0" Style="{StaticResource SocketButton}" />
</StackPanel>
</Grid>
</Border>
</Grid>
</Border>
<Border BorderBrush="Black" BorderThickness="0.5">
<Grid Margin="0 0 0 2">

@ -69,6 +69,27 @@ namespace SocketExample
public string ReadPowerState { get => _readpowerstate; set { _readpowerstate = value; OnPropertyChanged(); } }
private string _writepowerstate;
public string WritePowerState { get => _writepowerstate; set { _writepowerstate = value; OnPropertyChanged(); } }
private string _port1readtext;
private string _port2readtext;
private string _port3readtext;
private string _port4readtext;//设置读功率1-4
private string _port1writetext;
private string _port2writetext;
private string _port3writetext;
private string _port4writetext;//设置读功率1-4
public string Port1ReadText { get => _port1readtext; set { _port1readtext = value; OnPropertyChanged(); } }
public string Port2ReadText { get => _port2readtext; set { _port2readtext = value; OnPropertyChanged(); } }
public string Port3ReadText { get => _port3readtext; set { _port3readtext = value; OnPropertyChanged(); } }
public string Port4ReadText { get => _port4readtext; set { _port4readtext = value; OnPropertyChanged(); } }
public string Port1WriteText { get => _port1writetext; set { _port1writetext = value; OnPropertyChanged(); } }
public string Port2WriteText { get => _port2writetext; set { _port2writetext = value; OnPropertyChanged(); } }
public string Port3WriteText { get => _port3writetext; set { _port3writetext = value; OnPropertyChanged(); } }
public string Port4WriteText { get => _port4writetext; set { _port4writetext = value; OnPropertyChanged(); } }
private string _gpo1;
private string _gpo2;
private string _gpo3;
@ -109,6 +130,10 @@ namespace SocketExample
public LinkCommand clearcomn;//清空命令
public LinkCommand setpowercomn; //设置功率
public LinkCommand getpowercomn;//获取功率
public PanelItem(int index)
{
Text = $"客户端{index + 1}";
@ -117,6 +142,8 @@ namespace SocketExample
sendcomn = new LinkCommand(Button_Click_Send);//绑定发送按钮的事件
disconnectcomn = new LinkCommand(Button_disconnect);//绑定断连按钮的事件
clearcomn = new LinkCommand(Button_clear);//绑定清空按钮的事件
setpowercomn = new LinkCommand(Button_SetPower);
getpowercomn = new LinkCommand(Button_GetPower);
try
{
@ -158,6 +185,10 @@ namespace SocketExample
public LinkCommand _disconnectcomn { get { return disconnectcomn; } }
public LinkCommand _clearcomn { get { return clearcomn; } }
public LinkCommand _setpowercomn { get { return setpowercomn; } }
public LinkCommand _getpowercomn { get { return getpowercomn; } }
private Task onSend(ITcpClient client, ReceivedDataEventArgs e)
{
@ -290,8 +321,8 @@ namespace SocketExample
string tempWritestate = "";
for (int n = 0;n < (Convert.ToInt32(dataLength,16)/5);n++)
{
tempReadstate += $"A{n+1} : {(Convert.ToInt32(readStateString.Substring(12+10*n,4),16)/100).ToString()} ";
tempWritestate += $"A{n + 1} : {(Convert.ToInt32(readStateString.Substring(16 + 10 * n, 4), 16) / 100).ToString()} ";
tempReadstate += $"端口{n+1}{(Convert.ToInt32(readStateString.Substring(12+10*n,4),16)/100).ToString()} ";
tempWritestate += $"端口{n + 1}{(Convert.ToInt32(readStateString.Substring(16 + 10 * n, 4), 16) / 100).ToString()} ";
}
ReadPowerState = tempReadstate;
WritePowerState = tempWritestate;
@ -465,6 +496,51 @@ namespace SocketExample
client.Send(data);
}
void Button_SetPower()
{
try
{
if(_port1readtext == null || _port1writetext == null|| _port2readtext == null || _port2writetext == null || _port3readtext == null || _port3writetext == null || _port4readtext == null || _port4writetext == null)
{
MessageBox.Show("数值不可为空!");
return;
}
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++) {
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位数最后两位两位隔开
setPowerString += "52 0D";//命令结尾
byte[] data = strToToHexByte(setPowerString);
client.Send(data);
byte[] confirmdata1 = strToToHexByte("AA 55 05 5F ");//保存命令
byte[] confirmdata2 = System.Text.Encoding.UTF8.GetBytes("\"SAVE\" ");
byte[] confirmdata3 = strToToHexByte("01 5A 0D");
byte[] confirmdata = new byte[confirmdata1.Length+ confirmdata2.Length+ confirmdata3.Length];
confirmdata1.CopyTo(confirmdata,0);
confirmdata2.CopyTo(confirmdata,confirmdata1.Length);
confirmdata3.CopyTo(confirmdata,confirmdata1.Length+ confirmdata2.Length);//保存命令拼接
client.Send(confirmdata);
data = strToToHexByte("AA 55 00 72 72 0D");//获取功率
client.Send(data);
}
catch(Exception e)
{
Infotext += $"处理请求时出错: {e.Message}\n";
}
}
void Button_GetPower()
{
byte[] data = strToToHexByte("AA 55 00 72 72 0D");//获取功率
client.Send(data);
}
void Button_Click_Send()//发送按钮的事件
{
try

Loading…
Cancel
Save