758 lines
23 KiB
XML
758 lines
23 KiB
XML
<Window
|
|
x:Class="WPFSerialAssistant.MainWindow"
|
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
|
Title="EF3串口解析助手 (Version 0.1)"
|
|
Width="1024"
|
|
Height="600"
|
|
MinWidth="1024"
|
|
MinHeight="550"
|
|
Closing="Window_Closing"
|
|
Icon="/icon/HexagonNew.ico"
|
|
PreviewKeyDown="Window_KeyDown"
|
|
WindowStartupLocation="CenterScreen"
|
|
mc:Ignorable="d">
|
|
<DockPanel Name="rootPanel">
|
|
<!-- 菜单栏 -->
|
|
<Menu
|
|
Name="menuBar"
|
|
Padding="2"
|
|
DockPanel.Dock="Top">
|
|
<!-- 文件 -->
|
|
<MenuItem Header="文件(_F)">
|
|
<MenuItem
|
|
Name="saveSerialDataMenuItem"
|
|
Click="saveSerialDataMenuItem_Click"
|
|
Header="保存(_S)"
|
|
Visibility="Collapsed" />
|
|
<MenuItem
|
|
Name="saveConfigMenuItem"
|
|
Click="saveConfigMenuItem_Click"
|
|
Header="保存配置" />
|
|
<MenuItem
|
|
Name="loadConfigMenuItem"
|
|
Click="loadConfigMenuItem_Click"
|
|
Header="加载配置(_L)"
|
|
Visibility="Collapsed" />
|
|
<MenuItem
|
|
Name="exitMenuItem"
|
|
Click="exitMenuItem_Click"
|
|
Header="退出" />
|
|
</MenuItem>
|
|
<!-- 设置 -->
|
|
<MenuItem Header="设置(_S)">
|
|
<MenuItem Header="发送追加">
|
|
<RadioButton
|
|
Name="appendNoneRadioButton"
|
|
Click="appendRadioButton_Click"
|
|
Content="无"
|
|
Tag="none" />
|
|
<RadioButton
|
|
Name="appendReturnRadioButton"
|
|
Click="appendRadioButton_Click"
|
|
Content="回车(\r)"
|
|
Tag="return" />
|
|
<RadioButton
|
|
Name="appednNewLineRadioButton"
|
|
Click="appendRadioButton_Click"
|
|
Content="新行(\n)"
|
|
IsChecked="True"
|
|
Tag="newline" />
|
|
<RadioButton
|
|
Name="appendReturnNewLineRadioButton"
|
|
Click="appendRadioButton_Click"
|
|
Content="回车新行(\r\n)"
|
|
Tag="retnewline" />
|
|
</MenuItem>
|
|
</MenuItem>
|
|
<!-- 视图 -->
|
|
<MenuItem Header="视图(_V)">
|
|
<MenuItem
|
|
Name="serialSettingViewMenuItem"
|
|
Click="serialSettingViewMenuItem_Click"
|
|
Header="串口配置面板"
|
|
IsChecked="True" />
|
|
<MenuItem
|
|
Name="autoSendDataSettingViewMenuItem"
|
|
Click="autoSendDataSettingViewMenuItem_Click"
|
|
Header="自动发送设置面板"
|
|
IsChecked="True" />
|
|
<MenuItem
|
|
Name="serialCommunicationSettingViewMenuItem"
|
|
Click="serialCommunicationSettingViewMenuItem_Click"
|
|
Header="通信设置面板"
|
|
IsChecked="True" />
|
|
<MenuItem
|
|
Name="compactViewMenuItem"
|
|
Click="compactViewMenuItem_Click"
|
|
Header="简洁视图"
|
|
IsChecked="False"
|
|
Visibility="Visible" />
|
|
</MenuItem>
|
|
<!-- 帮助 -->
|
|
<MenuItem Header="帮助(_H)">
|
|
<MenuItem
|
|
Name="aboutMenuItem"
|
|
Click="aboutMenuItem_Click"
|
|
Header="关于(_A)" />
|
|
<MenuItem
|
|
Name="helpMenuItem"
|
|
Click="helpMenuItem_Click"
|
|
Header="软件文档(_D)" />
|
|
</MenuItem>
|
|
</Menu>
|
|
<!-- 状态栏 -->
|
|
<StatusBar
|
|
Name="statusBar"
|
|
Padding="2"
|
|
Background="#FF007ACC"
|
|
DockPanel.Dock="Bottom">
|
|
<StatusBarItem HorizontalAlignment="Left">
|
|
<TextBlock Name="statusInfoTextBlock" Foreground="White">欢迎使用串口助手!</TextBlock>
|
|
</StatusBarItem>
|
|
<StatusBarItem>
|
|
<ProgressBar
|
|
Name="progressBar"
|
|
Width="150"
|
|
Height="10"
|
|
Margin="10,0,0,0"
|
|
Background="{Binding ElementName=statusBar, Path=Background}"
|
|
BorderBrush="White"
|
|
Foreground="White"
|
|
IsIndeterminate="True"
|
|
SmallChange="1"
|
|
Visibility="Collapsed"
|
|
Value="10" />
|
|
</StatusBarItem>
|
|
<StatusBarItem
|
|
Name="dataRecvStatusBarItem"
|
|
Margin="0,0,0,0"
|
|
Visibility="Collapsed">
|
|
<StackPanel Orientation="Horizontal">
|
|
<Ellipse
|
|
Width="5"
|
|
Height="5"
|
|
Margin="0,0,5,0"
|
|
Fill="White" />
|
|
<Ellipse
|
|
Width="5"
|
|
Height="5"
|
|
Margin="0,0,5,0"
|
|
Fill="White" />
|
|
<Ellipse
|
|
Width="5"
|
|
Height="5"
|
|
Margin="0,0,5,0"
|
|
Fill="White" />
|
|
<Ellipse
|
|
Width="5"
|
|
Height="5"
|
|
Margin="0,0,5,0"
|
|
Fill="White" />
|
|
<Ellipse
|
|
Width="5"
|
|
Height="5"
|
|
Margin="0,0,5,0"
|
|
Fill="White" />
|
|
<Ellipse
|
|
Width="5"
|
|
Height="5"
|
|
Fill="White" />
|
|
</StackPanel>
|
|
</StatusBarItem>
|
|
<StatusBarItem HorizontalAlignment="Right">
|
|
<TextBlock Name="timeDateTextBlock" Foreground="White" />
|
|
</StatusBarItem>
|
|
</StatusBar>
|
|
<Grid>
|
|
<DockPanel>
|
|
|
|
<!-- 串口配置面板 -->
|
|
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
|
|
<Grid DockPanel.Dock="Left" Visibility="Visible">
|
|
<GroupBox
|
|
Name="serialPortConfigPanel"
|
|
Margin="5,5,0,5"
|
|
BorderBrush="#FF7199E0"
|
|
BorderThickness="1"
|
|
Header="串口配置">
|
|
<DockPanel>
|
|
<!-- 可用端口 -->
|
|
<Grid Margin="0,10" DockPanel.Dock="Top">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="10*" />
|
|
<ColumnDefinition Width="10*" />
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock
|
|
Grid.Column="0"
|
|
Margin="0,0,25,0"
|
|
VerticalAlignment="Center"
|
|
Text="可用端口" />
|
|
<ComboBox
|
|
Name="portsComboBox"
|
|
Grid.Column="1"
|
|
Width="120"
|
|
Padding="5"
|
|
IsEnabled="False" />
|
|
</Grid>
|
|
<!-- 通讯波特率 -->
|
|
<Grid Margin="0,0,0,10" DockPanel.Dock="Top">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="10*" />
|
|
<ColumnDefinition Width="10*" />
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock
|
|
Grid.Column="0"
|
|
VerticalAlignment="Center"
|
|
Text="通讯波特率" />
|
|
<ComboBox
|
|
Name="baudRateComboBox"
|
|
Grid.Column="1"
|
|
Width="120"
|
|
Padding="5"
|
|
IsEditable="True">
|
|
<ComboBoxItem>1200</ComboBoxItem>
|
|
<ComboBoxItem>2400</ComboBoxItem>
|
|
<ComboBoxItem>4800</ComboBoxItem>
|
|
<ComboBoxItem>9600</ComboBoxItem>
|
|
<ComboBoxItem>19200</ComboBoxItem>
|
|
<ComboBoxItem>38400</ComboBoxItem>
|
|
<ComboBoxItem>115200</ComboBoxItem>
|
|
<ComboBoxItem IsSelected="True">256000</ComboBoxItem>
|
|
</ComboBox>
|
|
</Grid>
|
|
<!-- 奇偶校验位 -->
|
|
<Grid Margin="0,0,0,10" DockPanel.Dock="Top">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="10*" />
|
|
<ColumnDefinition Width="10*" />
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock
|
|
Grid.Column="0"
|
|
VerticalAlignment="Center"
|
|
Text="奇偶校验位" />
|
|
<ComboBox
|
|
Name="parityComboBox"
|
|
Grid.Column="1"
|
|
Width="120"
|
|
Padding="5"
|
|
Text="无(None)">
|
|
<ComboBoxItem IsSelected="True" Tag="None">无(None)</ComboBoxItem>
|
|
<ComboBoxItem Tag="Even">偶校验(Even)</ComboBoxItem>
|
|
<ComboBoxItem Tag="Odd">奇校验(Odd)</ComboBoxItem>
|
|
<ComboBoxItem Tag="Space">保留为0(Space)</ComboBoxItem>
|
|
<ComboBoxItem Tag="Mark">保留为1(Mark)</ComboBoxItem>
|
|
</ComboBox>
|
|
</Grid>
|
|
<!-- 数据位 -->
|
|
<Grid Margin="0,0,0,10" DockPanel.Dock="Top">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="10*" />
|
|
<ColumnDefinition Width="10*" />
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock
|
|
Grid.Column="0"
|
|
VerticalAlignment="Center"
|
|
Text="数据位" />
|
|
<ComboBox
|
|
Name="dataBitsComboBox"
|
|
Grid.Column="1"
|
|
Width="120"
|
|
Padding="5">
|
|
<ComboBoxItem IsSelected="True">8</ComboBoxItem>
|
|
<ComboBoxItem>7</ComboBoxItem>
|
|
<ComboBoxItem>6</ComboBoxItem>
|
|
<ComboBoxItem>5</ComboBoxItem>
|
|
</ComboBox>
|
|
</Grid>
|
|
<!-- 停止位 -->
|
|
<Grid Margin="0,0,0,10" DockPanel.Dock="Top">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="10*" />
|
|
<ColumnDefinition Width="10*" />
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock
|
|
Grid.Column="0"
|
|
VerticalAlignment="Center"
|
|
Text="停止位" />
|
|
<ComboBox
|
|
Name="stopBitsComboBox"
|
|
Grid.Column="1"
|
|
Width="120"
|
|
Padding="5">
|
|
<ComboBoxItem IsSelected="True">1</ComboBoxItem>
|
|
<ComboBoxItem>1.5</ComboBoxItem>
|
|
<ComboBoxItem>2</ComboBoxItem>
|
|
</ComboBox>
|
|
</Grid>
|
|
<!-- 字节编码 -->
|
|
<Grid Margin="0,0,0,10" DockPanel.Dock="Top">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="10*" />
|
|
<ColumnDefinition Width="10*" />
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock
|
|
Grid.Column="0"
|
|
VerticalAlignment="Center"
|
|
Text="字节编码" />
|
|
<ComboBox
|
|
Name="encodingComboBox"
|
|
Grid.Column="1"
|
|
Width="120"
|
|
Padding="5">
|
|
<ComboBoxItem IsSelected="True">Default</ComboBoxItem>
|
|
<ComboBoxItem>ASCII</ComboBoxItem>
|
|
<ComboBoxItem>Unicode</ComboBoxItem>
|
|
<ComboBoxItem>UTF-8</ComboBoxItem>
|
|
</ComboBox>
|
|
</Grid>
|
|
<Grid DockPanel.Dock="Bottom">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="10*" />
|
|
<ColumnDefinition Width="10*" />
|
|
</Grid.ColumnDefinitions>
|
|
<Button
|
|
Name="openClosePortButton"
|
|
Grid.Column="0"
|
|
Margin="5"
|
|
Padding="3"
|
|
Click="openClosePortButton_Click"
|
|
IsEnabled="{Binding ElementName=portsComboBox, Path=IsEnabled}">
|
|
打开
|
|
</Button>
|
|
<Button
|
|
Name="findPortButton"
|
|
Grid.Column="1"
|
|
Margin="5"
|
|
Padding="3"
|
|
Click="findPortButton_Click">
|
|
查找
|
|
</Button>
|
|
</Grid>
|
|
<!-- 空的Grid,占位用 -->
|
|
<Grid>
|
|
<StackPanel Margin="5">
|
|
<TextBlock
|
|
Padding="5"
|
|
FontSize="16"
|
|
Foreground="#FF0078D7">
|
|
主要功能:
|
|
</TextBlock>
|
|
<TextBlock Padding="5">1. 可自由显示、隐藏的设置面板</TextBlock>
|
|
<TextBlock Padding="5">2. 简洁视图模式,专注于数据收发</TextBlock>
|
|
<TextBlock Padding="5">3. 软件主要配置可保存并恢复</TextBlock>
|
|
<TextBlock
|
|
Padding="5"
|
|
FontSize="16"
|
|
Foreground="#FF0078D7">
|
|
快捷键提示:
|
|
</TextBlock>
|
|
<TextBlock Padding="5">1. Ctrl+S: 保存接收区数据</TextBlock>
|
|
<TextBlock Padding="5">2. Ctrl+Enter: 进/退简洁视图模式</TextBlock>
|
|
<TextBlock Padding="5">3. Enter: 发送数据</TextBlock>
|
|
</StackPanel>
|
|
</Grid>
|
|
</DockPanel>
|
|
</GroupBox>
|
|
</Grid>
|
|
</ScrollViewer>
|
|
|
|
<!-- EF3模式设置 -->
|
|
<Grid
|
|
Name="EF3ConfigPanel"
|
|
Margin="0,5,5,5"
|
|
DockPanel.Dock="Right"
|
|
Visibility="Visible">
|
|
<GroupBox
|
|
BorderBrush="{Binding ElementName=serialPortConfigPanel, Path=BorderBrush}"
|
|
BorderThickness="{Binding ElementName=serialPortConfigPanel, Path=BorderThickness}"
|
|
Header="EF3板设置">
|
|
<Grid>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="45*" />
|
|
<RowDefinition Height="80*" />
|
|
</Grid.RowDefinitions>
|
|
<!-- EF3锁存模式 -->
|
|
<GroupBox
|
|
Grid.Row="0"
|
|
Margin="5"
|
|
Header="锁存模式">
|
|
<StackPanel>
|
|
<RadioButton
|
|
Name="singleLatch"
|
|
Margin="5"
|
|
Checked="SingleLatch_Checked"
|
|
IsChecked="True"
|
|
Tag="char"
|
|
ToolTip="点击即锁存一次并读取一次">
|
|
单次锁存
|
|
</RadioButton>
|
|
<RadioButton
|
|
Name="timingLatches"
|
|
Margin="5"
|
|
Checked="TimingLatches_Checked"
|
|
Tag="hex"
|
|
ToolTip="定时模式,每10ms(1000*10us),即100HZ,锁存一次位置的值,发一个脉冲">
|
|
定时锁存
|
|
</RadioButton>
|
|
<ComboBox
|
|
Name="timeRateComboBox"
|
|
Grid.Column="1"
|
|
Width="100"
|
|
Margin="5"
|
|
Padding="5"
|
|
IsEditable="True">
|
|
<ComboBoxItem IsSelected="True">1000</ComboBoxItem>
|
|
<ComboBoxItem>2000</ComboBoxItem>
|
|
|
|
</ComboBox>
|
|
<RadioButton
|
|
Name="freDivsionRadioButton"
|
|
Margin="5"
|
|
Checked="FreDivsionRadioButton_Checked"
|
|
Tag="dec"
|
|
ToolTip="设置成分频锁存模式。以X轴为基准,每20个脉冲锁存一次,并发送一次脉冲">
|
|
分频锁存
|
|
</RadioButton>
|
|
<ComboBox
|
|
Name="freRateComboBox"
|
|
Grid.Column="1"
|
|
Width="100"
|
|
Margin="5"
|
|
Padding="5"
|
|
IsEditable="True">
|
|
<ComboBoxItem IsSelected="True">20</ComboBoxItem>
|
|
<ComboBoxItem>100</ComboBoxItem>
|
|
</ComboBox>
|
|
</StackPanel>
|
|
</GroupBox>
|
|
<!-- EF3功能按键 -->
|
|
<GroupBox
|
|
Grid.Row="1"
|
|
Margin="5"
|
|
Header="功能按键">
|
|
<StackPanel>
|
|
|
|
<Button
|
|
x:Name="getVersionButton"
|
|
Margin="5"
|
|
Padding="3"
|
|
Click="GetVersionButton_Click"
|
|
Content="获取EF3固件版本" />
|
|
<Button
|
|
x:Name="setZeroButton"
|
|
Margin="5"
|
|
Padding="3"
|
|
Click="SetZeroButton_Click"
|
|
Content="设置零点" />
|
|
<Button
|
|
x:Name="startRecordButtion"
|
|
Margin="5"
|
|
Padding="3"
|
|
Click="StartRecordButtion_Click"
|
|
Content="开始锁存" />
|
|
<Button
|
|
x:Name="stopRecordButton"
|
|
Margin="5"
|
|
Padding="3"
|
|
Click="StopRecordButton_Click"
|
|
Content="停止锁存" />
|
|
<Button
|
|
x:Name="getRecordButton"
|
|
Margin="5"
|
|
Padding="3"
|
|
Click="GetRecordButton_Click"
|
|
Content="读取锁存值" />
|
|
<Button
|
|
x:Name="clearFlashButton"
|
|
Margin="5"
|
|
Padding="3"
|
|
Click="ClearFlashButton_Click"
|
|
Content="清除flash" />
|
|
<Button
|
|
x:Name="getPointsButton"
|
|
Margin="5"
|
|
Padding="3"
|
|
Click="GetPointsButton_Click"
|
|
Content="获取锁存点的数量" />
|
|
</StackPanel>
|
|
|
|
</GroupBox>
|
|
|
|
|
|
</Grid>
|
|
</GroupBox>
|
|
</Grid>
|
|
|
|
<!-- 通讯设置面板 -->
|
|
<Grid
|
|
Name="serialCommunicationConfigPanel"
|
|
Margin="0,5,5,5"
|
|
DockPanel.Dock="Right"
|
|
Visibility="Visible">
|
|
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
|
|
<GroupBox
|
|
BorderBrush="{Binding ElementName=serialPortConfigPanel, Path=BorderBrush}"
|
|
BorderThickness="{Binding ElementName=serialPortConfigPanel, Path=BorderThickness}"
|
|
Header="通信设置">
|
|
<Grid>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="12*" />
|
|
<RowDefinition Height="10*" />
|
|
</Grid.RowDefinitions>
|
|
<GroupBox
|
|
Grid.Row="0"
|
|
Margin="5"
|
|
BorderBrush="{Binding ElementName=serialPortConfigPanel, Path=BorderBrush}"
|
|
BorderThickness="{Binding ElementName=serialPortConfigPanel, Path=BorderThickness}"
|
|
Header="接收设置">
|
|
<StackPanel>
|
|
<GroupBox
|
|
Margin="5"
|
|
BorderBrush="{Binding ElementName=serialPortConfigPanel, Path=BorderBrush}"
|
|
BorderThickness="{Binding ElementName=serialPortConfigPanel, Path=BorderThickness}"
|
|
Header="显示方式">
|
|
<StackPanel>
|
|
<RadioButton
|
|
Name="recvCharacterRadioButton"
|
|
Margin="0,5"
|
|
Checked="recvModeButton_Checked"
|
|
IsChecked="True"
|
|
Tag="char">
|
|
字符串
|
|
</RadioButton>
|
|
<RadioButton
|
|
Name="recvHexRadioButton"
|
|
Margin="0,0,50,5"
|
|
Checked="recvModeButton_Checked"
|
|
Tag="hex">
|
|
十六进制
|
|
</RadioButton>
|
|
<RadioButton
|
|
Name="recvDecRadioButton"
|
|
Margin="0,0,50,5"
|
|
Checked="recvModeButton_Checked"
|
|
Tag="dec">
|
|
十进制
|
|
</RadioButton>
|
|
<RadioButton
|
|
Name="recvOctRadioButton"
|
|
Margin="0,0,50,5"
|
|
Checked="recvModeButton_Checked"
|
|
Tag="oct">
|
|
八进制
|
|
</RadioButton>
|
|
<RadioButton
|
|
Name="recvBinRadioButton"
|
|
Margin="0,0,50,5"
|
|
Checked="recvModeButton_Checked"
|
|
Tag="bin">
|
|
二进制
|
|
</RadioButton>
|
|
</StackPanel>
|
|
</GroupBox>
|
|
<StackPanel>
|
|
<CheckBox
|
|
Name="showRecvDataCheckBox"
|
|
Margin="10,5"
|
|
Padding="0"
|
|
Click="showRecvDataCheckBox_Click"
|
|
Content="显示接收数据"
|
|
IsChecked="True" />
|
|
<Button
|
|
Name="saveRecvDataButton"
|
|
Margin="10,5"
|
|
Padding="3"
|
|
Click="saveRecvDataButton_Click"
|
|
Content="保存接收区数据"
|
|
ToolTip="使用Ctrl+S也可以快捷保存哦!" />
|
|
<Button
|
|
Name="clearRecvDataBoxButton"
|
|
Margin="10,5"
|
|
Padding="3"
|
|
Click="clearRecvDataBoxButton_Click"
|
|
Content="清空接收区" />
|
|
</StackPanel>
|
|
</StackPanel>
|
|
</GroupBox>
|
|
<GroupBox
|
|
Grid.Row="1"
|
|
Margin="5"
|
|
BorderBrush="{Binding ElementName=serialPortConfigPanel, Path=BorderBrush}"
|
|
BorderThickness="{Binding ElementName=serialPortConfigPanel, Path=BorderThickness}"
|
|
Header="发送设置">
|
|
<StackPanel>
|
|
<GroupBox
|
|
Margin="5,5,5,0"
|
|
BorderBrush="{Binding ElementName=serialPortConfigPanel, Path=BorderBrush}"
|
|
BorderThickness="{Binding ElementName=serialPortConfigPanel, Path=BorderThickness}"
|
|
Header="发送方式">
|
|
<StackPanel>
|
|
<RadioButton
|
|
Name="sendCharacterRadioButton"
|
|
Margin="0,5"
|
|
Click="sendDataModeRadioButton_Click"
|
|
Content="字符串"
|
|
IsChecked="True"
|
|
Tag="char" />
|
|
<RadioButton
|
|
Name="sendHexRadioButton"
|
|
Margin="0,0,0,5"
|
|
Click="sendDataModeRadioButton_Click"
|
|
Content="十六进制"
|
|
Tag="hex" />
|
|
</StackPanel>
|
|
</GroupBox>
|
|
|
|
<GroupBox
|
|
Margin="5"
|
|
BorderBrush="{Binding ElementName=serialPortConfigPanel, Path=BorderBrush}"
|
|
BorderThickness="{Binding ElementName=serialPortConfigPanel, Path=BorderThickness}"
|
|
Header="发送内容">
|
|
<StackPanel>
|
|
<RadioButton
|
|
Name="manualInputRadioButton"
|
|
Margin="0,5"
|
|
Click="manualInputRadioButton_Click"
|
|
Content="手动输入"
|
|
IsChecked="True" />
|
|
<RadioButton
|
|
Name="loadFileRadioButton"
|
|
Margin="0,0,0,5"
|
|
Click="loadFileRadioButton_Click"
|
|
Content="加载文件"
|
|
IsEnabled="False" />
|
|
</StackPanel>
|
|
</GroupBox>
|
|
<Button
|
|
Name="clearSendDataTextBox"
|
|
Margin="10,5,10,0"
|
|
Padding="3"
|
|
Click="clearSendDataTextBox_Click"
|
|
Content="清空发送区" />
|
|
</StackPanel>
|
|
</GroupBox>
|
|
</Grid>
|
|
</GroupBox>
|
|
</ScrollViewer>
|
|
</Grid>
|
|
|
|
<!-- 自动发送设置面板 -->
|
|
<Grid
|
|
Name="autoSendConfigPanel"
|
|
Margin="5"
|
|
DockPanel.Dock="Bottom"
|
|
Visibility="Visible">
|
|
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
|
|
<GroupBox
|
|
BorderBrush="{Binding ElementName=serialPortConfigPanel, Path=BorderBrush}"
|
|
BorderThickness="{Binding ElementName=serialPortConfigPanel, Path=BorderThickness}"
|
|
Header="自动发送设置">
|
|
<Grid Margin="0,5">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="10*" />
|
|
<ColumnDefinition Width="10*" />
|
|
</Grid.ColumnDefinitions>
|
|
<StackPanel Orientation="Horizontal">
|
|
<TextBlock
|
|
Grid.Column="0"
|
|
Padding="5"
|
|
TextAlignment="Center">
|
|
自动发送时间间隔
|
|
</TextBlock>
|
|
<TextBox
|
|
Name="autoSendIntervalTextBox"
|
|
Grid.Column="1"
|
|
Width="100"
|
|
Margin="10,0"
|
|
Padding="5"
|
|
Text="1000"
|
|
ToolTip="自动发送时间只有在启动自动发送前修改有效;发送过程中修改时间只会在下一次启动自动发送时生效。" />
|
|
<ComboBox
|
|
Name="timeUnitComboBox"
|
|
Grid.Column="2"
|
|
Width="60"
|
|
Padding="5">
|
|
<ComboBoxItem IsSelected="True">毫秒</ComboBoxItem>
|
|
<ComboBoxItem>秒钟</ComboBoxItem>
|
|
<ComboBoxItem>分钟</ComboBoxItem>
|
|
</ComboBox>
|
|
|
|
</StackPanel>
|
|
<CheckBox
|
|
Name="autoSendEnableCheckBox"
|
|
Grid.Column="1"
|
|
Margin="0,0,5,0"
|
|
HorizontalAlignment="Right"
|
|
VerticalAlignment="Center"
|
|
Click="autoSendEnableCheckBox_Click"
|
|
ToolTip="使能后,必须要再次点击发送按钮才可以启动自动发送。">
|
|
使能自动发送
|
|
</CheckBox>
|
|
</Grid>
|
|
</GroupBox>
|
|
</ScrollViewer>
|
|
</Grid>
|
|
|
|
<!-- 接收区/发送区 -->
|
|
<Grid Margin="5">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="85*" />
|
|
<RowDefinition Height="80" />
|
|
</Grid.RowDefinitions>
|
|
<GroupBox
|
|
Grid.Row="0"
|
|
BorderBrush="{Binding ElementName=serialPortConfigPanel, Path=BorderBrush}"
|
|
BorderThickness="{Binding ElementName=serialPortConfigPanel, Path=BorderThickness}"
|
|
Header="接收区">
|
|
<RichTextBox
|
|
Name="recvDataRichTextBox"
|
|
Margin="2,5"
|
|
BorderThickness="0"
|
|
IsReadOnly="True">
|
|
<FlowDocument
|
|
FontFamily="Lucida Console"
|
|
FontSize="14"
|
|
LineHeight="1.5" />
|
|
</RichTextBox>
|
|
</GroupBox>
|
|
<GroupBox
|
|
Grid.Row="1"
|
|
BorderBrush="{Binding ElementName=serialPortConfigPanel, Path=BorderBrush}"
|
|
BorderThickness="{Binding ElementName=serialPortConfigPanel, Path=BorderThickness}"
|
|
Header="发送区"
|
|
IsEnabled="{Binding ElementName=portsComboBox, Path=IsEnabled}">
|
|
<Grid Margin="0,5">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="90*" />
|
|
<ColumnDefinition Width="80" />
|
|
</Grid.ColumnDefinitions>
|
|
<TextBox
|
|
Name="sendDataTextBox"
|
|
Grid.Column="0"
|
|
Margin="5,0,0,0"
|
|
Padding="15"
|
|
VerticalAlignment="Center"
|
|
FontFamily="Lucida Console">
|
|
Hello, world!
|
|
</TextBox>
|
|
<Button
|
|
Name="sendDataButton"
|
|
Grid.Column="1"
|
|
Margin="5,0"
|
|
Padding="3"
|
|
VerticalAlignment="Center"
|
|
Click="sendDataButton_Click"
|
|
Content="发送" />
|
|
<Grid />
|
|
</Grid>
|
|
</GroupBox>
|
|
</Grid>
|
|
|
|
</DockPanel>
|
|
</Grid>
|
|
</DockPanel>
|
|
</Window>
|