Skip to content

Commit

Permalink
增加不分包功能
Browse files Browse the repository at this point in the history
  • Loading branch information
chenxuuu committed Aug 25, 2020
1 parent 3e2d874 commit 56c6bb7
Show file tree
Hide file tree
Showing 10 changed files with 102 additions and 67 deletions.
6 changes: 3 additions & 3 deletions changlog/autoUpdate.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<item>
<version>1.0.3.1</version>
<url>https://llcom.papapoi.com/update/1.0.3.1.zip</url>
<changelog>https://llcom.papapoi.com/changelog/1.0.3.1.html</changelog>
<version>1.0.3.2</version>
<url>https://llcom.papapoi.com/update/1.0.3.2.zip</url>
<changelog>https://llcom.papapoi.com/changelog/1.0.3.2.html</changelog>
<mandatory mode="1">true</mandatory>
</item>
7 changes: 7 additions & 0 deletions changlog/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,13 @@

> 欢迎加入交流群:`906307487`

## LLCOM 1.0.3.2

- 增加不分包显示数据的功能
- 稍微调大分包显示时同屏的最大字符数限制

---

## LLCOM 1.0.3.1

- 更正开关串口后,波特率等信息错误的问题
Expand Down
2 changes: 0 additions & 2 deletions llcom/Model/Settings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -204,8 +204,6 @@ public int timeout
{
get
{
if (_timeout < 0)//防止出现负数超时时间
return 0;
return _timeout;
}
set
Expand Down
5 changes: 3 additions & 2 deletions llcom/Model/Uart.cs
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,8 @@ private void Serial_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
lock (objLock)
{
System.Threading.Thread.Sleep(Tools.Global.setting.timeout);//等待时间
if(Tools.Global.setting.timeout > 0)
System.Threading.Thread.Sleep(Tools.Global.setting.timeout);//等待时间
List<byte> result = new List<byte>();
while (true)//循环读
{
Expand All @@ -145,7 +146,7 @@ private void Serial_DataReceived(object sender, SerialDataReceivedEventArgs e)

if (result.Count > Tools.Global.setting.maxLength)//长度超了
break;
if (Tools.Global.setting.bitDelay)//如果是设置了等待间隔时间
if (Tools.Global.setting.bitDelay && Tools.Global.setting.timeout > 0)//如果是设置了等待间隔时间
{
System.Threading.Thread.Sleep(Tools.Global.setting.timeout);//等待时间
}
Expand Down
123 changes: 76 additions & 47 deletions llcom/Pages/DataShowPage.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ private void Page_Loaded(object sender, RoutedEventArgs e)
};
}

int maxDataLength = 100000;//最长一包数据长度,因为太长会把工具卡死机
int maxDataPack = 10000;//最大同时显示数据包数,因为太多会把工具卡死机

/// <summary>
/// 添加串口日志数据
Expand All @@ -49,63 +51,90 @@ private void addUartLog(object e,Tools.DataShowPara input)
uartDataFlowDocument.IsSelectionEnabled = false;
byte[] data = input.data;
bool send = input.send;
Paragraph p = new Paragraph(new Run(""));

Span text = new Span(new Run(DateTime.Now.ToString("[yyyy/MM/dd HH:mm:ss.ffff]")));
text.Foreground = Brushes.DarkSlateGray;
p.Inlines.Add(text);

if (send)
text = new Span(new Run(" ← "));
else
text = new Span(new Run(" → "));
text.Foreground = Brushes.Black;
text.FontWeight = FontWeights.Bold;
p.Inlines.Add(text);

if (data.Length > 2000)
text = new Span(new Run(Tools.Global.Byte2String(data.Skip(0).Take(2000).ToArray())
+ "\r\nData too long, check log folder for remaining data."));
else
text = new Span(new Run(Tools.Global.Byte2String(data)));

if (send)
text.Foreground = Brushes.DarkRed;
else
text.Foreground = Brushes.DarkGreen;
text.FontSize = 15;
p.Inlines.Add(text);

if (!Tools.Global.setting.showHex)
p.Margin = new Thickness(0, 0, 0, 8);
uartDataFlowDocument.Document.Blocks.Add(p);

if (Tools.Global.setting.showHex)

if(Tools.Global.setting.timeout >= 0)
{
if (data.Length > 600)
p = new Paragraph(new Run("HEX:" + Tools.Global.Byte2Hex(data.Skip(0).Take(600).ToArray(), " ")
+ "\r\nData too long, check log folder for remaining data."));
Paragraph p = new Paragraph(new Run(""));

Span text = new Span(new Run(DateTime.Now.ToString("[yyyy/MM/dd HH:mm:ss.ffff]")));
text.Foreground = Brushes.DarkSlateGray;
p.Inlines.Add(text);

if (send)
text = new Span(new Run(" ← "));
else
p = new Paragraph(new Run("HEX:" + Tools.Global.Byte2Hex(data, " ")));
text = new Span(new Run(" → "));
text.Foreground = Brushes.Black;
text.FontWeight = FontWeights.Bold;
p.Inlines.Add(text);

if (data.Length > maxDataLength)
text = new Span(new Run(Tools.Global.Byte2String(data.Skip(0).Take(maxDataLength).ToArray())
+ "\r\nData too long, check log folder for remaining data."));
else
text = new Span(new Run(Tools.Global.Byte2String(data)));

if (send)
p.Foreground = Brushes.IndianRed;
text.Foreground = Brushes.DarkRed;
else
p.Foreground = Brushes.ForestGreen;
p.Margin = new Thickness(0, 0, 0, 8);
text.Foreground = Brushes.DarkGreen;
text.FontSize = 15;
p.Inlines.Add(text);

if (!Tools.Global.setting.showHex)
p.Margin = new Thickness(0, 0, 0, 8);
uartDataFlowDocument.Document.Blocks.Add(p);
}

//条目过多,自动清空
if (uartDataFlowDocument.Document.Blocks.Count > 500)
if (Tools.Global.setting.showHex)
{
if (data.Length > maxDataLength)
p = new Paragraph(new Run("HEX:" + Tools.Global.Byte2Hex(data.Skip(0).Take(maxDataLength).ToArray(), " ")
+ "\r\nData too long, check log folder for remaining data."));
else
p = new Paragraph(new Run("HEX:" + Tools.Global.Byte2Hex(data, " ")));

if (send)
p.Foreground = Brushes.IndianRed;
else
p.Foreground = Brushes.ForestGreen;
p.Margin = new Thickness(0, 0, 0, 8);
uartDataFlowDocument.Document.Blocks.Add(p);
}

//条目过多,自动清空
if (uartDataFlowDocument.Document.Blocks.Count > maxDataPack)
{
uartDataFlowDocument.Document.Blocks.Clear();
addUartLog(null, new Tools.DataShowPara
{
data = Encoding.Default.GetBytes("Too much packs, please check your log folder for log data."),
send = true
});
}
}
else//不分包
{
uartDataFlowDocument.Document.Blocks.Clear();
addUartLog(null,new Tools.DataShowPara {
data = Encoding.Default.GetBytes("Data too big, please check your log folder for log data."),
send = true
});
if(uartDataFlowDocument.Document.Blocks.LastBlock == null ||
uartDataFlowDocument.Document.Blocks.LastBlock.GetType() != typeof(Paragraph))
uartDataFlowDocument.Document.Blocks.Add(new Paragraph(new Run("")));

//待显示的数据
string s;
if (Tools.Global.setting.showHex)
s = Tools.Global.Byte2Hex(data, " ");
else
s = Tools.Global.Byte2String(data);
Span text = new Span(new Run(s));
text.FontSize = 15;
if (send)
text.Foreground = Brushes.DarkRed;
else
text.Foreground = Brushes.DarkGreen;
(uartDataFlowDocument.Document.Blocks.LastBlock as Paragraph).Inlines.Add(text);

}


sv.ScrollToBottom();
uartDataFlowDocument.IsSelectionEnabled = true;
}
Expand Down
4 changes: 2 additions & 2 deletions llcom/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.3.1")]
[assembly: AssemblyFileVersion("1.0.3.1")]
[assembly: AssemblyVersion("1.0.3.2")]
[assembly: AssemblyFileVersion("1.0.3.2")]
[assembly: NeutralResourcesLanguage("zh-CN")]

2 changes: 1 addition & 1 deletion llcom/languages/en-US.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@
<system:String x:Key="SettingShowHex">Show Hex</system:String>
<system:String x:Key="SettingKeepTop">Keep Window on top</system:String>
<system:String x:Key="SettingUartTimeout">Data pack time:</system:String>
<system:String x:Key="SettingMs">Ms</system:String>
<system:String x:Key="SettingMs">Ms(minus means no pack)</system:String>
<system:String x:Key="SettingSplitByEmpty">Split by no data time(or split by time from first time)</system:String>
<system:String x:Key="SettingMaxPack">Max length per packet</system:String>
<system:String x:Key="SettingByte">Byte(s)</system:String>
Expand Down
2 changes: 1 addition & 1 deletion llcom/languages/zh-CN.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@
<system:String x:Key="SettingShowHex">串口数据窗口显示HEX值</system:String>
<system:String x:Key="SettingKeepTop">窗口保持置顶显示</system:String>
<system:String x:Key="SettingUartTimeout">分包数据超时时间:</system:String>
<system:String x:Key="SettingMs">毫秒</system:String>
<system:String x:Key="SettingMs">毫秒(负数则不分包)</system:String>
<system:String x:Key="SettingSplitByEmpty">超时时间表示空白间隔(不勾选表示从第一个字节开始算超时时间)</system:String>
<system:String x:Key="SettingMaxPack">串口数据每包最大</system:String>
<system:String x:Key="SettingByte">字节</system:String>
Expand Down
12 changes: 6 additions & 6 deletions llcom/llcom.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -83,11 +83,11 @@
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="AdonisUI, Version=1.14.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\AdonisUI.1.14.0\lib\net45\AdonisUI.dll</HintPath>
<Reference Include="AdonisUI, Version=1.16.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\AdonisUI.1.16.0\lib\net45\AdonisUI.dll</HintPath>
</Reference>
<Reference Include="AdonisUI.ClassicTheme, Version=1.14.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\AdonisUI.ClassicTheme.1.14.0\lib\net45\AdonisUI.ClassicTheme.dll</HintPath>
<Reference Include="AdonisUI.ClassicTheme, Version=1.16.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\AdonisUI.ClassicTheme.1.16.0\lib\net45\AdonisUI.ClassicTheme.dll</HintPath>
</Reference>
<Reference Include="AutoUpdater.NET, Version=1.6.0.0, Culture=neutral, PublicKeyToken=501435c91b35f4bc, processorArchitecture=MSIL">
<HintPath>..\packages\Autoupdater.NET.Official.1.6.0\lib\net40\AutoUpdater.NET.dll</HintPath>
Expand Down Expand Up @@ -271,8 +271,8 @@
<ErrorText>这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\Costura.Fody.4.1.0\build\Costura.Fody.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Costura.Fody.4.1.0\build\Costura.Fody.props'))" />
<Error Condition="!Exists('..\packages\Fody.6.1.1\build\Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Fody.6.1.1\build\Fody.targets'))" />
<Error Condition="!Exists('..\packages\PropertyChanged.Fody.3.2.8\build\PropertyChanged.Fody.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\PropertyChanged.Fody.3.2.8\build\PropertyChanged.Fody.props'))" />
<Error Condition="!Exists('..\packages\Fody.6.2.4\build\Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Fody.6.2.4\build\Fody.targets'))" />
</Target>
<Import Project="..\packages\Fody.6.1.1\build\Fody.targets" Condition="Exists('..\packages\Fody.6.1.1\build\Fody.targets')" />
<Import Project="..\packages\Fody.6.2.4\build\Fody.targets" Condition="Exists('..\packages\Fody.6.2.4\build\Fody.targets')" />
</Project>
6 changes: 3 additions & 3 deletions llcom/packages.config
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="AdonisUI" version="1.14.0" targetFramework="net45" />
<package id="AdonisUI.ClassicTheme" version="1.14.0" targetFramework="net45" />
<package id="AdonisUI" version="1.16.0" targetFramework="net45" />
<package id="AdonisUI.ClassicTheme" version="1.16.0" targetFramework="net45" />
<package id="Autoupdater.NET.Official" version="1.6.0" targetFramework="net45" />
<package id="AvalonEdit" version="6.0.1" targetFramework="net45" />
<package id="Costura.Fody" version="4.1.0" targetFramework="net472" />
<package id="CrashReporter.NET.Official" version="1.5.8" targetFramework="net45" />
<package id="Fody" version="6.1.1" targetFramework="net45" developmentDependency="true" />
<package id="Fody" version="6.2.4" targetFramework="net45" developmentDependency="true" />
<package id="FontAwesome.WPF" version="4.7.0.9" targetFramework="net472" />
<package id="LibUsbDotNet" version="2.2.29" targetFramework="net472" />
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net45" />
Expand Down

0 comments on commit 56c6bb7

Please sign in to comment.