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);
|
// rs[i].CopyTo(ch,i);
|
||||||
// }
|
// }
|
||||||
|
Console.WriteLine(BitConverter.ToString(raw));
|
||||||
ch[15] = ((raw[0 ] & 0xFF) << 3 ) + ((raw[1 ] & 0xE0) >> 5); //res: 5
|
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[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);
|
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 _leftHorizonValue;
|
||||||
private double _lefttVerticalValue;
|
private double _lefttVerticalValue;
|
||||||
|
|
||||||
|
private double _leftUpValue = 0;
|
||||||
|
private double _midLeftValue = 0;
|
||||||
|
private double _midRightValue = 0;
|
||||||
public SliderConfig()
|
public SliderConfig()
|
||||||
{
|
{
|
||||||
_rightHorizonValue = _rightVerticalValue = _leftHorizonValue = _lefttVerticalValue = 0;
|
_rightHorizonValue = _rightVerticalValue = _leftHorizonValue = _lefttVerticalValue = 0;
|
||||||
|
@ -36,4 +39,19 @@ public class SliderConfig : ReactiveObject
|
||||||
get => _lefttVerticalValue;
|
get => _lefttVerticalValue;
|
||||||
set => this.RaiseAndSetIfChanged(ref _lefttVerticalValue, value);
|
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();
|
private ObservableCollection<CBPortItem> _portList = new();
|
||||||
public CBPortItem PortSelectItem { get; set; }
|
public CBPortItem PortSelectItem { get; set; }
|
||||||
public SliderConfig SliderValue { get; set; }
|
public SliderConfig SliderValue { get; }
|
||||||
|
public BtnConfig BtnIsPressed { get; }
|
||||||
|
|
||||||
private readonly SerialPipeIn _serialPipeIn;
|
private readonly SerialPipeIn _serialPipeIn;
|
||||||
private readonly CrsfParserPipeIn _crsfParserPipeIn;
|
private readonly CrsfParserPipeIn _crsfParserPipeIn;
|
||||||
|
@ -29,6 +30,7 @@ public class TProViewModel : ViewModelBase
|
||||||
public TProViewModel()
|
public TProViewModel()
|
||||||
{
|
{
|
||||||
SliderValue = new SliderConfig();
|
SliderValue = new SliderConfig();
|
||||||
|
BtnIsPressed = new BtnConfig();
|
||||||
|
|
||||||
PortList = CBPortItem.GetPortList();
|
PortList = CBPortItem.GetPortList();
|
||||||
_serialPipeIn = new SerialPipeIn();
|
_serialPipeIn = new SerialPipeIn();
|
||||||
|
@ -40,6 +42,20 @@ public class TProViewModel : ViewModelBase
|
||||||
SliderValue.RightVerticalValue = data.channel[1];
|
SliderValue.RightVerticalValue = data.channel[1];
|
||||||
SliderValue.LeftHorizonValue = data.channel[2];
|
SliderValue.LeftHorizonValue = data.channel[2];
|
||||||
SliderValue.LeftVerticalValue = data.channel[3];
|
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);
|
ReadThread = new Thread(ReadThreadEntry);
|
||||||
|
|
||||||
|
@ -105,7 +121,7 @@ public class TProViewModel : ViewModelBase
|
||||||
private void PortOpenButtonClick()
|
private void PortOpenButtonClick()
|
||||||
{
|
{
|
||||||
if (PortSelectItem.PortName == "") return;
|
if (PortSelectItem.PortName == "") return;
|
||||||
SerialPort.Me.Open(PortSelectItem.PortName,115200,1000);
|
SerialPort.Me.Open(PortSelectItem.PortName,250000,1000);
|
||||||
IsOpenPortButtonVisible = false;
|
IsOpenPortButtonVisible = false;
|
||||||
IsClosePortButtonVisible = true;
|
IsClosePortButtonVisible = true;
|
||||||
ReadThread.Start();
|
ReadThread.Start();
|
||||||
|
|
|
@ -11,6 +11,15 @@
|
||||||
</UserControl.DataContext>
|
</UserControl.DataContext>
|
||||||
<!-- 样式设置 -->
|
<!-- 样式设置 -->
|
||||||
<UserControl.Styles>
|
<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">
|
<Style Selector="Button.open">
|
||||||
<Setter Property="Background" Value="{DynamicResource DarkBlueBrush}"/>
|
<Setter Property="Background" Value="{DynamicResource DarkBlueBrush}"/>
|
||||||
<Setter Property="Foreground" Value="White"/>
|
<Setter Property="Foreground" Value="White"/>
|
||||||
|
@ -39,8 +48,9 @@
|
||||||
<!-- 页面布局 -->
|
<!-- 页面布局 -->
|
||||||
<Grid RowDefinitions="60,*,40,2*">
|
<Grid RowDefinitions="60,*,40,2*">
|
||||||
<Grid Grid.Row="0" Background="Blue" ColumnDefinitions="*,2*,2*,*">
|
<Grid Grid.Row="0" Background="Blue" ColumnDefinitions="*,2*,2*,*">
|
||||||
<Slider Grid.Column="0" Width="80" HorizontalAlignment="Center"/>
|
<Slider Grid.Column="0" Width="80" HorizontalAlignment="Center"
|
||||||
<ComboBox Grid.Column="1" SelectedIndex="0" VerticalAlignment="Center" Width="120" HorizontalAlignment="Right" Margin="10,0"
|
Value="{Binding SliderValue.LeftUpValue}"/>
|
||||||
|
<ComboBox Grid.Column="1" SelectedIndex="0" VerticalAlignment="Center" Width="100" HorizontalAlignment="Right" Margin="5,0"
|
||||||
Items="{Binding PortList}"
|
Items="{Binding PortList}"
|
||||||
SelectedItem="{Binding PortSelectItem}"
|
SelectedItem="{Binding PortSelectItem}"
|
||||||
PointerPressed="{eventBinder:EventBinding OnPortListComboBoxPressed}">
|
PointerPressed="{eventBinder:EventBinding OnPortListComboBoxPressed}">
|
||||||
|
@ -51,29 +61,34 @@
|
||||||
</ComboBox.ItemTemplate>
|
</ComboBox.ItemTemplate>
|
||||||
</ComboBox>
|
</ComboBox>
|
||||||
<Button Grid.Column="2" Classes="open" Command="{Binding OpenPort}" IsVisible="{Binding IsOpenPortButtonVisible}"
|
<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">
|
Name="BtnPortOpen">
|
||||||
</Button>
|
</Button>
|
||||||
<Button Grid.Column="2" Classes="close" Command="{Binding ClosePort}" IsVisible="{Binding IsClosePortButtonVisible}"
|
<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">
|
Name="BtnPortClose">
|
||||||
</Button>
|
</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 Grid.Row="1" Background="Gray" ColumnDefinitions="2*,*,4*,*,2*">
|
<Grid Grid.Row="1" Background="Gray" ColumnDefinitions="2*,*,4*,*,2*">
|
||||||
<Button Grid.Column="0" Width="80" Height="60" HorizontalAlignment="Center"/>
|
<Button Grid.Column="0" Classes="pad" Width="80" Height="60" HorizontalAlignment="Center"
|
||||||
<Slider Grid.Column="1" Orientation="Vertical" HorizontalAlignment="Center"/>
|
IsPressed="{Binding BtnIsPressed.BtnLeftUp}"/>
|
||||||
<Slider Grid.Column="3" Orientation="Vertical" HorizontalAlignment="Center"/>
|
<Slider Grid.Column="1" Orientation="Vertical" HorizontalAlignment="Center"
|
||||||
<Button Grid.Column="4" Width="80" Height="60" 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 Grid.Row="2" Background="Yellow">
|
<Grid Grid.Row="2" Background="Yellow">
|
||||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
|
||||||
<Button Width="40" Margin="10"/>
|
<Button Classes="pad" IsPressed="{Binding BtnIsPressed.BtnModel1 }" Width="40" Margin="10"/>
|
||||||
<Button Width="40" Margin="10"/>
|
<Button Classes="pad" IsPressed="{Binding BtnIsPressed.BtnModel2 }" Width="40" Margin="10"/>
|
||||||
<Button Width="40" Margin="10"/>
|
<Button Classes="pad" IsPressed="{Binding BtnIsPressed.BtnModel3 }" Width="40" Margin="10"/>
|
||||||
<Button Width="40" Margin="10"/>
|
<Button Classes="pad" IsPressed="{Binding BtnIsPressed.BtnModel4 }" Width="40" Margin="10"/>
|
||||||
<Button Width="40" Margin="10"/>
|
<Button Classes="pad" IsPressed="{Binding BtnIsPressed.BtnModel5 }" Width="40" Margin="10"/>
|
||||||
<Button Width="40" Margin="10"/>
|
<Button Classes="pad" IsPressed="{Binding BtnIsPressed.BtnModel6 }" Width="40" Margin="10"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid Grid.Row="3" Background="Green" ColumnDefinitions="*,2*,*">
|
<Grid Grid.Row="3" Background="Green" ColumnDefinitions="*,2*,*">
|
||||||
|
|
Loading…
Reference in New Issue