feat: 添加所有通道绑定
parent
f866baad8d
commit
9e6524cee1
|
@ -0,0 +1,66 @@
|
|||
using System.Drawing.Imaging;
|
||||
using ReactiveUI;
|
||||
|
||||
namespace LoraGamepad.Models;
|
||||
|
||||
public class BtnConfig : ReactiveObject
|
||||
{
|
||||
private bool _btnLeftUp;
|
||||
private bool _btnRightUp;
|
||||
private bool _btnRightDown;
|
||||
|
||||
private bool _btnModel1;
|
||||
private bool _btnModel2;
|
||||
private bool _btnModel3;
|
||||
private bool _btnModel4;
|
||||
private bool _btnModel5;
|
||||
private bool _btnModel6;
|
||||
|
||||
public bool BtnModel1
|
||||
{
|
||||
get => _btnModel1;
|
||||
set => this.RaiseAndSetIfChanged(ref _btnModel1, value);
|
||||
}
|
||||
public bool BtnModel2
|
||||
{
|
||||
get => _btnModel2;
|
||||
set => this.RaiseAndSetIfChanged(ref _btnModel2, value);
|
||||
}
|
||||
public bool BtnModel3
|
||||
{
|
||||
get => _btnModel3;
|
||||
set => this.RaiseAndSetIfChanged(ref _btnModel3, value);
|
||||
}
|
||||
public bool BtnModel4
|
||||
{
|
||||
get => _btnModel4;
|
||||
set => this.RaiseAndSetIfChanged(ref _btnModel4, value);
|
||||
}
|
||||
public bool BtnModel5
|
||||
{
|
||||
get => _btnModel5;
|
||||
set => this.RaiseAndSetIfChanged(ref _btnModel5, value);
|
||||
}
|
||||
public bool BtnModel6
|
||||
{
|
||||
get => _btnModel6;
|
||||
set => this.RaiseAndSetIfChanged(ref _btnModel6, value);
|
||||
}
|
||||
public bool BtnLeftUp
|
||||
{
|
||||
get => _btnLeftUp;
|
||||
set => this.RaiseAndSetIfChanged(ref _btnLeftUp, value);
|
||||
}
|
||||
public bool BtnRightUp
|
||||
{
|
||||
get => _btnRightUp;
|
||||
set => this.RaiseAndSetIfChanged(ref _btnRightUp, value);
|
||||
}
|
||||
public bool BtnRightDown
|
||||
{
|
||||
get => _btnRightDown;
|
||||
set => this.RaiseAndSetIfChanged(ref _btnRightDown, value);
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -30,7 +30,7 @@ public class CrsfChMsg
|
|||
// {
|
||||
// rs[i].CopyTo(ch,i);
|
||||
// }
|
||||
|
||||
Console.WriteLine(BitConverter.ToString(raw));
|
||||
ch[15] = ((raw[0 ] & 0xFF) << 3 ) + ((raw[1 ] & 0xE0) >> 5); //res: 5
|
||||
ch[14] = ((raw[1 ] & 0x1F) << 6 ) + ((raw[2 ] & 0xFC) >> 2); //res: 3
|
||||
ch[13] = ((raw[2 ] & 0x03) << 9 ) + ((raw[3 ] & 0xFF) << 1)+ ((raw[4 ] & 0x80) >> 7);
|
||||
|
|
|
@ -10,6 +10,9 @@ public class SliderConfig : ReactiveObject
|
|||
private double _leftHorizonValue;
|
||||
private double _lefttVerticalValue;
|
||||
|
||||
private double _leftUpValue = 0;
|
||||
private double _midLeftValue = 0;
|
||||
private double _midRightValue = 0;
|
||||
public SliderConfig()
|
||||
{
|
||||
_rightHorizonValue = _rightVerticalValue = _leftHorizonValue = _lefttVerticalValue = 0;
|
||||
|
@ -36,4 +39,19 @@ public class SliderConfig : ReactiveObject
|
|||
get => _lefttVerticalValue;
|
||||
set => this.RaiseAndSetIfChanged(ref _lefttVerticalValue, value);
|
||||
}
|
||||
public double LeftUpValue
|
||||
{
|
||||
get => _leftUpValue;
|
||||
set => this.RaiseAndSetIfChanged(ref _leftUpValue, value);
|
||||
}
|
||||
public double MidLeftValue
|
||||
{
|
||||
get => _midLeftValue;
|
||||
set => this.RaiseAndSetIfChanged(ref _midLeftValue, value);
|
||||
}
|
||||
public double MidRightValue
|
||||
{
|
||||
get => _midRightValue;
|
||||
set => this.RaiseAndSetIfChanged(ref _midRightValue, value);
|
||||
}
|
||||
}
|
|
@ -18,7 +18,8 @@ public class TProViewModel : ViewModelBase
|
|||
|
||||
private ObservableCollection<CBPortItem> _portList = new();
|
||||
public CBPortItem PortSelectItem { get; set; }
|
||||
public SliderConfig SliderValue { get; set; }
|
||||
public SliderConfig SliderValue { get; }
|
||||
public BtnConfig BtnIsPressed { get; }
|
||||
|
||||
private readonly SerialPipeIn _serialPipeIn;
|
||||
private readonly CrsfParserPipeIn _crsfParserPipeIn;
|
||||
|
@ -29,6 +30,7 @@ public class TProViewModel : ViewModelBase
|
|||
public TProViewModel()
|
||||
{
|
||||
SliderValue = new SliderConfig();
|
||||
BtnIsPressed = new BtnConfig();
|
||||
|
||||
PortList = CBPortItem.GetPortList();
|
||||
_serialPipeIn = new SerialPipeIn();
|
||||
|
@ -40,6 +42,20 @@ public class TProViewModel : ViewModelBase
|
|||
SliderValue.RightVerticalValue = data.channel[1];
|
||||
SliderValue.LeftHorizonValue = data.channel[2];
|
||||
SliderValue.LeftVerticalValue = data.channel[3];
|
||||
// Console.WriteLine($"{data.channel[4]},{data.channel[5]},{data.channel[6]},{data.channel[7]},{data.channel[8]},{data.channel[9]}");
|
||||
// Console.WriteLine($"{data.channel[10]},{data.channel[11]},{data.channel[12]},{data.channel[13]},{data.channel[14]},{data.channel[15]}");
|
||||
SliderValue.LeftUpValue = data.channel[4];
|
||||
BtnIsPressed.BtnLeftUp = data.channel[5] > 0;
|
||||
BtnIsPressed.BtnRightUp = data.channel[6] > 0;
|
||||
BtnIsPressed.BtnRightDown = data.channel[7] > 0;
|
||||
SliderValue.MidLeftValue = data.channel[8];
|
||||
SliderValue.MidRightValue = data.channel[9];
|
||||
BtnIsPressed.BtnModel1 = data.channel[10] > 0;
|
||||
BtnIsPressed.BtnModel2 = data.channel[11] > 0;
|
||||
BtnIsPressed.BtnModel3 = data.channel[12] > 0;
|
||||
BtnIsPressed.BtnModel4 = data.channel[13] > 0;
|
||||
BtnIsPressed.BtnModel5 = data.channel[14] > 0;
|
||||
BtnIsPressed.BtnModel6 = data.channel[15] > 0;
|
||||
};
|
||||
ReadThread = new Thread(ReadThreadEntry);
|
||||
|
||||
|
@ -105,7 +121,7 @@ public class TProViewModel : ViewModelBase
|
|||
private void PortOpenButtonClick()
|
||||
{
|
||||
if (PortSelectItem.PortName == "") return;
|
||||
SerialPort.Me.Open(PortSelectItem.PortName,115200,1000);
|
||||
SerialPort.Me.Open(PortSelectItem.PortName,250000,1000);
|
||||
IsOpenPortButtonVisible = false;
|
||||
IsClosePortButtonVisible = true;
|
||||
ReadThread.Start();
|
||||
|
|
|
@ -11,6 +11,15 @@
|
|||
</UserControl.DataContext>
|
||||
<!-- 样式设置 -->
|
||||
<UserControl.Styles>
|
||||
<Style Selector="Button.pad">
|
||||
<Setter Property="Background" Value="{DynamicResource DarkBlueBrush}"/>
|
||||
<Setter Property="Foreground" Value="White"/>
|
||||
<Setter Property="FontSize" Value="18"/>
|
||||
</Style>
|
||||
<Style Selector="Button.pad:pressed /template/ ContentPresenter">
|
||||
<Setter Property="Background" Value="{DynamicResource BrightRedBrush}"/>
|
||||
<Setter Property="TextBlock.Foreground" Value="White"/>
|
||||
</Style>
|
||||
<Style Selector="Button.open">
|
||||
<Setter Property="Background" Value="{DynamicResource DarkBlueBrush}"/>
|
||||
<Setter Property="Foreground" Value="White"/>
|
||||
|
@ -39,8 +48,9 @@
|
|||
<!-- 页面布局 -->
|
||||
<Grid RowDefinitions="60,*,40,2*">
|
||||
<Grid Grid.Row="0" Background="Blue" ColumnDefinitions="*,2*,2*,*">
|
||||
<Slider Grid.Column="0" Width="80" HorizontalAlignment="Center"/>
|
||||
<ComboBox Grid.Column="1" SelectedIndex="0" VerticalAlignment="Center" Width="120" HorizontalAlignment="Right" Margin="10,0"
|
||||
<Slider Grid.Column="0" Width="80" HorizontalAlignment="Center"
|
||||
Value="{Binding SliderValue.LeftUpValue}"/>
|
||||
<ComboBox Grid.Column="1" SelectedIndex="0" VerticalAlignment="Center" Width="100" HorizontalAlignment="Right" Margin="5,0"
|
||||
Items="{Binding PortList}"
|
||||
SelectedItem="{Binding PortSelectItem}"
|
||||
PointerPressed="{eventBinder:EventBinding OnPortListComboBoxPressed}">
|
||||
|
@ -51,29 +61,34 @@
|
|||
</ComboBox.ItemTemplate>
|
||||
</ComboBox>
|
||||
<Button Grid.Column="2" Classes="open" Command="{Binding OpenPort}" IsVisible="{Binding IsOpenPortButtonVisible}"
|
||||
HorizontalAlignment="Left" Margin="0,0,10,0" Content="打开串口" HorizontalContentAlignment="Center" Width="100"
|
||||
HorizontalAlignment="Left" Margin="5,0,0,0" Content="打开串口" HorizontalContentAlignment="Center" Width="100"
|
||||
Name="BtnPortOpen">
|
||||
</Button>
|
||||
<Button Grid.Column="2" Classes="close" Command="{Binding ClosePort}" IsVisible="{Binding IsClosePortButtonVisible}"
|
||||
HorizontalAlignment="Left" Margin="0,0,10,0" Content="关闭串口" HorizontalContentAlignment="Center" Width="100"
|
||||
HorizontalAlignment="Left" Margin="5,0,0,0" Content="关闭串口" HorizontalContentAlignment="Center" Width="100"
|
||||
Name="BtnPortClose">
|
||||
</Button>
|
||||
<Button Grid.Column="3" Width="100" Height="40"/>
|
||||
<Button Grid.Column="3" Classes="pad" Width="80" Height="40" HorizontalAlignment="Left"
|
||||
IsPressed="{Binding BtnIsPressed.BtnRightDown}"/>
|
||||
</Grid>
|
||||
<Grid Grid.Row="1" Background="Gray" ColumnDefinitions="2*,*,4*,*,2*">
|
||||
<Button Grid.Column="0" Width="80" Height="60" HorizontalAlignment="Center"/>
|
||||
<Slider Grid.Column="1" Orientation="Vertical" HorizontalAlignment="Center"/>
|
||||
<Slider Grid.Column="3" Orientation="Vertical" HorizontalAlignment="Center"/>
|
||||
<Button Grid.Column="4" Width="80" Height="60" HorizontalAlignment="Center"/>
|
||||
<Button Grid.Column="0" Classes="pad" Width="80" Height="60" HorizontalAlignment="Center"
|
||||
IsPressed="{Binding BtnIsPressed.BtnLeftUp}"/>
|
||||
<Slider Grid.Column="1" Orientation="Vertical" HorizontalAlignment="Center"
|
||||
Value="{Binding SliderValue.MidLeftValue}"/>
|
||||
<Slider Grid.Column="3" Orientation="Vertical" HorizontalAlignment="Center"
|
||||
Value="{Binding SliderValue.MidRightValue}"/>
|
||||
<Button Grid.Column="4" Classes="pad" Width="80" Height="60" HorizontalAlignment="Center"
|
||||
IsPressed="{Binding BtnIsPressed.BtnRightUp}"/>
|
||||
</Grid>
|
||||
<Grid Grid.Row="2" Background="Yellow">
|
||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
|
||||
<Button Width="40" Margin="10"/>
|
||||
<Button Width="40" Margin="10"/>
|
||||
<Button Width="40" Margin="10"/>
|
||||
<Button Width="40" Margin="10"/>
|
||||
<Button Width="40" Margin="10"/>
|
||||
<Button Width="40" Margin="10"/>
|
||||
<Button Classes="pad" IsPressed="{Binding BtnIsPressed.BtnModel1 }" Width="40" Margin="10"/>
|
||||
<Button Classes="pad" IsPressed="{Binding BtnIsPressed.BtnModel2 }" Width="40" Margin="10"/>
|
||||
<Button Classes="pad" IsPressed="{Binding BtnIsPressed.BtnModel3 }" Width="40" Margin="10"/>
|
||||
<Button Classes="pad" IsPressed="{Binding BtnIsPressed.BtnModel4 }" Width="40" Margin="10"/>
|
||||
<Button Classes="pad" IsPressed="{Binding BtnIsPressed.BtnModel5 }" Width="40" Margin="10"/>
|
||||
<Button Classes="pad" IsPressed="{Binding BtnIsPressed.BtnModel6 }" Width="40" Margin="10"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
<Grid Grid.Row="3" Background="Green" ColumnDefinitions="*,2*,*">
|
||||
|
|
Loading…
Reference in New Issue