WPF制作简易串口调试助手(上位机部分)
实验环境:vs2013
参考文档:https://docs.microsoft.com/zh-cn/dotnet/api/system.io.ports?view=netframework-4.7.2
下位机部分:https://blog.youkuaiyun.com/weixin_42462552/article/details/85937289
一、窗体程序制作:
(一)UI界面
1.首先我们参照网上的串口调试助手将UI界面的大体框架完成
2.其中数据发送区域的文本需要实现自动换行功能,根据网上资料,需要设置TextWrapping的属性为"Wrap"。
3.接下来是对串口号、波特率、校验位等的一些内容设置,其中较复杂的是串口号的设置,需要根据电脑的端口实际情况来确定串口数量,不能同设置波特率属性一般,直接在程序里指定唯一值。
UI界面xml代码
<Window x:Class="WpfApplication7.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="DIY视界-旋转LED改字软件" Height="600" Width="850" WindowState="Maximized" FontFamily="Segoe UI" FontSize="12" Icon="Resources/5.jpg">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="185*"/>
<RowDefinition Height="410*"/>
</Grid.RowDefinitions>
<Grid Grid.Column="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200*"/>
<ColumnDefinition Width="220*"/>
<ColumnDefinition Width="390*"/>
</Grid.ColumnDefinitions>
<Image HorizontalAlignment="Left" Height="169" VerticalAlignment="Top" Width="211" Source="Resources/9.jpg" Margin="0,0,0,0.2"/>
<Image HorizontalAlignment="Left" Height="169" Margin="2,0,0,-0.2" VerticalAlignment="Top" Width="228" Source="Resources/10.jpg" Grid.Column="1" Grid.ColumnSpan="2"/>
<Image Grid.Column="2" HorizontalAlignment="Left" Height="169" Margin="0.4,10,-1.8,-10.2" VerticalAlignment="Top" Width="407" Source="Resources/11.jpg"/>
</Grid>
<TabControl HorizontalAlignment="Left" Height="372" Margin="10,10.4,0,0" Grid.Row="1" VerticalAlignment="Top" Width="823">
<TabItem Header="平面数据">
<Grid Background="#FFE5E5E5">
<GroupBox Grid.Row="2">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Margin="510,270,0,5" Width="291">
<Button x:Name="bt_ClearSendFData" Content="清空平面数据" Margin="20,15,20,15" Click="bt_ClearSendFData_Click" Width="92"/>
<Button x:Name="bt_sendf" Content="发送平面数据" Margin="20,15,20,15" Click="bt_sendf_Click" Width="92"/>
</StackPanel>
</GroupBox>
<GroupBox Header="发送平面数据区" BorderBrush="Black" Margin="10,10,10,80">
<ScrollViewer VerticalScrollBarVisibility="Auto">
<TextBox Name="tb_SendFlatData" TextWrapping="Wrap"/>
</ScrollViewer>
</GroupBox>
</Grid>
</TabItem>
<TabItem Header="立体数据">
<Grid Background="#FFE5E5E5">
<GroupBox Grid.Row="2">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Margin="510,270,0,5" Width="291">
<Button Name="bt_ClearSendSData" Content="清空立体数据" Margin="20,15,20,15" Click="bt_ClearSendSData_Click"/>
<Button Name="bt_sends" Content="发送立体数据" Margin="20,15,20,15" Click="bt_sends_Click"/>
</StackPanel>
</GroupBox>
<GroupBox Header="发送立体数据区" BorderBrush="Black" Margin="10,10,10,80">
<ScrollViewer VerticalScrollBarVisibility="Auto">
<TextBox Name="tb_SendStereoData" TextWrapping="Wrap"/>
</ScrollViewer>
</GroupBox>
</Grid>
</TabItem>
<TabItem Header="串口参数">
<Grid Background="#FFE5E5E5">
<GroupBox BorderBrush="Black" Margin="10,10,9.8,10">
<StackPanel >
<StackPanel Orientation="Horizontal">
<TextBlock Text="串口号" Width="auto" Margin="15" Padding="10,6,0,0"/>
<ComboBox Name="cb_SerialPortNumber" Width="180" Margin="30,10,0,10"/>
<Button x:Name="btn1" Height="21" HorizontalAlignment="Left" Margin="11,12,0,0" VerticalAlignment="Top" Width="22" Click="btn1_Click">
<Button.Background>
<ImageBrush ImageSource="Resources/7.jpg"/>
</Button.Background>
</Button>
<TextBlock Text="波特率" Width="auto" Margin="15" Padding="70,6,0,0"/>
<ComboBox x:Name="cb_BaudRate" Width="180" Margin="100,10,0,10" SelectedIndex="8"