提交初始化

This commit is contained in:
2025-12-11 14:06:02 +08:00
commit 6c87d19f35
45 changed files with 6012 additions and 0 deletions

Binary file not shown.

36
App.config Normal file
View File

@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="SerialPortLogFilterin.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
</startup>
<userSettings>
<SerialPortLogFilterin.My.MySettings>
<setting name="PortName" serializeAs="String">
<value />
</setting>
<setting name="BaudRate" serializeAs="String">
<value />
</setting>
<setting name="thewidth" serializeAs="String">
<value>1309</value>
</setting>
<setting name="theheight" serializeAs="String">
<value>921</value>
</setting>
<setting name="SplitterDistance" serializeAs="String">
<value>619</value>
</setting>
<setting name="theHead" serializeAs="String">
<value />
</setting>
<setting name="theRump" serializeAs="String">
<value />
</setting>
</SerialPortLogFilterin.My.MySettings>
</userSettings>
</configuration>

319
Form1.Designer.vb generated Normal file
View File

@@ -0,0 +1,319 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class Form1
Inherits System.Windows.Forms.Form
'Form 重写 Dispose以清理组件列表。
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Windows 窗体设计器所必需的
Private components As System.ComponentModel.IContainer
'注意: 以下过程是 Windows 窗体设计器所必需的
'可以使用 Windows 窗体设计器修改它。
'不要使用代码编辑器修改它。
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(Form1))
Me.ToolStrip1 = New System.Windows.Forms.ToolStrip()
Me.ToolStripSeparator6 = New System.Windows.Forms.ToolStripSeparator()
Me.ToolStripButton6 = New System.Windows.Forms.ToolStripButton()
Me.ToolStripButton4 = New System.Windows.Forms.ToolStripButton()
Me.ToolStripSeparator3 = New System.Windows.Forms.ToolStripSeparator()
Me.ToolStripSeparator4 = New System.Windows.Forms.ToolStripSeparator()
Me.ToolStripButton7 = New System.Windows.Forms.ToolStripButton()
Me.ToolStripComboBox1 = New System.Windows.Forms.ToolStripComboBox()
Me.ToolStripButton8 = New System.Windows.Forms.ToolStripButton()
Me.ToolStripComboBox2 = New System.Windows.Forms.ToolStripComboBox()
Me.ToolStripButton1 = New System.Windows.Forms.ToolStripButton()
Me.ToolStripSeparator2 = New System.Windows.Forms.ToolStripSeparator()
Me.ToolStripSeparator1 = New System.Windows.Forms.ToolStripSeparator()
Me.ToolStripButton2 = New System.Windows.Forms.ToolStripButton()
Me.txt_Hread = New System.Windows.Forms.ToolStripTextBox()
Me.ToolStripLabel1 = New System.Windows.Forms.ToolStripLabel()
Me.txt_rump = New System.Windows.Forms.ToolStripTextBox()
Me.ToolStripButton3 = New System.Windows.Forms.ToolStripButton()
Me.ToolStripSeparator5 = New System.Windows.Forms.ToolStripSeparator()
Me.ToolStripSeparator7 = New System.Windows.Forms.ToolStripSeparator()
Me.ToolStripButton9 = New System.Windows.Forms.ToolStripButton()
Me.ToolStripSeparator8 = New System.Windows.Forms.ToolStripSeparator()
Me.ToolStripButton5 = New System.Windows.Forms.ToolStripButton()
Me.SplitContainer1 = New System.Windows.Forms.SplitContainer()
Me.RichTextBox1 = New System.Windows.Forms.RichTextBox()
Me.RichTextBox2 = New System.Windows.Forms.RichTextBox()
Me.ErrorProvider1 = New System.Windows.Forms.ErrorProvider(Me.components)
Me.SerialPort1 = New System.IO.Ports.SerialPort(Me.components)
Me.ToolStrip1.SuspendLayout()
CType(Me.SplitContainer1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SplitContainer1.Panel1.SuspendLayout()
Me.SplitContainer1.Panel2.SuspendLayout()
Me.SplitContainer1.SuspendLayout()
CType(Me.ErrorProvider1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'ToolStrip1
'
Me.ToolStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ToolStripSeparator6, Me.ToolStripButton6, Me.ToolStripButton4, Me.ToolStripSeparator3, Me.ToolStripSeparator4, Me.ToolStripButton7, Me.ToolStripComboBox1, Me.ToolStripButton8, Me.ToolStripComboBox2, Me.ToolStripButton1, Me.ToolStripSeparator2, Me.ToolStripSeparator1, Me.ToolStripButton2, Me.txt_Hread, Me.ToolStripLabel1, Me.txt_rump, Me.ToolStripButton3, Me.ToolStripSeparator5, Me.ToolStripSeparator7, Me.ToolStripButton9, Me.ToolStripSeparator8, Me.ToolStripButton5})
Me.ToolStrip1.Location = New System.Drawing.Point(0, 0)
Me.ToolStrip1.Name = "ToolStrip1"
Me.ToolStrip1.Size = New System.Drawing.Size(1293, 25)
Me.ToolStrip1.TabIndex = 0
Me.ToolStrip1.Text = "ToolStrip1"
'
'ToolStripSeparator6
'
Me.ToolStripSeparator6.Name = "ToolStripSeparator6"
Me.ToolStripSeparator6.Size = New System.Drawing.Size(6, 25)
'
'ToolStripButton6
'
Me.ToolStripButton6.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text
Me.ToolStripButton6.Image = CType(resources.GetObject("ToolStripButton6.Image"), System.Drawing.Image)
Me.ToolStripButton6.ImageTransparentColor = System.Drawing.Color.Magenta
Me.ToolStripButton6.Name = "ToolStripButton6"
Me.ToolStripButton6.Size = New System.Drawing.Size(60, 22)
Me.ToolStripButton6.Tag = "1"
Me.ToolStripButton6.Text = "清除左边"
'
'ToolStripButton4
'
Me.ToolStripButton4.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text
Me.ToolStripButton4.Image = CType(resources.GetObject("ToolStripButton4.Image"), System.Drawing.Image)
Me.ToolStripButton4.ImageTransparentColor = System.Drawing.Color.Magenta
Me.ToolStripButton4.Name = "ToolStripButton4"
Me.ToolStripButton4.Size = New System.Drawing.Size(96, 22)
Me.ToolStripButton4.Tag = "1"
Me.ToolStripButton4.Text = "保存左边到文件"
'
'ToolStripSeparator3
'
Me.ToolStripSeparator3.Name = "ToolStripSeparator3"
Me.ToolStripSeparator3.Size = New System.Drawing.Size(6, 25)
'
'ToolStripSeparator4
'
Me.ToolStripSeparator4.Name = "ToolStripSeparator4"
Me.ToolStripSeparator4.Size = New System.Drawing.Size(6, 25)
'
'ToolStripButton7
'
Me.ToolStripButton7.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text
Me.ToolStripButton7.Image = CType(resources.GetObject("ToolStripButton7.Image"), System.Drawing.Image)
Me.ToolStripButton7.ImageTransparentColor = System.Drawing.Color.Magenta
Me.ToolStripButton7.Name = "ToolStripButton7"
Me.ToolStripButton7.Size = New System.Drawing.Size(51, 22)
Me.ToolStripButton7.Text = "串口名:"
'
'ToolStripComboBox1
'
Me.ToolStripComboBox1.Name = "ToolStripComboBox1"
Me.ToolStripComboBox1.Size = New System.Drawing.Size(121, 25)
'
'ToolStripButton8
'
Me.ToolStripButton8.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text
Me.ToolStripButton8.Image = CType(resources.GetObject("ToolStripButton8.Image"), System.Drawing.Image)
Me.ToolStripButton8.ImageTransparentColor = System.Drawing.Color.Magenta
Me.ToolStripButton8.Name = "ToolStripButton8"
Me.ToolStripButton8.Size = New System.Drawing.Size(48, 22)
Me.ToolStripButton8.Text = "端口:"
'
'ToolStripComboBox2
'
Me.ToolStripComboBox2.Items.AddRange(New Object() {"1200", "2400", "4800", "9600", "19200", "38400", "57600", "115200", "256000", "512000", "9216000", "1000000"})
Me.ToolStripComboBox2.Name = "ToolStripComboBox2"
Me.ToolStripComboBox2.Size = New System.Drawing.Size(121, 25)
'
'ToolStripButton1
'
Me.ToolStripButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text
Me.ToolStripButton1.Image = CType(resources.GetObject("ToolStripButton1.Image"), System.Drawing.Image)
Me.ToolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta
Me.ToolStripButton1.Name = "ToolStripButton1"
Me.ToolStripButton1.Size = New System.Drawing.Size(60, 22)
Me.ToolStripButton1.Text = "打开串口"
'
'ToolStripSeparator2
'
Me.ToolStripSeparator2.Name = "ToolStripSeparator2"
Me.ToolStripSeparator2.Size = New System.Drawing.Size(6, 25)
'
'ToolStripSeparator1
'
Me.ToolStripSeparator1.Name = "ToolStripSeparator1"
Me.ToolStripSeparator1.Size = New System.Drawing.Size(6, 25)
'
'ToolStripButton2
'
Me.ToolStripButton2.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text
Me.ToolStripButton2.Image = CType(resources.GetObject("ToolStripButton2.Image"), System.Drawing.Image)
Me.ToolStripButton2.ImageTransparentColor = System.Drawing.Color.Magenta
Me.ToolStripButton2.Name = "ToolStripButton2"
Me.ToolStripButton2.Size = New System.Drawing.Size(55, 22)
Me.ToolStripButton2.Text = "Head"
'
'txt_Hread
'
Me.txt_Hread.Font = New System.Drawing.Font("Microsoft YaHei UI", 9.0!)
Me.txt_Hread.Name = "txt_Hread"
Me.txt_Hread.Size = New System.Drawing.Size(100, 25)
'
'ToolStripLabel1
'
Me.ToolStripLabel1.Name = "ToolStripLabel1"
Me.ToolStripLabel1.Size = New System.Drawing.Size(45, 22)
Me.ToolStripLabel1.Text = "Rump:"
'
'txt_rump
'
Me.txt_rump.Font = New System.Drawing.Font("Microsoft YaHei UI", 9.0!)
Me.txt_rump.Name = "txt_rump"
Me.txt_rump.Size = New System.Drawing.Size(100, 25)
'
'ToolStripButton3
'
Me.ToolStripButton3.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text
Me.ToolStripButton3.Image = CType(resources.GetObject("ToolStripButton3.Image"), System.Drawing.Image)
Me.ToolStripButton3.ImageTransparentColor = System.Drawing.Color.Magenta
Me.ToolStripButton3.Name = "ToolStripButton3"
Me.ToolStripButton3.Size = New System.Drawing.Size(60, 22)
Me.ToolStripButton3.Text = "设置过滤"
'
'ToolStripSeparator5
'
Me.ToolStripSeparator5.Name = "ToolStripSeparator5"
Me.ToolStripSeparator5.Size = New System.Drawing.Size(6, 25)
'
'ToolStripSeparator7
'
Me.ToolStripSeparator7.Name = "ToolStripSeparator7"
Me.ToolStripSeparator7.Size = New System.Drawing.Size(6, 25)
'
'ToolStripButton9
'
Me.ToolStripButton9.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text
Me.ToolStripButton9.Image = CType(resources.GetObject("ToolStripButton9.Image"), System.Drawing.Image)
Me.ToolStripButton9.ImageTransparentColor = System.Drawing.Color.Magenta
Me.ToolStripButton9.Name = "ToolStripButton9"
Me.ToolStripButton9.Size = New System.Drawing.Size(96, 22)
Me.ToolStripButton9.Tag = "2"
Me.ToolStripButton9.Text = "保存右边到文件"
'
'ToolStripSeparator8
'
Me.ToolStripSeparator8.Name = "ToolStripSeparator8"
Me.ToolStripSeparator8.Size = New System.Drawing.Size(6, 25)
'
'ToolStripButton5
'
Me.ToolStripButton5.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text
Me.ToolStripButton5.Image = CType(resources.GetObject("ToolStripButton5.Image"), System.Drawing.Image)
Me.ToolStripButton5.ImageTransparentColor = System.Drawing.Color.Magenta
Me.ToolStripButton5.Name = "ToolStripButton5"
Me.ToolStripButton5.Size = New System.Drawing.Size(60, 22)
Me.ToolStripButton5.Tag = "2"
Me.ToolStripButton5.Text = "清除右边"
'
'SplitContainer1
'
Me.SplitContainer1.Dock = System.Windows.Forms.DockStyle.Fill
Me.SplitContainer1.Location = New System.Drawing.Point(0, 25)
Me.SplitContainer1.Name = "SplitContainer1"
'
'SplitContainer1.Panel1
'
Me.SplitContainer1.Panel1.Controls.Add(Me.RichTextBox1)
'
'SplitContainer1.Panel2
'
Me.SplitContainer1.Panel2.Controls.Add(Me.RichTextBox2)
Me.SplitContainer1.Size = New System.Drawing.Size(1293, 857)
Me.SplitContainer1.SplitterDistance = 619
Me.SplitContainer1.TabIndex = 1
'
'RichTextBox1
'
Me.RichTextBox1.Dock = System.Windows.Forms.DockStyle.Fill
Me.RichTextBox1.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.RichTextBox1.Location = New System.Drawing.Point(0, 0)
Me.RichTextBox1.Name = "RichTextBox1"
Me.RichTextBox1.Size = New System.Drawing.Size(619, 857)
Me.RichTextBox1.TabIndex = 0
Me.RichTextBox1.Text = ""
'
'RichTextBox2
'
Me.RichTextBox2.Dock = System.Windows.Forms.DockStyle.Fill
Me.RichTextBox2.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.RichTextBox2.Location = New System.Drawing.Point(0, 0)
Me.RichTextBox2.Name = "RichTextBox2"
Me.RichTextBox2.Size = New System.Drawing.Size(670, 857)
Me.RichTextBox2.TabIndex = 1
Me.RichTextBox2.Text = ""
'
'ErrorProvider1
'
Me.ErrorProvider1.ContainerControl = Me
'
'SerialPort1
'
'
'Form1
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(1293, 882)
Me.Controls.Add(Me.SplitContainer1)
Me.Controls.Add(Me.ToolStrip1)
Me.Name = "Form1"
Me.Text = "Form1"
Me.ToolStrip1.ResumeLayout(False)
Me.ToolStrip1.PerformLayout()
Me.SplitContainer1.Panel1.ResumeLayout(False)
Me.SplitContainer1.Panel2.ResumeLayout(False)
CType(Me.SplitContainer1, System.ComponentModel.ISupportInitialize).EndInit()
Me.SplitContainer1.ResumeLayout(False)
CType(Me.ErrorProvider1, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents ToolStrip1 As ToolStrip
Friend WithEvents ToolStripComboBox1 As ToolStripComboBox
Friend WithEvents ToolStripButton1 As ToolStripButton
Friend WithEvents ToolStripSeparator2 As ToolStripSeparator
Friend WithEvents ToolStripSeparator1 As ToolStripSeparator
Friend WithEvents ToolStripButton2 As ToolStripButton
Friend WithEvents txt_Hread As ToolStripTextBox
Friend WithEvents ToolStripLabel1 As ToolStripLabel
Friend WithEvents txt_rump As ToolStripTextBox
Friend WithEvents ToolStripButton3 As ToolStripButton
Friend WithEvents ToolStripSeparator4 As ToolStripSeparator
Friend WithEvents ToolStripSeparator3 As ToolStripSeparator
Friend WithEvents ToolStripButton4 As ToolStripButton
Friend WithEvents ToolStripSeparator6 As ToolStripSeparator
Friend WithEvents ToolStripSeparator5 As ToolStripSeparator
Friend WithEvents ToolStripButton6 As ToolStripButton
Friend WithEvents ToolStripSeparator7 As ToolStripSeparator
Friend WithEvents ToolStripButton5 As ToolStripButton
Friend WithEvents SplitContainer1 As SplitContainer
Friend WithEvents RichTextBox1 As RichTextBox
Friend WithEvents RichTextBox2 As RichTextBox
Friend WithEvents ToolStripButton7 As ToolStripButton
Friend WithEvents ToolStripButton8 As ToolStripButton
Friend WithEvents ToolStripComboBox2 As ToolStripComboBox
Friend WithEvents ErrorProvider1 As ErrorProvider
Friend WithEvents SerialPort1 As IO.Ports.SerialPort
Friend WithEvents ToolStripButton9 As ToolStripButton
Friend WithEvents ToolStripSeparator8 As ToolStripSeparator
End Class

265
Form1.resx Normal file
View File

@@ -0,0 +1,265 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="ToolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="ToolStripButton6.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
</value>
</data>
<data name="ToolStripButton4.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
</value>
</data>
<data name="ToolStripButton7.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
</value>
</data>
<data name="ToolStripButton8.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
</value>
</data>
<data name="ToolStripButton1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
</value>
</data>
<data name="ToolStripButton2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
</value>
</data>
<data name="ToolStripButton3.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
</value>
</data>
<data name="ToolStripButton9.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
</value>
</data>
<data name="ToolStripButton5.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
</value>
</data>
<metadata name="ErrorProvider1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>129, 17</value>
</metadata>
<metadata name="SerialPort1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>266, 17</value>
</metadata>
</root>

353
Form1.vb Normal file
View File

@@ -0,0 +1,353 @@
Imports System.IO
Imports System.IO.Ports
Imports System.Text
Imports System.Threading
Public Class Form1
Public filedic As Dictionary(Of String, StreamWriternode)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'设置窗体标题为项目名称加版本
Me.Text = Application.ProductName & " " & Application.ProductVersion
filedic = New Dictionary(Of String, StreamWriternode)
recvBufferli = New List(Of Byte)
'刷新My.Settings的值
My.Settings.Reload()
'设置窗体参数
Me.Width = My.Settings.thewidth
Me.Height = My.Settings.theheight
SplitContainer1.SplitterDistance = My.Settings.SplitterDistance
'设置串口参数
ToolStripComboBox1.Text = My.Settings.PortName
ToolStripComboBox2.Text = My.Settings.BaudRate.ToString
'设置匹配参数
txt_Hread.Text = My.Settings.theHead
txt_rump.Text = My.Settings.theRump
End Sub
Private Sub RText_OutputText_TextChanged(sender As Object, e As EventArgs) Handles RichTextBox1.TextChanged, RichTextBox2.TextChanged
'获取sender
Dim RText_OutputText As RichTextBox = DirectCast(sender, RichTextBox)
If RText_OutputText.Lines.Length > 100000 Then
Dim lines() As String = RText_OutputText.Lines
Dim newLines(lines.Length - 1000) As String
Array.Copy(lines, 1000, newLines, 0, newLines.Length)
End If
'If RText_OutputText.Scrollcaret() Then
RText_OutputText.ScrollToCaret()
End Sub
Private Sub ToolStripButton6_Click(sender As Object, e As EventArgs) Handles ToolStripButton6.Click, ToolStripButton5.Click
'获取按钮
Dim ToolStripButton As ToolStripButton = DirectCast(sender, ToolStripButton)
'获取tag
Dim mtag As String = ToolStripButton.Tag.ToString
'如果mtag为1
If mtag = "1" Then
RichTextBox1.Clear()
'如果 mtag为2
ElseIf mtag = "2" Then
RichTextBox2.Clear()
End If
End Sub
Private Sub ToolStripComboBox1_DropDown(sender As Object, e As EventArgs) Handles ToolStripComboBox1.DropDown
ToolStripComboBox1.Items.Clear()
ToolStripComboBox1.Items.AddRange(SerialPort.GetPortNames())
End Sub
Public isread As Boolean = False '串口关闭标志
Public isListen As Boolean = False '串口等待关闭标志
Private Sub ToolStripButton1_Click(sender As Object, e As EventArgs) Handles ToolStripButton1.Click
If ToolStripButton1.Text = "关闭连接" Then
ToolStripButton1.Text = "打开连接"
ToolStripButton1.BackColor = Color.Transparent
ToolStripComboBox1.Enabled = True
ToolStripComboBox2.Enabled = True
SharedFunction.CloseSerial(SerialPort1, isread, isListen)
Else
ToolStripComboBox1.Enabled = False
ToolStripComboBox2.Enabled = False
ToolStripButton1.Text = "关闭连接"
ToolStripButton1.BackColor = Color.OrangeRed
Dim vmbaud As Integer = 0
isread = False
isListen = False
'判断端口号是否合法
If String.IsNullOrEmpty(ToolStripComboBox1.Text) Then
MsgBox("请选择端口号!")
ToolStripButton1_Click(Nothing, Nothing)
Return
End If
'判断波特率是否合法
If String.IsNullOrEmpty(ToolStripComboBox2.Text) OrElse Not Integer.TryParse(ToolStripComboBox2.Text, vmbaud) Then
MsgBox("请选择波特率!")
ToolStripButton1_Click(Nothing, Nothing)
Return
End If
'打开串口
If SharedFunction.OpenSerial(SerialPort1, ToolStripComboBox1.Text, vmbaud) Then
Else
MsgBox("串口打开失败!")
ToolStripButton1_Click(Nothing, Nothing)
Return
End If
End If
End Sub
Private _recvBuffer(4095) As Byte
Public recvBufferli As List(Of Byte)
Public recvBufferliindex As Integer = 0
Private Sub SerialPort1_DataReceived(sender As Object, e As IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
If isread Then Return
isListen = True
Static bytes As Integer = 0
Dim sp As SerialPort = DirectCast(sender, SerialPort)
Try
Do
bytes = sp.BytesToRead
If bytes <= 0 Then Exit Sub
Dim buf(bytes - 1) As Byte
sp.Read(buf, 0, bytes)
recvBufferli.AddRange(buf)
Thread.Sleep(5)
Loop While sp.BytesToRead > 0
If recvBufferli.Count > 0 Then
Dim buf(recvBufferli.Count - 1) As Byte
Array.Copy(recvBufferli.ToArray, 0, buf, 0, buf.Length)
recvBufferli.Clear()
Dim ndate As DateTime = DateTime.Now
'AddTimeStamps
Dim readstr1 As String = Encoding.ASCII.GetString(buf)
'以回车换行切割readstr
Dim readstrs() As String = readstr1.Trim.Split(vbCrLf)
For Each readstr In readstrs
readstr = readstr.Trim
If String.IsNullOrEmpty(readstr) Then Continue For
Dim RuningLognode As RuningLogConfig = New RuningLogConfig($"{ndate.ToString("yyyy-MM-dd HH:mm:ss:fff")}RX:{readstr}")
RuningLog.OutputLogsToTheControl(RichTextBox1, RuningLognode, 1)
If filedic.ContainsKey("1") AndAlso filedic("1").IsWriter Then
filedic("1").WriteData(RuningLognode.logstr)
End If
FilterRecvData(readstr, RuningLognode)
Next
'G_CommunicationProtocol.ProcessRecvData(buf)
End If
isListen = False
Catch ex As Exception
isListen = False
RuningLog.OutputLogsToTheControl(RichTextBox1, New RuningLogConfig($"串口接收数据失败,原因:{ex.Message}", Color.Red), 1)
'AppendTipText($"串口接收数据失败,原因:{ex.Message}", Color.Red)
'G_RichTextPrint.AddQueue(RichTextBox1, New RichTextNodeConfig($"串口接收数据失败,原因:{ex.Message}", Color.Red), 1)
'RichTextPrint.OutputLogsToTheControl(m_Control, New RuningLogConfig($"串口接收数据失败,原因:{ex.Message}", Color.Red), 1)
End Try
End Sub
'将读取的数据写入到文本函数
'过滤串口接收数据函数
Private Sub FilterRecvData(readstr As String, RuningLognode As RuningLogConfig)
'判断是否需要头部过滤
If Not String.IsNullOrEmpty(t_Hread) Then
If Not readstr.StartsWith(t_Hread) Then
Return
End If
End If
'判断是否需要尾部过滤
If Not String.IsNullOrEmpty(t_rump) Then
If Not readstr.EndsWith(t_rump) Then
Return
End If
End If
If String.IsNullOrEmpty(t_rump) AndAlso String.IsNullOrEmpty(t_Hread) Then Return
'执行其他操作
RuningLog.OutputLogsToTheControl(RichTextBox2, RuningLognode, 1)
If filedic.ContainsKey("2") AndAlso filedic("2").IsWriter Then
filedic("2").WriteData(RuningLognode.logstr)
End If
End Sub
Public t_Hread As String
Public t_rump As String
Private Sub ToolStripButton3_Click(sender As Object, e As EventArgs) Handles ToolStripButton3.Click
'If String.IsNullOrEmpty(txt_Hread.Text) AndAlso String.IsNullOrEmpty(txt_rump.Text) Then
' MsgBox("")
' Return
'End If
If ToolStripButton3.Text.Equals("设置过滤") Then
ToolStripButton3.Text = "取消过滤"
t_Hread = txt_Hread.Text
t_rump = txt_rump.Text
Else
ToolStripButton3.Text = "设置过滤"
t_Hread = ""
t_rump = ""
End If
End Sub
Private Sub ToolStripButton4_Click(sender As Object, e As EventArgs) Handles ToolStripButton9.Click, ToolStripButton4.Click
'获取按钮
Dim btn As ToolStripButton = DirectCast(sender, ToolStripButton)
'获取按钮tag
Dim mtag As String = btn.Tag
Dim iswriter As Boolean = False
If mtag.Equals("1") Then
If btn.Text.Equals("保存左边到文件") Then
btn.Text = "取消保存左边到文件"
iswriter = True
Else
btn.Text = "保存左边到文件"
iswriter = False
End If
ElseIf mtag.Equals("2") Then
If btn.Text.Equals("保存右边到文件") Then
btn.Text = "取消保存右边到文件"
iswriter = True
Else
btn.Text = "保存右边到文件"
iswriter = False
End If
Else
Return
End If
'判断tag是否为1
SaveTextFileWithTime(mtag, iswriter)
End Sub
'以时间为文件名创建文本 并返回追加写入对象
Private Sub SaveTextFileWithTime(mtag As String, iswriter As Boolean)
If iswriter Then
Dim dirstr As String = "其他"
If mtag.Equals("1") Then
dirstr = "原文日志"
ElseIf mtag.Equals("2") Then
dirstr = "过滤日志"
End If
Dim filename As String = DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss") & ".txt"
Dim filepath As String = Application.StartupPath & $"\{dirstr}\" & filename
If Not Directory.Exists(Application.StartupPath & $"\{dirstr}\") Then
Directory.CreateDirectory(Application.StartupPath & $"\{dirstr}\")
End If
If filedic.ContainsKey(mtag) Then
filedic(mtag).SwitchFile(filepath)
filedic(mtag).SetIsWriter(iswriter)
Else
filedic.Add(mtag, New StreamWriternode(filepath))
filedic(mtag).SetIsWriter(iswriter)
End If
Else
If filedic.ContainsKey(mtag) Then
filedic(mtag).SetIsWriter(iswriter)
End If
End If
End Sub
Private Sub Form1_FormClosed(sender As Object, e As FormClosedEventArgs) Handles MyBase.FormClosed
'设置My.Settings
My.Settings.thewidth = Width
My.Settings.theheight = Height
My.Settings.theHead = txt_Hread.Text
My.Settings.theRump = txt_rump.Text
My.Settings.SplitterDistance = SplitContainer1.SplitterDistance
My.Settings.PortName = ToolStripComboBox1.Text
My.Settings.BaudRate = ToolStripComboBox2.Text
'保存My.Settings
My.Settings.Save()
'遍历filedic 并关闭StreamWriter
For Each item In filedic
item.Value.SetIsWriter(False)
Next
End Sub
End Class
Public Class StreamWriternode
Public IsWriter As Boolean
Public sw As StreamWriter
Sub New(filepath As String)
sw = New StreamWriter(filepath, True, Encoding.UTF8)
End Sub
'设置写入标志
Sub SetIsWriter(iswmriter As Boolean)
IsWriter = iswmriter
If Not IsWriter Then
If sw IsNot Nothing Then
sw.Close()
End If
End If
End Sub
'写入数据
Sub WriteData(data As String)
If IsWriter Then
'xie入数据
sw.WriteLine(data)
'保存
sw.Flush()
End If
End Sub
'切换写入文档
Sub SwitchFile(filepath As String)
'判断sw是否为空
If sw IsNot Nothing Then
sw.Close()
End If
sw = New StreamWriter(filepath, True, Encoding.UTF8)
End Sub
'判断sw是否为空
End Class

123
Log/RuningLog.vb Normal file
View File

@@ -0,0 +1,123 @@
Imports System.Text
Public Class RuningLog
Public Shared level As Integer = 1 '日志级别 0不输出日志 1输出日志2输出基础日志和错误信息
Delegate Function Deleg_OutputLogsToTheControl(c As Control, config As RuningLogConfig, Controltype As Integer) As Boolean
'输出日志到控件
''' <summary>
''' ''输出日志到控件
''' </summary>
''' <param name="c">控件 </param>
''' <param name="config">日志</param>
''' <returns></returns>
Public Shared Function OutputLogsToTheControl(c As Control, config As RuningLogConfig, Controltype As Integer) As Boolean
Try
If c.InvokeRequired Then
Dim dev As New Deleg_OutputLogsToTheControl(AddressOf OutputLogsToTheControl)
c.Invoke(dev, New Object() {c, config, Controltype})
Else
If Controltype >= level Then
Dim nc As RichTextBox = c
'获取富文本字符串末端位置
Dim index As Integer = nc.TextLength
If (Not IsNothing(config.strdata)) AndAlso config.strdata.Length > 0 Then
config.logstr = config.logstr & DataProcessing.ByteToString2(config.strdata)
End If
Dim strtxt = config.logstr & vbCrLf
'设置光标位置
'nc.SelectionStart = index
'添加文本
nc.AppendText(strtxt)
'设置选择区域
'nc.Select(index, strtxt.Length)
''设置选择区域颜色
'nc.SelectionColor = config.logstrColor
''设置选择区域字体
'nc.SelectionFont = config.logstrFont
''取消选中区域
'nc.DeselectAll()
End If
End If
Catch ex As Exception
End Try
End Function
'字符串附加时间戳
Public Shared Function AddTimeStamps(str As String) As String
Return Now.ToString("yyyy-MM-dd HH:mm:ss:fff") & " " & str
End Function
Public Shared Function AddTimeStamps(ndate As Date, str As String) As String
Return ndate.ToString("yyyy-MM-dd HH:mm:ss:fff") & " " & str
End Function
End Class
Public Class RuningLogConfig
'日志信息
Public logstr As String
'日志信息颜色
Public logstrColor As Color
'日志信息字体
Public logstrFont As Font
'日志信息字体大小
'Public logstrFontSize As Integer
''日志信息字体粗细
'Public logstrFontBold As Boolean
''日志信息字体斜体
'Public logstrFontItalic As Boolean
''日志信息字体下划线
'Public logstrFontUnderline As Boolean
''日志信息字体删除线
'Public logstrFontStrikeout As Boolean
''日志信息字体对齐方式
'Public logstrFontAlign As StringAlignment
'日志信息字体背景色
Public logstrFontBackColor As Color
Public strdata As Byte()
''' <summary>
''' 文本、颜色、Font
''' </summary>
''' <param name="args"></param>
Sub New(ParamArray args() As Object)
If args.Length > 0 Then
logstr = args(0).ToString
'If args.Length > 1 Then
' logstrColor = args(1)
' If args.Length > 2 Then
' logstrFont = args(2)
' Else
' logstrFont = New Font("宋体", 12)
' End If
' If args.Length > 3 Then
' strdata = args(3)
' Else
' strdata = Nothing
' End If
'Else
' logstrColor = Color.Black
'End If
Else
logstr = "输空文本"
'logstrColor = Color.Black
'logstrFont = New Font("宋体", 12)
End If
End Sub
End Class

391
Mode/DataProcessing.vb Normal file
View File

@@ -0,0 +1,391 @@
Imports System.IO
Imports System.Net
Imports System.Net.NetworkInformation
Imports System.Net.Sockets
Imports System.Security.Cryptography
Imports System.Text
Imports System.Threading
Imports System.ComponentModel
Imports System.Reflection
Imports Newtonsoft.Json
Public Class DataProcessing
''' <summary>
''' 端口号转换为Byte数组
''' </summary>
''' <param name="port"></param>
''' <returns></returns>
Public Shared Function GetPortToBytes(port As String)
Dim bport As Integer = CInt(port)
Dim ports() As Byte = IntToByteLB(bport)
Return ports
End Function
'字符串转byte 数组
Public Shared Function GetBytesFromStr(str As String) As Byte()
Return Encoding.ASCII.GetBytes(str)
End Function
'bytes转字符串
Public Shared Function GetStrFromBytes(bytes() As Byte) As String
Return Encoding.ASCII.GetString(bytes)
End Function
'计算数组CRC16校验
Public Shared Function GetCRC16(data() As Byte) As Integer
Dim crc As Integer = &HFFFF
Dim i As Integer
Dim j As Integer
For i = 0 To data.Length - 1
crc = crc Xor data(i)
For j = 0 To 7
If (crc And &H1) <> 0 Then
crc = (crc >> 1) Xor &HA001
Else
crc = crc >> 1
End If
Next
Next
Return crc
End Function
''' <summary>
''' Int转2个字节Byte
''' 低字节在前,高字节在后
''' </summary>
''' <param name="i"></param>
''' <returns></returns>
Public Shared Function IntToByteLB(ByVal i As Integer) As Byte()
Dim btemp() As Byte = {0, 0}
Dim b() As Byte = BitConverter.GetBytes(i)
btemp(0) = b(1)
btemp(1) = b(0)
Return btemp
End Function
''' <summary>
''' Int转4个字节Byte
''' 低字节在前,高字节在后
''' </summary>
''' <param name="i"></param>
''' <returns></returns>
Public Shared Function IntToByteLxxB(ByVal i As Integer) As Byte()
Dim btemp() As Byte = {0, 0, 0, 0}
Dim b() As Byte = BitConverter.GetBytes(i)
btemp(0) = b(3)
btemp(1) = b(2)
btemp(2) = b(1)
btemp(3) = b(0)
Return btemp
End Function
Public Shared Function IntToByteHxxB(ByVal i As Integer) As Byte()
Dim btemp() As Byte = {0, 0, 0, 0}
Dim b() As Byte = BitConverter.GetBytes(i)
btemp(0) = b(0)
btemp(1) = b(1)
btemp(2) = b(2)
btemp(3) = b(3)
Return btemp
End Function
''' <summary>
''' Int转2个字节Byte
''' 高字节在前,低字节在后
''' </summary>
''' <param name="i"></param>
''' <returns></returns>
Public Shared Function IntToByteHB(ByVal i As Integer) As Byte()
Dim btemp() As Byte = {0, 0}
Dim b() As Byte = BitConverter.GetBytes(i)
btemp(0) = b(0)
btemp(1) = b(1)
Return btemp
End Function
''' <summary>
''' 获取文件的MD5值
''' 返回Byte数组值
''' </summary>
''' <param name="filepath">文件路径</param>
''' <returns></returns>
Public Shared Function GetMd5(filepath As String) As Byte()
Dim FileStr As FileStream = New FileStream(filepath, FileMode.Open, FileAccess.Read, FileShare.Read)
Dim data(FileStr.Length - 1) As Byte
FileStr.Read(data, 0, data.Length)
Dim md5s As Byte() = MD5.Create().ComputeHash(data)
'Dim fileMd5 As New StringBuilder()
'Dim i As Integer
'For i = 0 To md5s.Length - 1
' fileMd5.Append(md5s(i).ToString("x2"))
'Next
'Console.WriteLine($"MD5:{fileMd5}")
Return md5s
End Function
''' <summary>
''' 获取文件的MD5值
''' 返回String字符串
''' </summary>
''' <param name="filepath">文件路径</param>
''' <returns></returns>
Public Shared Function GetMd5String(filepath As String) As String
Dim FileStr As FileStream = New FileStream(filepath, FileMode.Open, FileAccess.Read, FileShare.Read)
Dim data(FileStr.Length) As Byte
FileStr.Read(data, 0, data.Length)
Dim md5s As Byte() = MD5.Create().ComputeHash(data)
Dim fileMd5 As New StringBuilder()
Dim i As Integer
For i = 0 To md5s.Length - 1
fileMd5.Append(md5s(i).ToString("x2"))
Next
Console.WriteLine($"MD5:{fileMd5}")
Return fileMd5.ToString()
End Function
''' <summary>
''' 获取本地可用IP
''' </summary>
''' <returns></returns>
Public Shared Function GetLocalIp() As List(Of IPAddress)
Dim address() As IPAddress
Dim destAddress As New List(Of IPAddress)
address = Dns.GetHostEntry(Dns.GetHostName()).AddressList
For Each pAddress As IPAddress In address
If pAddress.AddressFamily = AddressFamily.InterNetwork Then
destAddress.Add(pAddress)
End If
Next
Return destAddress
End Function
''' <summary>
''' Byte数组转字符串
''' </summary>
''' <param name="databuff"></param>
''' <returns></returns>
Public Shared Function ByteToString(databuff() As Byte)
Dim strData As String = String.Empty
For i = 0 To databuff.Length - 1
strData &= $" {Hex(databuff(i)).PadLeft(2, "0"c)}"
Next
Return strData
End Function
Public Shared Function ByteToString2(databuff() As Byte)
Dim strData As String = String.Empty
For i = 0 To databuff.Length - 1
strData &= $" {ByteToHex1(databuff(i)).PadLeft(2, "0"c)}"
Next
Return strData
End Function
'将16进制字符串转换为字节数组
Public Shared Function HexStringToByteArray(hex As String) As Byte()
Dim bytes As New List(Of Byte)
hex = hex.Replace(" ", "").Trim.ToUpper()
For i As Integer = 0 To hex.Length - 1 Step 2
Dim hexByte As String = hex.Substring(i, 2)
bytes.Add(Convert.ToByte(hexByte, 16))
Next
Return bytes.ToArray()
End Function
'将字节数组转换为16进制字符串
Public Shared Function ByteArrayToHexString(bytes As Byte()) As String
If bytes Is Nothing OrElse bytes.Length = 0 Then Return ""
Dim hex As String = ""
For Each b As Byte In bytes
hex += b.ToString("X2") & " "
Next
Return hex.Trim()
End Function
'byte 转16进制字符串
Public Shared Function ByteToHex1(ByVal b As Byte) As String
Return b.ToString("X2")
End Function
'16进制字符串 转byte数组
'Public Shared Function HexToByte(ByVal hex As String) As Byte()
' Dim result As Byte() = New Byte(hex.Length / 2 - 1) {}
' For i As Integer = 0 To hex.Length - 1 Step 2
' result(i / 2) = Convert.ToByte(hex.Substring(i, 2), 16)
' Next
'End Function
''' <summary>
''' 等待回复
''' </summary>
''' <param name="isReply">是否回复标志位</param>
''' <param name="TimeOut">超时时间</param>
Public Shared Sub WaitReply(isReply As Boolean, TimeOut As Integer) 'ByRef
Dim tick As Integer
Dim startTick As Integer = My.Computer.Clock.TickCount
isReply = False
While isReply = False AndAlso tick <= TimeOut
Thread.Sleep(3)
tick = My.Computer.Clock.TickCount - startTick
Application.DoEvents()
End While
End Sub
''' <summary>
''' 延时N秒
''' </summary>
''' <param name="HowLong">延时时间值</param>
Public Shared Sub PauseWait(ByVal HowLong As Long)
Dim tick As Long
tick = My.Computer.Clock.TickCount
Do
My.Application.DoEvents()
Loop Until tick + HowLong < My.Computer.Clock.TickCount
End Sub
''' <summary>
''' IP地址转换为Byte数组
''' </summary>
''' <param name="addr"></param>
''' <returns></returns>
Public Shared Function GetAddressToBytes(addr As String)
Dim iadd() As String = addr.Split(New Char() {"."c}, StringSplitOptions.RemoveEmptyEntries)
Dim address(3) As Byte
address(0) = iadd(0) '例192
address(1) = iadd(1) '例168
address(2) = iadd(2)
address(3) = iadd(3)
Return address
End Function
''' <summary>
''' 获取字符串的MD5值
''' </summary>
''' <param name="str">需要求MD5的原文字符串</param>
''' <returns></returns>
Public Shared Function GetStringMd5(str As String) As String
Dim md5Hasher As New MD5CryptoServiceProvider()
Dim data As Byte() = md5Hasher.ComputeHash(Encoding.UTF8.GetBytes(str))
Dim fileMd5 As New StringBuilder()
Dim i As Integer
For i = 0 To data.Length - 1
fileMd5.Append(data(i).ToString("X2"))
Next
Return fileMd5.ToString()
End Function
''' <summary>
''' 分块函数
''' 计算Byte数组的块数
''' </summary>
''' <param name="databuff"></param>
''' <param name="size"></param>
''' <returns></returns>
Public Shared Function GetBlocks(databuff As Byte(), size As Integer) As Integer
Dim blockCount As Integer = databuff.Length \ size
If databuff.Length Mod size > 0 Then
blockCount += 1
End If
Return blockCount
End Function
''' <summary>
''' 字符串转换Byte数组
''' 字符串为连续且不包含任意字符的字符串
''' </summary>
''' <param name="str"></param>
''' <returns></returns>
Public Shared Function GetStringToDataByte(str As String) As Byte()
Dim dataList As New List(Of Byte)
For index As Integer = 0 To str.Length - 1 Step 2
dataList.Add($"&H{str.Substring(index, 2)}")
Next
Return dataList.ToArray
End Function
''' <summary>
''' 把UNIX时间戳转换为标准时间
''' </summary>
''' <param name="intTime">要转换的UNIX时间戳</param>
''' <param name="ime">时区</param>
''' <returns>intTime所代表的标准时间</returns>
Public Shared Function FromUnixTime(intTime As Long, ime As Long) As Date
'If intTime Is Nothing Or Not IsNumeric(intTime) Then
' FromUnixTime = Now()
' Exit Function
'End If
'If intTime Is Nothing Or Not IsNumeric(intTimeZone) Then intTimeZone = 0
'FromUnixTime = DateAdd("s", intTime, "1970-1-1 0:0:0")
'FromUnixTime = DateAdd("h", intTimeZone, FromUnixTime)
Dim a As Date = DateTime.Parse("1970-1-1 0:0:0")
a = a.AddSeconds(intTime)
a = a.AddHours(ime)
Return a
End Function
''' <summary>
''' 和校验取余数
''' 求Byte数组的和校验取余数
''' </summary>
''' <param name="dataPacket">Byte数组</param>
''' <returns></returns>
Public Shared Function SumAndMod(dataPacket As Byte()) As Byte
Dim sum As Integer
For idx = 0 To dataPacket.Length - 1
sum += dataPacket(idx)
sum = sum And &HFF
Next
Dim sumMod As Byte = &HFF - sum
Return sumMod
End Function
Public Shared Sub Delay(ByVal time As Integer)
Dim timeEnd As Integer = My.Computer.Clock.TickCount + time
Do
Application.DoEvents()
Loop Until My.Computer.Clock.TickCount > timeEnd
End Sub
''' <summary>
''' 获取枚举描述特性
''' </summary>
''' <param name="enumValue">需要获取特性的枚举值</param>
''' <returns>枚举描述特性</returns>
Public Shared Function GetEnumDescription(enumValue As [Enum]) As String
Dim fi As FieldInfo = enumValue.GetType().GetField(enumValue.ToString())
Dim attr() As DescriptionAttribute =
DirectCast(fi.GetCustomAttributes(GetType(DescriptionAttribute),
False), DescriptionAttribute())
If attr.Length > 0 Then
Return attr(0).Description
Else
Return enumValue.ToString()
End If
End Function
End Class

193
Mode/SharedFunction.vb Normal file
View File

@@ -0,0 +1,193 @@
Imports System.IO.Ports
Public Class SharedFunction
#Region "串口操作"
'打开串口
''' <summary>
''' 打开串口
''' </summary>
''' <param name="m_Serial">串口</param>
''' <param name="portName">串口号</param>
''' <param name="baudRate">波特率</param>
''' <returns></returns>
Public Shared Function OpenSerial(m_Serial As SerialPort, portName As String, baudRate As Integer) As Boolean
If IsNothing(m_Serial) OrElse m_Serial.IsOpen Then Return False
m_Serial.PortName = portName
m_Serial.BaudRate = baudRate
m_Serial.Open()
Return True
End Function
'设置串口波特率
''' <summary>
''' 设置串口波特率
''' </summary>
''' <param name="m_Serial"> 串口 </param>
''' <param name="baudRate">波特率</param>
''' <returns></returns>
Public Shared Function SetSerialBaudRate(m_Serial As SerialPort, baudRate As Integer) As Boolean
If IsNothing(m_Serial) OrElse Not m_Serial.IsOpen Then Return False
m_Serial.BaudRate = baudRate
Return True
End Function
''' <summary>
''' 关闭串口
''' </summary>
''' <param name="m_Serial">串口</param>
''' <param name="isread">串口关闭标志</param>
''' <param name="isListen">串口等待关闭标志</param>
Public Shared Sub CloseSerial(m_Serial As SerialPort, ByRef isread As Boolean, ByRef isListen As Boolean)
If IsNothing(m_Serial) OrElse Not m_Serial.IsOpen Then Return
isread = True
While isListen
Application.DoEvents()
Threading.Thread.Sleep(10)
End While
Threading.Thread.Sleep(10)
m_Serial.Close()
End Sub
#End Region
#Region "数据转换"
Public Shared Function ByteToHexString(databuff() As Byte) As String
Dim strData As String = String.Empty
For i = 0 To databuff.Length - 1
strData &= $" {Hex(databuff(i)).PadLeft(2, "0"c)}"
Next
Return strData
End Function
Public Shared Function StringToHexString(hexstr As String) As String
'判断字符串是否为空或 者为空字符串
If String.IsNullOrEmpty(hexstr) Then Return Nothing
'替换字符中的分隔符号
hexstr = hexstr.Trim().Replace(" ", "").Replace("-", "").Replace(",", "").Replace(":", "").Replace(";", "").Replace(".", "")
'判断字符串的长度是否为偶数
If hexstr.Length Mod 2 <> 0 Then
'不为偶数往最后一个字节前面补0
hexstr = hexstr.Insert(hexstr.Length - 1, "0")
End If
'以2为步长将字符串转换为字节数组 不足2位前面补0
Dim databuff() As Byte = Enumerable.Range(0, hexstr.Length).Where(Function(x) x Mod 2 = 0).Select(Function(x) Convert.ToByte(hexstr.Substring(x, 2), 16)).ToArray()
Return ByteToHexString(databuff)
End Function
Public Shared Function HexStringToByte(hexstr As String) As Byte()
'判断字符串是否为空或 者为空字符串
If String.IsNullOrEmpty(hexstr) Then Return Nothing
'替换字符中的分隔符号
hexstr = hexstr.Trim().Replace(" ", "").Replace("-", "").Replace(",", "").Replace(":", "").Replace(";", "").Replace(".", "")
'判断字符串的长度是否为偶数
If hexstr.Length Mod 2 <> 0 Then
'不为偶数往最后一个字节前面补0
hexstr = hexstr.Insert(hexstr.Length - 1, "0")
End If
'以2为步长将字符串转换为字节数组 不足2位前面补0
Return Enumerable.Range(0, hexstr.Length).Where(Function(x) x Mod 2 = 0).Select(Function(x) Convert.ToByte(hexstr.Substring(x, 2), 16)).ToArray()
End Function
''' <summary>
''' Int转2个字节Byte
''' 高字节在前,低字节在后
''' </summary>
''' <param name="i"></param>
''' <returns></returns>
Public Shared Function IntToByteHB(ByVal i As Integer) As Byte()
Dim btemp() As Byte = {0, 0}
Dim b() As Byte = BitConverter.GetBytes(i)
btemp(0) = b(0)
btemp(1) = b(1)
Return btemp
End Function
''' <summary>
''' Int转2个字节Byte
''' 高字节在前,低字节在后
''' </summary>
''' <param name="i"></param>
''' <returns></returns>
Public Shared Function IntToByteLB(ByVal i As Integer) As Byte()
Dim btemp() As Byte = {0, 0}
Dim b() As Byte = BitConverter.GetBytes(i)
btemp(0) = b(1)
btemp(1) = b(0)
Return btemp
End Function
#End Region
#Region "数据校验"
'计算数据和 校验
Public Shared Function GetCheckSum(ByVal data As Byte()) As Byte
Dim sum As Integer = 0
For i As Integer = 0 To data.Length - 1
sum += data(i)
Next
Return sum
End Function
Public Shared Function GetCheckSumMod(ByVal data As Byte()) As Byte
Dim sum As Integer = 0
For i As Integer = 0 To data.Length - 2
sum += data(i)
Next
sum = sum And &HFF
Return sum
End Function
Public Shared Function GetCheckSumMod2(ByVal data As Byte()) As Byte
Dim sum As Integer = 0
For i As Integer = 0 To data.Length - 1
sum += data(i)
Next
sum = sum And &HFF
Return sum
End Function
''' <summary>
''' 和校验取余数
''' 求Byte数组的和校验取余数
''' </summary>
''' <param name="dataPacket">Byte数组</param>
''' <returns></returns>
Public Function GetSumCheckMod(dataPacket As Byte()) As Byte
Dim sum As Integer
For idx = 0 To dataPacket.Length - 1
sum += dataPacket(idx)
sum = sum And &HFF
Next
Dim sumMod As Byte = &HFF - sum
Return sumMod
End Function
#End Region
#Region "跨线程调用UI"
Delegate Sub delSetFromUI(control As Control, mText As String, textcolor As Color, cbolor As Color)
Public Shared Sub SetFromUI(ByVal control As Control, mText As String, textcolor As Color, cbolor As Color)
If IsNothingcontrol) Then Return
If control.InvokeRequired Then
control.Invoke(New delSetFromUI(AddressOf SetFromUI), control, mText, textcolor, cbolor)
Else
control.Text = mText
control.ForeColor = textcolor
control.BackColor = cbolor
End If
End Sub
#End Region
End Class

38
My Project/Application.Designer.vb generated Normal file
View File

@@ -0,0 +1,38 @@
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.42000
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My
'NOTE: This file is auto-generated; do not modify it directly. To make changes,
' or if you encounter build errors in this file, go to the Project Designer
' (go to Project Properties or double-click the My Project node in
' Solution Explorer), and make changes on the Application tab.
'
Partial Friend Class MyApplication
<Global.System.Diagnostics.DebuggerStepThroughAttribute()> _
Public Sub New()
MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows)
Me.IsSingleInstance = false
Me.EnableVisualStyles = true
Me.SaveMySettingsOnExit = true
Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses
End Sub
<Global.System.Diagnostics.DebuggerStepThroughAttribute()> _
Protected Overrides Sub OnCreateMainForm()
Me.MainForm = Global.SerialPortLogFilterin.Form1
End Sub
End Class
End Namespace

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<MyApplicationData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<MySubMain>true</MySubMain>
<MainForm>Form1</MainForm>
<SingleInstance>false</SingleInstance>
<ShutdownMode>0</ShutdownMode>
<EnableVisualStyles>true</EnableVisualStyles>
<AuthenticationMode>0</AuthenticationMode>
<ApplicationType>0</ApplicationType>
<SaveMySettingsOnExit>true</SaveMySettingsOnExit>
</MyApplicationData>

View File

@@ -0,0 +1,35 @@
Imports System
Imports System.Reflection
Imports System.Runtime.InteropServices
' 有关程序集的一般信息由以下
' 控制。更改这些特性值可修改
' 与程序集关联的信息。
'查看程序集特性的值
<Assembly: AssemblyTitle("SerialPortLogFilterin")>
<Assembly: AssemblyDescription("")>
<Assembly: AssemblyCompany("")>
<Assembly: AssemblyProduct("SerialPortLogFilterin")>
<Assembly: AssemblyCopyright("Copyright © 2025")>
<Assembly: AssemblyTrademark("")>
<Assembly: ComVisible(False)>
'如果此项目向 COM 公开,则下列 GUID 用于 typelib 的 ID
<Assembly: Guid("049d2060-4e08-48a0-b7b4-c6e693da50aa")>
' 程序集的版本信息由下列四个值组成:
'
' 主版本
' 次版本
' 生成号
' 修订号
'
'可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
'通过使用 "*",如下所示:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("1.0.0.2")>
<Assembly: AssemblyFileVersion("1.0.0.2")>

62
My Project/Resources.Designer.vb generated Normal file
View File

@@ -0,0 +1,62 @@
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.42000
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My.Resources
'This class was auto-generated by the StronglyTypedResourceBuilder
'class via a tool like ResGen or Visual Studio.
'To add or remove a member, edit your .ResX file then rerun ResGen
'with the /str option, or rebuild your VS project.
'''<summary>
''' A strongly-typed resource class, for looking up localized strings, etc.
'''</summary>
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0"), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
Friend Module Resources
Private resourceMan As Global.System.Resources.ResourceManager
Private resourceCulture As Global.System.Globalization.CultureInfo
'''<summary>
''' Returns the cached ResourceManager instance used by this class.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
Get
If Object.ReferenceEquals(resourceMan, Nothing) Then
Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("SerialPortLogFilterin.Resources", GetType(Resources).Assembly)
resourceMan = temp
End If
Return resourceMan
End Get
End Property
'''<summary>
''' Overrides the current thread's CurrentUICulture property for all
''' resource lookups using this strongly typed resource class.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend Property Culture() As Global.System.Globalization.CultureInfo
Get
Return resourceCulture
End Get
Set(ByVal value As Global.System.Globalization.CultureInfo)
resourceCulture = value
End Set
End Property
End Module
End Namespace

117
My Project/Resources.resx Normal file
View File

@@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

157
My Project/Settings.Designer.vb generated Normal file
View File

@@ -0,0 +1,157 @@
'------------------------------------------------------------------------------
' <auto-generated>
' 此代码由工具生成。
' 运行时版本:4.0.30319.42000
'
' 对此文件的更改可能会导致不正确的行为,并且如果
' 重新生成代码,这些更改将会丢失。
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0"), _
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Partial Friend NotInheritable Class MySettings
Inherits Global.System.Configuration.ApplicationSettingsBase
Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings)
#Region "My.Settings 自动保存功能"
#If _MyType = "WindowsForms" Then
Private Shared addedHandler As Boolean
Private Shared addedHandlerLockObject As New Object
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs)
If My.Application.SaveMySettingsOnExit Then
My.Settings.Save()
End If
End Sub
#End If
#End Region
Public Shared ReadOnly Property [Default]() As MySettings
Get
#If _MyType = "WindowsForms" Then
If Not addedHandler Then
SyncLock addedHandlerLockObject
If Not addedHandler Then
AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings
addedHandler = True
End If
End SyncLock
End If
#End If
Return defaultInstance
End Get
End Property
<Global.System.Configuration.UserScopedSettingAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Configuration.DefaultSettingValueAttribute("")> _
Public Property PortName() As String
Get
Return CType(Me("PortName"),String)
End Get
Set
Me("PortName") = value
End Set
End Property
<Global.System.Configuration.UserScopedSettingAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Configuration.DefaultSettingValueAttribute("")> _
Public Property BaudRate() As String
Get
Return CType(Me("BaudRate"),String)
End Get
Set
Me("BaudRate") = value
End Set
End Property
<Global.System.Configuration.UserScopedSettingAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Configuration.DefaultSettingValueAttribute("1309")> _
Public Property thewidth() As Integer
Get
Return CType(Me("thewidth"),Integer)
End Get
Set
Me("thewidth") = value
End Set
End Property
<Global.System.Configuration.UserScopedSettingAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Configuration.DefaultSettingValueAttribute("921")> _
Public Property theheight() As Integer
Get
Return CType(Me("theheight"),Integer)
End Get
Set
Me("theheight") = value
End Set
End Property
<Global.System.Configuration.UserScopedSettingAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Configuration.DefaultSettingValueAttribute("619")> _
Public Property SplitterDistance() As Integer
Get
Return CType(Me("SplitterDistance"),Integer)
End Get
Set
Me("SplitterDistance") = value
End Set
End Property
<Global.System.Configuration.UserScopedSettingAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Configuration.DefaultSettingValueAttribute("")> _
Public Property theHead() As String
Get
Return CType(Me("theHead"),String)
End Get
Set
Me("theHead") = value
End Set
End Property
<Global.System.Configuration.UserScopedSettingAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Configuration.DefaultSettingValueAttribute("")> _
Public Property theRump() As String
Get
Return CType(Me("theRump"),String)
End Get
Set
Me("theRump") = value
End Set
End Property
End Class
End Namespace
Namespace My
<Global.Microsoft.VisualBasic.HideModuleNameAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute()> _
Friend Module MySettingsProperty
<Global.System.ComponentModel.Design.HelpKeywordAttribute("My.Settings")> _
Friend ReadOnly Property Settings() As Global.SerialPortLogFilterin.My.MySettings
Get
Return Global.SerialPortLogFilterin.My.MySettings.Default
End Get
End Property
End Module
End Namespace

View File

@@ -0,0 +1,27 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="My" GeneratedClassName="MySettings" UseMySettingsClassName="true">
<Profiles />
<Settings>
<Setting Name="PortName" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="BaudRate" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="thewidth" Type="System.Int32" Scope="User">
<Value Profile="(Default)">1309</Value>
</Setting>
<Setting Name="theheight" Type="System.Int32" Scope="User">
<Value Profile="(Default)">921</Value>
</Setting>
<Setting Name="SplitterDistance" Type="System.Int32" Scope="User">
<Value Profile="(Default)">619</Value>
</Setting>
<Setting Name="theHead" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="theRump" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
</Settings>
</SettingsFile>

25
SerialPortLogFilterin.sln Normal file
View File

@@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.32602.291
MinimumVisualStudioVersion = 10.0.40219.1
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "SerialPortLogFilterin", "SerialPortLogFilterin.vbproj", "{49B97406-507B-46BA-8F7F-79AC5A484602}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{49B97406-507B-46BA-8F7F-79AC5A484602}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{49B97406-507B-46BA-8F7F-79AC5A484602}.Debug|Any CPU.Build.0 = Debug|Any CPU
{49B97406-507B-46BA-8F7F-79AC5A484602}.Release|Any CPU.ActiveCfg = Release|Any CPU
{49B97406-507B-46BA-8F7F-79AC5A484602}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {340C45C6-288E-4FA4-B78A-944ACBCB3D0B}
EndGlobalSection
EndGlobal

View File

@@ -0,0 +1,126 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{49B97406-507B-46BA-8F7F-79AC5A484602}</ProjectGuid>
<OutputType>WinExe</OutputType>
<StartupObject>SerialPortLogFilterin.My.MyApplication</StartupObject>
<RootNamespace>SerialPortLogFilterin</RootNamespace>
<AssemblyName>SerialPortLogFilterin</AssemblyName>
<FileAlignment>512</FileAlignment>
<MyType>WindowsForms</MyType>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>bin\Debug\</OutputPath>
<DocumentationFile>SerialPortLogFilterin.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<DefineDebug>false</DefineDebug>
<DefineTrace>true</DefineTrace>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DocumentationFile>SerialPortLogFilterin.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
</PropertyGroup>
<PropertyGroup>
<OptionExplicit>On</OptionExplicit>
</PropertyGroup>
<PropertyGroup>
<OptionCompare>Binary</OptionCompare>
</PropertyGroup>
<PropertyGroup>
<OptionStrict>Off</OptionStrict>
</PropertyGroup>
<PropertyGroup>
<OptionInfer>On</OptionInfer>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Net.Http" />
</ItemGroup>
<ItemGroup>
<Import Include="Microsoft.VisualBasic" />
<Import Include="System" />
<Import Include="System.Collections" />
<Import Include="System.Collections.Generic" />
<Import Include="System.Data" />
<Import Include="System.Drawing" />
<Import Include="System.Diagnostics" />
<Import Include="System.Windows.Forms" />
<Import Include="System.Linq" />
<Import Include="System.Xml.Linq" />
<Import Include="System.Threading.Tasks" />
</ItemGroup>
<ItemGroup>
<Compile Include="Form1.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Form1.Designer.vb">
<DependentUpon>Form1.vb</DependentUpon>
<SubType>Form</SubType>
</Compile>
<Compile Include="Log\RuningLog.vb" />
<Compile Include="Mode\DataProcessing.vb" />
<Compile Include="Mode\SharedFunction.vb" />
<Compile Include="My Project\AssemblyInfo.vb" />
<Compile Include="My Project\Application.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Application.myapp</DependentUpon>
</Compile>
<Compile Include="My Project\Resources.Designer.vb">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="My Project\Settings.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Form1.resx">
<DependentUpon>Form1.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="My Project\Resources.resx">
<Generator>VbMyResourcesResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.vb</LastGenOutput>
<CustomToolNamespace>My.Resources</CustomToolNamespace>
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<None Include="My Project\Application.myapp">
<Generator>MyApplicationCodeGenerator</Generator>
<LastGenOutput>Application.Designer.vb</LastGenOutput>
</None>
<None Include="My Project\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<CustomToolNamespace>My</CustomToolNamespace>
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
</None>
<None Include="App.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
</Project>

Binary file not shown.

View File

@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="SerialPortLogFilterin.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
</startup>
<userSettings>
<SerialPortLogFilterin.My.MySettings>
<setting name="PortName" serializeAs="String">
<value />
</setting>
<setting name="BaudRate" serializeAs="String">
<value />
</setting>
<setting name="thewidth" serializeAs="String">
<value>1309</value>
</setting>
<setting name="theheight" serializeAs="String">
<value>921</value>
</setting>
<setting name="SplitterDistance" serializeAs="String">
<value>619</value>
</setting>
<setting name="theHead" serializeAs="String">
<value />
</setting>
<setting name="theRump" serializeAs="String">
<value />
</setting>
</SerialPortLogFilterin.My.MySettings>
</userSettings>
</configuration>

Binary file not shown.

View File

@@ -0,0 +1,216 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>
SerialPortLogFilterin
</name>
</assembly>
<members>
<member name="T:SerialPortLogFilterin.My.Resources.Resources">
<summary>
A strongly-typed resource class, for looking up localized strings, etc.
</summary>
</member>
<member name="P:SerialPortLogFilterin.My.Resources.Resources.ResourceManager">
<summary>
Returns the cached ResourceManager instance used by this class.
</summary>
</member>
<member name="P:SerialPortLogFilterin.My.Resources.Resources.Culture">
<summary>
Overrides the current thread's CurrentUICulture property for all
resource lookups using this strongly typed resource class.
</summary>
</member>
<member name="M:SerialPortLogFilterin.RuningLog.OutputLogsToTheControl(System.Windows.Forms.Control,SerialPortLogFilterin.RuningLogConfig,System.Int32)">
<summary>
''输出日志到控件
</summary>
<param name="c">控件 </param>
<param name="config">日志</param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.RuningLogConfig.#ctor(System.Object[])">
<summary>
文本、颜色、Font
</summary>
<param name="args"></param>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.GetPortToBytes(System.String)">
<summary>
端口号转换为Byte数组
</summary>
<param name="port"></param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.IntToByteLB(System.Int32)">
<summary>
Int转2个字节Byte
低字节在前,高字节在后
</summary>
<param name="i"></param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.IntToByteLxxB(System.Int32)">
<summary>
Int转4个字节Byte
低字节在前,高字节在后
</summary>
<param name="i"></param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.IntToByteHB(System.Int32)">
<summary>
Int转2个字节Byte
高字节在前,低字节在后
</summary>
<param name="i"></param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.GetMd5(System.String)">
<summary>
获取文件的MD5值
返回Byte数组值
</summary>
<param name="filepath">文件路径</param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.GetMd5String(System.String)">
<summary>
获取文件的MD5值
返回String字符串
</summary>
<param name="filepath">文件路径</param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.GetLocalIp">
<summary>
获取本地可用IP
</summary>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.ByteToString(System.Byte[])">
<summary>
Byte数组转字符串
</summary>
<param name="databuff"></param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.WaitReply(System.Boolean,System.Int32)">
<summary>
等待回复
</summary>
<param name="isReply">是否回复标志位</param>
<param name="TimeOut">超时时间</param>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.PauseWait(System.Int64)">
<summary>
延时N秒
</summary>
<param name="HowLong">延时时间值</param>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.GetAddressToBytes(System.String)">
<summary>
IP地址转换为Byte数组
</summary>
<param name="addr"></param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.GetStringMd5(System.String)">
<summary>
获取字符串的MD5值
</summary>
<param name="str">需要求MD5的原文字符串</param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.GetBlocks(System.Byte[],System.Int32)">
<summary>
分块函数
计算Byte数组的块数
</summary>
<param name="databuff"></param>
<param name="size"></param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.GetStringToDataByte(System.String)">
<summary>
字符串转换Byte数组
字符串为连续且不包含任意字符的字符串
</summary>
<param name="str"></param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.FromUnixTime(System.Int64,System.Int64)">
<summary>
把UNIX时间戳转换为标准时间
</summary>
<param name="intTime">要转换的UNIX时间戳</param>
<param name="ime">时区</param>
<returns>intTime所代表的标准时间</returns>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.SumAndMod(System.Byte[])">
<summary>
和校验取余数
求Byte数组的和校验取余数
</summary>
<param name="dataPacket">Byte数组</param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.GetEnumDescription(System.Enum)">
<summary>
获取枚举描述特性
</summary>
<param name="enumValue">需要获取特性的枚举值</param>
<returns>枚举描述特性</returns>
</member>
<member name="M:SerialPortLogFilterin.SharedFunction.OpenSerial(System.IO.Ports.SerialPort,System.String,System.Int32)">
<summary>
打开串口
</summary>
<param name="m_Serial">串口</param>
<param name="portName">串口号</param>
<param name="baudRate">波特率</param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.SharedFunction.SetSerialBaudRate(System.IO.Ports.SerialPort,System.Int32)">
<summary>
设置串口波特率
</summary>
<param name="m_Serial"> 串口 </param>
<param name="baudRate">波特率</param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.SharedFunction.CloseSerial(System.IO.Ports.SerialPort,System.Boolean@,System.Boolean@)">
<summary>
关闭串口
</summary>
<param name="m_Serial">串口</param>
<param name="isread">串口关闭标志</param>
<param name="isListen">串口等待关闭标志</param>
</member>
<member name="M:SerialPortLogFilterin.SharedFunction.IntToByteHB(System.Int32)">
<summary>
Int转2个字节Byte
高字节在前,低字节在后
</summary>
<param name="i"></param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.SharedFunction.IntToByteLB(System.Int32)">
<summary>
Int转2个字节Byte
高字节在前,低字节在后
</summary>
<param name="i"></param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.SharedFunction.GetSumCheckMod(System.Byte[])">
<summary>
和校验取余数
求Byte数组的和校验取余数
</summary>
<param name="dataPacket">Byte数组</param>
<returns></returns>
</member>
</members>
</doc>

View File

@@ -0,0 +1,134 @@
2025-06-07 16:11:03:454 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:11:04:459 RX:[ cmlog ][OPENCPU]:[CMMQTT] id:0, msg type:4
2025-06-07 16:11:05:457 RX:[ cmlog ][OPENCPU]:[CMMQTT] pkt type:4,len:4
2025-06-07 16:11:06:442 RX:[ cmlog ][OPENCPU]:MQTT Client pub_ack: 50557,0
2025-06-07 16:11:07:460 RX: cmlog ]__cm_virt_at_task already exist
2025-06-07 16:11:08:442 RX:[ cmlog ][OPENCPU]:MQTT Client publish msgid = 50557
2025-06-07 16:11:08:551 RX:[ cmlog ][OPENCPU]:[CMMQTT] send len:38
2025-06-07 16:11:08:666 RX:[ cmlog ][OPENCPU]:[CMMQTT] id:0,publish msg,topic:blw/rcu/pub/1003,len:38
2025-06-07 16:11:08:772 RX:asocket_cb 3 2
2025-06-07 16:11:08:880 RX:asocket_cb 3 10
2025-06-07 16:11:09:880 RX:[ELOOP] post event=0x7e044c00
2025-06-07 16:11:10:880 RX:asocket_cb 3 0
2025-06-07 16:11:11:879 RX:[ELOOP] post event=0x7e044c18
2025-06-07 16:11:12:878 RX:[ELOOP] rdy_list eloop=0x7e2617d0
2025-06-07 16:11:13:879 RX:asocket_on_eloop 0x7e044c00,0x7e293098
2025-06-07 16:11:14:902 RX:[ cmlog ][OPENCPU]:[CMMQTT] fd:3, status:4
2025-06-07 16:11:15:879 RX:asocket_event 0x7e293098,0x7e044c18
2025-06-07 16:11:16:879 RX:[ cmlog ][OPENCPU]:[CMMQTT] fd:3, status:3
2025-06-07 16:11:17:879 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:11:18:878 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:11:19:878 RX:[ cmlog ][OPENCPU]:[CMMQTT] id:0, msg type:4
2025-06-07 16:11:20:879 RX:[ cmlog ][OPENCPU]:[CMMQTT] pkt type:4,len:4
2025-06-07 16:11:21:879 RX:[ cmlog ][OPENCPU]:MQTT Client pub_ack: 50557,0
2025-06-07 16:11:22:878 RX: cmlog ]__cm_virt_at_task already exist
2025-06-07 16:11:23:879 RX:[ cmlog ][OPENCPU]:MQTT Client publish msgid = 50557
2025-06-07 16:11:23:993 RX:[ cmlog ][OPENCPU]:[CMMQTT] send len:38
2025-06-07 16:11:24:097 RX:[ cmlog ][OPENCPU]:[CMMQTT] id:0,publish msg,topic:blw/rcu/pub/1003,len:38
2025-06-07 16:11:24:207 RX:asocket_cb 3 2
2025-06-07 16:11:24:320 RX:asocket_cb 3 10
2025-06-07 16:11:25:317 RX:[ELOOP] post event=0x7e044c00
2025-06-07 16:11:26:316 RX:asocket_cb 3 0
2025-06-07 16:11:27:319 RX:[ELOOP] post event=0x7e044c18
2025-06-07 16:11:28:316 RX:[ELOOP] rdy_list eloop=0x7e2617d0
2025-06-07 16:11:29:316 RX:asocket_on_eloop 0x7e044c00,0x7e293098
2025-06-07 16:11:30:315 RX:[ cmlog ][OPENCPU]:[CMMQTT] fd:3, status:4
2025-06-07 16:11:31:316 RX:asocket_event 0x7e293098,0x7e044c18
2025-06-07 16:11:32:319 RX:[ cmlog ][OPENCPU]:[CMMQTT] fd:3, status:3
2025-06-07 16:11:33:319 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:11:34:319 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:11:35:318 RX:[ cmlog ][OPENCPU]:[CMMQTT] id:0, msg type:4
2025-06-07 16:11:36:317 RX:[ cmlog ][OPENCPU]:[CMMQTT] pkt type:4,len:4
2025-06-07 16:11:37:317 RX:[ cmlog ][OPENCPU]:MQTT Client pub_ack: 50557,0
2025-06-07 16:11:38:316 RX: cmlog ]__cm_virt_at_task already exist
2025-06-07 16:11:39:317 RX:[ cmlog ][OPENCPU]:MQTT Client publish msgid = 50557
2025-06-07 16:11:39:427 RX:[ cmlog ][OPENCPU]:[CMMQTT] send len:38
2025-06-07 16:11:39:538 RX:[ cmlog ][OPENCPU]:[CMMQTT] id:0,publish msg,topic:blw/rcu/pub/1003,len:38
2025-06-07 16:11:39:644 RX:asocket_cb 3 2
2025-06-07 16:11:39:754 RX:asocket_cb 3 10
2025-06-07 16:11:40:753 RX:[ELOOP] post event=0x7e044c00
2025-06-07 16:11:41:754 RX:asocket_cb 3 0
2025-06-07 16:11:42:753 RX:[ELOOP] post event=0x7e044c18
2025-06-07 16:11:43:755 RX:[ELOOP] rdy_list eloop=0x7e2617d0
2025-06-07 16:11:44:753 RX:asocket_on_eloop 0x7e044c00,0x7e293098
2025-06-07 16:11:45:754 RX:[ cmlog ][OPENCPU]:[CMMQTT] fd:3, status:4
2025-06-07 16:11:46:753 RX:asocket_event 0x7e293098,0x7e044c18
2025-06-07 16:11:47:754 RX:[ cmlog ][OPENCPU]:[CMMQTT] fd:3, status:3
2025-06-07 16:11:48:753 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:11:49:754 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:11:50:754 RX:[ cmlog ][OPENCPU]:[CMMQTT] id:0, msg type:4
2025-06-07 16:11:51:753 RX:[ cmlog ][OPENCPU]:[CMMQTT] pkt type:4,len:4
2025-06-07 16:11:52:753 RX:[ cmlog ][OPENCPU]:MQTT Client pub_ack: 50557,0
2025-06-07 16:11:53:754 RX: cmlog ]__cm_virt_at_task already exist
2025-06-07 16:11:54:754 RX:[ cmlog ][OPENCPU]:MQTT Client publish msgid = 50557
2025-06-07 16:11:54:864 RX:[ cmlog ][OPENCPU]:[CMMQTT] send len:38
2025-06-07 16:11:54:972 RX:[ cmlog ][OPENCPU]:[CMMQTT] id:0,publish msg,topic:blw/rcu/pub/1003,len:38
2025-06-07 16:11:55:081 RX:asocket_cb 3 2
2025-06-07 16:11:55:192 RX:asocket_cb 3 10
2025-06-07 16:11:56:192 RX:[ELOOP] post event=0x7e044c00
2025-06-07 16:11:57:192 RX:asocket_cb 3 0
2025-06-07 16:11:58:191 RX:[ELOOP] post event=0x7e044c18
2025-06-07 16:11:59:192 RX:[ELOOP] rdy_list eloop=0x7e2617d0
2025-06-07 16:12:00:191 RX:asocket_on_eloop 0x7e044c00,0x7e293098
2025-06-07 16:12:01:190 RX:[ cmlog ][OPENCPU]:[CMMQTT] fd:3, status:4
2025-06-07 16:12:02:191 RX:asocket_event 0x7e293098,0x7e044c18
2025-06-07 16:12:03:192 RX:[ cmlog ][OPENCPU]:[CMMQTT] fd:3, status:3
2025-06-07 16:12:04:191 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:12:05:192 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:12:06:191 RX:[ cmlog ][OPENCPU]:[CMMQTT] id:0, msg type:4
2025-06-07 16:12:07:190 RX:[ cmlog ][OPENCPU]:[CMMQTT] pkt type:4,len:4
2025-06-07 16:12:08:191 RX:[ cmlog ][OPENCPU]:MQTT Client pub_ack: 50557,0
2025-06-07 16:12:09:193 RX: cmlog ]__cm_virt_at_task already exist
2025-06-07 16:12:10:193 RX:[ cmlog ][OPENCPU]:MQTT Client publish msgid = 50557
2025-06-07 16:12:10:302 RX:[ cmlog ][OPENCPU]:[CMMQTT] send len:38
2025-06-07 16:12:10:415 RX:[ cmlog ][OPENCPU]:[CMMQTT] id:0,publish msg,topic:blw/rcu/pub/1003,len:38
2025-06-07 16:12:10:520 RX:asocket_cb 3 2
2025-06-07 16:12:10:630 RX:asocket_cb 3 10
2025-06-07 16:12:11:628 RX:[ELOOP] post event=0x7e044c00
2025-06-07 16:12:12:629 RX:asocket_cb 3 0
2025-06-07 16:12:13:628 RX:[ELOOP] post event=0x7e044c18
2025-06-07 16:12:14:629 RX:[ELOOP] rdy_list eloop=0x7e2617d0
2025-06-07 16:12:15:629 RX:asocket_on_eloop 0x7e044c00,0x7e293098
2025-06-07 16:12:16:631 RX:[ cmlog ][OPENCPU]:[CMMQTT] fd:3, status:4
2025-06-07 16:12:17:629 RX:asocket_event 0x7e293098,0x7e044c18
2025-06-07 16:12:18:630 RX:[ cmlog ][OPENCPU]:[CMMQTT] fd:3, status:3
2025-06-07 16:12:19:629 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:12:20:629 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:12:21:631 RX:[ cmlog ][OPENCPU]:[CMMQTT] id:0, msg type:4
2025-06-07 16:12:22:629 RX:[ cmlog ][OPENCPU]:[CMMQTT] pkt type:4,len:4
2025-06-07 16:12:23:629 RX:[ cmlog ][OPENCPU]:MQTT Client pub_ack: 50557,0
2025-06-07 16:12:24:629 RX: cmlog ]__cm_virt_at_task already exist
2025-06-07 16:12:25:630 RX:[ cmlog ][OPENCPU]:MQTT Client publish msgid = 50557
2025-06-07 16:12:25:741 RX:[ cmlog ][OPENCPU]:[CMMQTT] send len:38
2025-06-07 16:12:25:848 RX:[ cmlog ][OPENCPU]:[CMMQTT] id:0,publish msg,topic:blw/rcu/pub/1003,len:38
2025-06-07 16:12:25:959 RX:asocket_cb 3 2
2025-06-07 16:12:26:066 RX:asocket_cb 3 10
2025-06-07 16:12:27:070 RX:[ELOOP] post event=0x7e044c00
2025-06-07 16:12:28:067 RX:asocket_cb 3 0
2025-06-07 16:12:29:068 RX:[ELOOP] post event=0x7e044c18
2025-06-07 16:12:30:066 RX:[ELOOP] rdy_list eloop=0x7e2617d0
2025-06-07 16:12:31:067 RX:asocket_on_eloop 0x7e044c00,0x7e293098
2025-06-07 16:12:32:066 RX:[ cmlog ][OPENCPU]:[CMMQTT] fd:3, status:4
2025-06-07 16:12:33:068 RX:asocket_event 0x7e293098,0x7e044c18
2025-06-07 16:12:34:067 RX:[ cmlog ][OPENCPU]:[CMMQTT] fd:3, status:3
2025-06-07 16:12:35:068 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:12:36:069 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:12:37:066 RX:[ cmlog ][OPENCPU]:[CMMQTT] id:0, msg type:4
2025-06-07 16:12:38:067 RX:[ cmlog ][OPENCPU]:[CMMQTT] pkt type:4,len:4
2025-06-07 16:12:39:066 RX:[ cmlog ][OPENCPU]:MQTT Client pub_ack: 50557,0
2025-06-07 16:12:40:067 RX: cmlog ]__cm_virt_at_task already exist
2025-06-07 16:12:41:068 RX:[ cmlog ][OPENCPU]:MQTT Client publish msgid = 50557
2025-06-07 16:12:41:176 RX:[ cmlog ][OPENCPU]:[CMMQTT] send len:38
2025-06-07 16:12:41:286 RX:[ cmlog ][OPENCPU]:[CMMQTT] id:0,publish msg,topic:blw/rcu/pub/1003,len:38
2025-06-07 16:12:41:397 RX:asocket_cb 3 2
2025-06-07 16:12:41:504 RX:asocket_cb 3 10
2025-06-07 16:12:42:505 RX:[ELOOP] post event=0x7e044c00
2025-06-07 16:12:43:505 RX:asocket_cb 3 0
2025-06-07 16:12:44:503 RX:[ELOOP] post event=0x7e044c18
2025-06-07 16:12:45:503 RX:[ELOOP] rdy_list eloop=0x7e2617d0
2025-06-07 16:12:46:503 RX:asocket_on_eloop 0x7e044c00,0x7e293098
2025-06-07 16:12:47:504 RX:[ cmlog ][OPENCPU]:[CMMQTT] fd:3, status:4
2025-06-07 16:12:48:503 RX:asocket_event 0x7e293098,0x7e044c18
2025-06-07 16:12:49:504 RX:[ cmlog ][OPENCPU]:[CMMQTT] fd:3, status:3
2025-06-07 16:12:50:504 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:12:51:505 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,47 @@
2025-06-07 16:11:17:879 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:11:18:878 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:11:25:317 RX:[ELOOP] post event=0x7e044c00
2025-06-07 16:11:27:319 RX:[ELOOP] post event=0x7e044c18
2025-06-07 16:11:33:319 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:11:34:319 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:11:48:753 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:11:49:754 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:12:04:191 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:12:05:192 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:12:08:191 RX:[ cmlog ][OPENCPU]:MQTT Client pub_ack: 50557,0
2025-06-07 16:12:10:193 RX:[ cmlog ][OPENCPU]:MQTT Client publish msgid = 50557
2025-06-07 16:12:10:302 RX:[ cmlog ][OPENCPU]:[CMMQTT] send len:38
2025-06-07 16:12:10:415 RX:[ cmlog ][OPENCPU]:[CMMQTT] id:0,publish msg,topic:blw/rcu/pub/1003,len:38
2025-06-07 16:12:11:628 RX:[ELOOP] post event=0x7e044c00
2025-06-07 16:12:13:628 RX:[ELOOP] post event=0x7e044c18
2025-06-07 16:12:14:629 RX:[ELOOP] rdy_list eloop=0x7e2617d0
2025-06-07 16:12:16:631 RX:[ cmlog ][OPENCPU]:[CMMQTT] fd:3, status:4
2025-06-07 16:12:18:630 RX:[ cmlog ][OPENCPU]:[CMMQTT] fd:3, status:3
2025-06-07 16:12:19:629 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:12:20:629 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:12:21:631 RX:[ cmlog ][OPENCPU]:[CMMQTT] id:0, msg type:4
2025-06-07 16:12:22:629 RX:[ cmlog ][OPENCPU]:[CMMQTT] pkt type:4,len:4
2025-06-07 16:12:23:629 RX:[ cmlog ][OPENCPU]:MQTT Client pub_ack: 50557,0
2025-06-07 16:12:25:630 RX:[ cmlog ][OPENCPU]:MQTT Client publish msgid = 50557
2025-06-07 16:12:25:741 RX:[ cmlog ][OPENCPU]:[CMMQTT] send len:38
2025-06-07 16:12:25:848 RX:[ cmlog ][OPENCPU]:[CMMQTT] id:0,publish msg,topic:blw/rcu/pub/1003,len:38
2025-06-07 16:12:27:070 RX:[ELOOP] post event=0x7e044c00
2025-06-07 16:12:29:068 RX:[ELOOP] post event=0x7e044c18
2025-06-07 16:12:30:066 RX:[ELOOP] rdy_list eloop=0x7e2617d0
2025-06-07 16:12:32:066 RX:[ cmlog ][OPENCPU]:[CMMQTT] fd:3, status:4
2025-06-07 16:12:34:067 RX:[ cmlog ][OPENCPU]:[CMMQTT] fd:3, status:3
2025-06-07 16:12:35:068 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:12:36:069 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:12:37:066 RX:[ cmlog ][OPENCPU]:[CMMQTT] id:0, msg type:4
2025-06-07 16:12:38:067 RX:[ cmlog ][OPENCPU]:[CMMQTT] pkt type:4,len:4
2025-06-07 16:12:39:066 RX:[ cmlog ][OPENCPU]:MQTT Client pub_ack: 50557,0
2025-06-07 16:12:41:068 RX:[ cmlog ][OPENCPU]:MQTT Client publish msgid = 50557
2025-06-07 16:12:41:176 RX:[ cmlog ][OPENCPU]:[CMMQTT] send len:38
2025-06-07 16:12:41:286 RX:[ cmlog ][OPENCPU]:[CMMQTT] id:0,publish msg,topic:blw/rcu/pub/1003,len:38
2025-06-07 16:12:42:505 RX:[ELOOP] post event=0x7e044c00
2025-06-07 16:12:44:503 RX:[ELOOP] post event=0x7e044c18
2025-06-07 16:12:45:503 RX:[ELOOP] rdy_list eloop=0x7e2617d0
2025-06-07 16:12:47:504 RX:[ cmlog ][OPENCPU]:[CMMQTT] fd:3, status:4
2025-06-07 16:12:49:504 RX:[ cmlog ][OPENCPU]:[CMMQTT] fd:3, status:3
2025-06-07 16:12:50:504 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:12:51:505 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295

Binary file not shown.

View File

@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="SerialPortLogFilterin.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
</startup>
<userSettings>
<SerialPortLogFilterin.My.MySettings>
<setting name="PortName" serializeAs="String">
<value />
</setting>
<setting name="BaudRate" serializeAs="String">
<value />
</setting>
<setting name="thewidth" serializeAs="String">
<value>1309</value>
</setting>
<setting name="theheight" serializeAs="String">
<value>921</value>
</setting>
<setting name="SplitterDistance" serializeAs="String">
<value>619</value>
</setting>
<setting name="theHead" serializeAs="String">
<value />
</setting>
<setting name="theRump" serializeAs="String">
<value />
</setting>
</SerialPortLogFilterin.My.MySettings>
</userSettings>
</configuration>

View File

@@ -0,0 +1,216 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>
SerialPortLogFilterin
</name>
</assembly>
<members>
<member name="T:SerialPortLogFilterin.My.Resources.Resources">
<summary>
A strongly-typed resource class, for looking up localized strings, etc.
</summary>
</member>
<member name="P:SerialPortLogFilterin.My.Resources.Resources.ResourceManager">
<summary>
Returns the cached ResourceManager instance used by this class.
</summary>
</member>
<member name="P:SerialPortLogFilterin.My.Resources.Resources.Culture">
<summary>
Overrides the current thread's CurrentUICulture property for all
resource lookups using this strongly typed resource class.
</summary>
</member>
<member name="M:SerialPortLogFilterin.RuningLog.OutputLogsToTheControl(System.Windows.Forms.Control,SerialPortLogFilterin.RuningLogConfig,System.Int32)">
<summary>
''输出日志到控件
</summary>
<param name="c">控件 </param>
<param name="config">日志</param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.RuningLogConfig.#ctor(System.Object[])">
<summary>
文本、颜色、Font
</summary>
<param name="args"></param>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.GetPortToBytes(System.String)">
<summary>
端口号转换为Byte数组
</summary>
<param name="port"></param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.IntToByteLB(System.Int32)">
<summary>
Int转2个字节Byte
低字节在前,高字节在后
</summary>
<param name="i"></param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.IntToByteLxxB(System.Int32)">
<summary>
Int转4个字节Byte
低字节在前,高字节在后
</summary>
<param name="i"></param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.IntToByteHB(System.Int32)">
<summary>
Int转2个字节Byte
高字节在前,低字节在后
</summary>
<param name="i"></param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.GetMd5(System.String)">
<summary>
获取文件的MD5值
返回Byte数组值
</summary>
<param name="filepath">文件路径</param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.GetMd5String(System.String)">
<summary>
获取文件的MD5值
返回String字符串
</summary>
<param name="filepath">文件路径</param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.GetLocalIp">
<summary>
获取本地可用IP
</summary>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.ByteToString(System.Byte[])">
<summary>
Byte数组转字符串
</summary>
<param name="databuff"></param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.WaitReply(System.Boolean,System.Int32)">
<summary>
等待回复
</summary>
<param name="isReply">是否回复标志位</param>
<param name="TimeOut">超时时间</param>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.PauseWait(System.Int64)">
<summary>
延时N秒
</summary>
<param name="HowLong">延时时间值</param>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.GetAddressToBytes(System.String)">
<summary>
IP地址转换为Byte数组
</summary>
<param name="addr"></param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.GetStringMd5(System.String)">
<summary>
获取字符串的MD5值
</summary>
<param name="str">需要求MD5的原文字符串</param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.GetBlocks(System.Byte[],System.Int32)">
<summary>
分块函数
计算Byte数组的块数
</summary>
<param name="databuff"></param>
<param name="size"></param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.GetStringToDataByte(System.String)">
<summary>
字符串转换Byte数组
字符串为连续且不包含任意字符的字符串
</summary>
<param name="str"></param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.FromUnixTime(System.Int64,System.Int64)">
<summary>
把UNIX时间戳转换为标准时间
</summary>
<param name="intTime">要转换的UNIX时间戳</param>
<param name="ime">时区</param>
<returns>intTime所代表的标准时间</returns>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.SumAndMod(System.Byte[])">
<summary>
和校验取余数
求Byte数组的和校验取余数
</summary>
<param name="dataPacket">Byte数组</param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.GetEnumDescription(System.Enum)">
<summary>
获取枚举描述特性
</summary>
<param name="enumValue">需要获取特性的枚举值</param>
<returns>枚举描述特性</returns>
</member>
<member name="M:SerialPortLogFilterin.SharedFunction.OpenSerial(System.IO.Ports.SerialPort,System.String,System.Int32)">
<summary>
打开串口
</summary>
<param name="m_Serial">串口</param>
<param name="portName">串口号</param>
<param name="baudRate">波特率</param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.SharedFunction.SetSerialBaudRate(System.IO.Ports.SerialPort,System.Int32)">
<summary>
设置串口波特率
</summary>
<param name="m_Serial"> 串口 </param>
<param name="baudRate">波特率</param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.SharedFunction.CloseSerial(System.IO.Ports.SerialPort,System.Boolean@,System.Boolean@)">
<summary>
关闭串口
</summary>
<param name="m_Serial">串口</param>
<param name="isread">串口关闭标志</param>
<param name="isListen">串口等待关闭标志</param>
</member>
<member name="M:SerialPortLogFilterin.SharedFunction.IntToByteHB(System.Int32)">
<summary>
Int转2个字节Byte
高字节在前,低字节在后
</summary>
<param name="i"></param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.SharedFunction.IntToByteLB(System.Int32)">
<summary>
Int转2个字节Byte
高字节在前,低字节在后
</summary>
<param name="i"></param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.SharedFunction.GetSumCheckMod(System.Byte[])">
<summary>
和校验取余数
求Byte数组的和校验取余数
</summary>
<param name="dataPacket">Byte数组</param>
<returns></returns>
</member>
</members>
</doc>

View File

@@ -0,0 +1,134 @@
2025-06-07 16:11:03:454 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:11:04:459 RX:[ cmlog ][OPENCPU]:[CMMQTT] id:0, msg type:4
2025-06-07 16:11:05:457 RX:[ cmlog ][OPENCPU]:[CMMQTT] pkt type:4,len:4
2025-06-07 16:11:06:442 RX:[ cmlog ][OPENCPU]:MQTT Client pub_ack: 50557,0
2025-06-07 16:11:07:460 RX: cmlog ]__cm_virt_at_task already exist
2025-06-07 16:11:08:442 RX:[ cmlog ][OPENCPU]:MQTT Client publish msgid = 50557
2025-06-07 16:11:08:551 RX:[ cmlog ][OPENCPU]:[CMMQTT] send len:38
2025-06-07 16:11:08:666 RX:[ cmlog ][OPENCPU]:[CMMQTT] id:0,publish msg,topic:blw/rcu/pub/1003,len:38
2025-06-07 16:11:08:772 RX:asocket_cb 3 2
2025-06-07 16:11:08:880 RX:asocket_cb 3 10
2025-06-07 16:11:09:880 RX:[ELOOP] post event=0x7e044c00
2025-06-07 16:11:10:880 RX:asocket_cb 3 0
2025-06-07 16:11:11:879 RX:[ELOOP] post event=0x7e044c18
2025-06-07 16:11:12:878 RX:[ELOOP] rdy_list eloop=0x7e2617d0
2025-06-07 16:11:13:879 RX:asocket_on_eloop 0x7e044c00,0x7e293098
2025-06-07 16:11:14:902 RX:[ cmlog ][OPENCPU]:[CMMQTT] fd:3, status:4
2025-06-07 16:11:15:879 RX:asocket_event 0x7e293098,0x7e044c18
2025-06-07 16:11:16:879 RX:[ cmlog ][OPENCPU]:[CMMQTT] fd:3, status:3
2025-06-07 16:11:17:879 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:11:18:878 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:11:19:878 RX:[ cmlog ][OPENCPU]:[CMMQTT] id:0, msg type:4
2025-06-07 16:11:20:879 RX:[ cmlog ][OPENCPU]:[CMMQTT] pkt type:4,len:4
2025-06-07 16:11:21:879 RX:[ cmlog ][OPENCPU]:MQTT Client pub_ack: 50557,0
2025-06-07 16:11:22:878 RX: cmlog ]__cm_virt_at_task already exist
2025-06-07 16:11:23:879 RX:[ cmlog ][OPENCPU]:MQTT Client publish msgid = 50557
2025-06-07 16:11:23:993 RX:[ cmlog ][OPENCPU]:[CMMQTT] send len:38
2025-06-07 16:11:24:097 RX:[ cmlog ][OPENCPU]:[CMMQTT] id:0,publish msg,topic:blw/rcu/pub/1003,len:38
2025-06-07 16:11:24:207 RX:asocket_cb 3 2
2025-06-07 16:11:24:320 RX:asocket_cb 3 10
2025-06-07 16:11:25:317 RX:[ELOOP] post event=0x7e044c00
2025-06-07 16:11:26:316 RX:asocket_cb 3 0
2025-06-07 16:11:27:319 RX:[ELOOP] post event=0x7e044c18
2025-06-07 16:11:28:316 RX:[ELOOP] rdy_list eloop=0x7e2617d0
2025-06-07 16:11:29:316 RX:asocket_on_eloop 0x7e044c00,0x7e293098
2025-06-07 16:11:30:315 RX:[ cmlog ][OPENCPU]:[CMMQTT] fd:3, status:4
2025-06-07 16:11:31:316 RX:asocket_event 0x7e293098,0x7e044c18
2025-06-07 16:11:32:319 RX:[ cmlog ][OPENCPU]:[CMMQTT] fd:3, status:3
2025-06-07 16:11:33:319 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:11:34:319 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:11:35:318 RX:[ cmlog ][OPENCPU]:[CMMQTT] id:0, msg type:4
2025-06-07 16:11:36:317 RX:[ cmlog ][OPENCPU]:[CMMQTT] pkt type:4,len:4
2025-06-07 16:11:37:317 RX:[ cmlog ][OPENCPU]:MQTT Client pub_ack: 50557,0
2025-06-07 16:11:38:316 RX: cmlog ]__cm_virt_at_task already exist
2025-06-07 16:11:39:317 RX:[ cmlog ][OPENCPU]:MQTT Client publish msgid = 50557
2025-06-07 16:11:39:427 RX:[ cmlog ][OPENCPU]:[CMMQTT] send len:38
2025-06-07 16:11:39:538 RX:[ cmlog ][OPENCPU]:[CMMQTT] id:0,publish msg,topic:blw/rcu/pub/1003,len:38
2025-06-07 16:11:39:644 RX:asocket_cb 3 2
2025-06-07 16:11:39:754 RX:asocket_cb 3 10
2025-06-07 16:11:40:753 RX:[ELOOP] post event=0x7e044c00
2025-06-07 16:11:41:754 RX:asocket_cb 3 0
2025-06-07 16:11:42:753 RX:[ELOOP] post event=0x7e044c18
2025-06-07 16:11:43:755 RX:[ELOOP] rdy_list eloop=0x7e2617d0
2025-06-07 16:11:44:753 RX:asocket_on_eloop 0x7e044c00,0x7e293098
2025-06-07 16:11:45:754 RX:[ cmlog ][OPENCPU]:[CMMQTT] fd:3, status:4
2025-06-07 16:11:46:753 RX:asocket_event 0x7e293098,0x7e044c18
2025-06-07 16:11:47:754 RX:[ cmlog ][OPENCPU]:[CMMQTT] fd:3, status:3
2025-06-07 16:11:48:753 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:11:49:754 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:11:50:754 RX:[ cmlog ][OPENCPU]:[CMMQTT] id:0, msg type:4
2025-06-07 16:11:51:753 RX:[ cmlog ][OPENCPU]:[CMMQTT] pkt type:4,len:4
2025-06-07 16:11:52:753 RX:[ cmlog ][OPENCPU]:MQTT Client pub_ack: 50557,0
2025-06-07 16:11:53:754 RX: cmlog ]__cm_virt_at_task already exist
2025-06-07 16:11:54:754 RX:[ cmlog ][OPENCPU]:MQTT Client publish msgid = 50557
2025-06-07 16:11:54:864 RX:[ cmlog ][OPENCPU]:[CMMQTT] send len:38
2025-06-07 16:11:54:972 RX:[ cmlog ][OPENCPU]:[CMMQTT] id:0,publish msg,topic:blw/rcu/pub/1003,len:38
2025-06-07 16:11:55:081 RX:asocket_cb 3 2
2025-06-07 16:11:55:192 RX:asocket_cb 3 10
2025-06-07 16:11:56:192 RX:[ELOOP] post event=0x7e044c00
2025-06-07 16:11:57:192 RX:asocket_cb 3 0
2025-06-07 16:11:58:191 RX:[ELOOP] post event=0x7e044c18
2025-06-07 16:11:59:192 RX:[ELOOP] rdy_list eloop=0x7e2617d0
2025-06-07 16:12:00:191 RX:asocket_on_eloop 0x7e044c00,0x7e293098
2025-06-07 16:12:01:190 RX:[ cmlog ][OPENCPU]:[CMMQTT] fd:3, status:4
2025-06-07 16:12:02:191 RX:asocket_event 0x7e293098,0x7e044c18
2025-06-07 16:12:03:192 RX:[ cmlog ][OPENCPU]:[CMMQTT] fd:3, status:3
2025-06-07 16:12:04:191 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:12:05:192 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:12:06:191 RX:[ cmlog ][OPENCPU]:[CMMQTT] id:0, msg type:4
2025-06-07 16:12:07:190 RX:[ cmlog ][OPENCPU]:[CMMQTT] pkt type:4,len:4
2025-06-07 16:12:08:191 RX:[ cmlog ][OPENCPU]:MQTT Client pub_ack: 50557,0
2025-06-07 16:12:09:193 RX: cmlog ]__cm_virt_at_task already exist
2025-06-07 16:12:10:193 RX:[ cmlog ][OPENCPU]:MQTT Client publish msgid = 50557
2025-06-07 16:12:10:302 RX:[ cmlog ][OPENCPU]:[CMMQTT] send len:38
2025-06-07 16:12:10:415 RX:[ cmlog ][OPENCPU]:[CMMQTT] id:0,publish msg,topic:blw/rcu/pub/1003,len:38
2025-06-07 16:12:10:520 RX:asocket_cb 3 2
2025-06-07 16:12:10:630 RX:asocket_cb 3 10
2025-06-07 16:12:11:628 RX:[ELOOP] post event=0x7e044c00
2025-06-07 16:12:12:629 RX:asocket_cb 3 0
2025-06-07 16:12:13:628 RX:[ELOOP] post event=0x7e044c18
2025-06-07 16:12:14:629 RX:[ELOOP] rdy_list eloop=0x7e2617d0
2025-06-07 16:12:15:629 RX:asocket_on_eloop 0x7e044c00,0x7e293098
2025-06-07 16:12:16:631 RX:[ cmlog ][OPENCPU]:[CMMQTT] fd:3, status:4
2025-06-07 16:12:17:629 RX:asocket_event 0x7e293098,0x7e044c18
2025-06-07 16:12:18:630 RX:[ cmlog ][OPENCPU]:[CMMQTT] fd:3, status:3
2025-06-07 16:12:19:629 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:12:20:629 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:12:21:631 RX:[ cmlog ][OPENCPU]:[CMMQTT] id:0, msg type:4
2025-06-07 16:12:22:629 RX:[ cmlog ][OPENCPU]:[CMMQTT] pkt type:4,len:4
2025-06-07 16:12:23:629 RX:[ cmlog ][OPENCPU]:MQTT Client pub_ack: 50557,0
2025-06-07 16:12:24:629 RX: cmlog ]__cm_virt_at_task already exist
2025-06-07 16:12:25:630 RX:[ cmlog ][OPENCPU]:MQTT Client publish msgid = 50557
2025-06-07 16:12:25:741 RX:[ cmlog ][OPENCPU]:[CMMQTT] send len:38
2025-06-07 16:12:25:848 RX:[ cmlog ][OPENCPU]:[CMMQTT] id:0,publish msg,topic:blw/rcu/pub/1003,len:38
2025-06-07 16:12:25:959 RX:asocket_cb 3 2
2025-06-07 16:12:26:066 RX:asocket_cb 3 10
2025-06-07 16:12:27:070 RX:[ELOOP] post event=0x7e044c00
2025-06-07 16:12:28:067 RX:asocket_cb 3 0
2025-06-07 16:12:29:068 RX:[ELOOP] post event=0x7e044c18
2025-06-07 16:12:30:066 RX:[ELOOP] rdy_list eloop=0x7e2617d0
2025-06-07 16:12:31:067 RX:asocket_on_eloop 0x7e044c00,0x7e293098
2025-06-07 16:12:32:066 RX:[ cmlog ][OPENCPU]:[CMMQTT] fd:3, status:4
2025-06-07 16:12:33:068 RX:asocket_event 0x7e293098,0x7e044c18
2025-06-07 16:12:34:067 RX:[ cmlog ][OPENCPU]:[CMMQTT] fd:3, status:3
2025-06-07 16:12:35:068 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:12:36:069 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:12:37:066 RX:[ cmlog ][OPENCPU]:[CMMQTT] id:0, msg type:4
2025-06-07 16:12:38:067 RX:[ cmlog ][OPENCPU]:[CMMQTT] pkt type:4,len:4
2025-06-07 16:12:39:066 RX:[ cmlog ][OPENCPU]:MQTT Client pub_ack: 50557,0
2025-06-07 16:12:40:067 RX: cmlog ]__cm_virt_at_task already exist
2025-06-07 16:12:41:068 RX:[ cmlog ][OPENCPU]:MQTT Client publish msgid = 50557
2025-06-07 16:12:41:176 RX:[ cmlog ][OPENCPU]:[CMMQTT] send len:38
2025-06-07 16:12:41:286 RX:[ cmlog ][OPENCPU]:[CMMQTT] id:0,publish msg,topic:blw/rcu/pub/1003,len:38
2025-06-07 16:12:41:397 RX:asocket_cb 3 2
2025-06-07 16:12:41:504 RX:asocket_cb 3 10
2025-06-07 16:12:42:505 RX:[ELOOP] post event=0x7e044c00
2025-06-07 16:12:43:505 RX:asocket_cb 3 0
2025-06-07 16:12:44:503 RX:[ELOOP] post event=0x7e044c18
2025-06-07 16:12:45:503 RX:[ELOOP] rdy_list eloop=0x7e2617d0
2025-06-07 16:12:46:503 RX:asocket_on_eloop 0x7e044c00,0x7e293098
2025-06-07 16:12:47:504 RX:[ cmlog ][OPENCPU]:[CMMQTT] fd:3, status:4
2025-06-07 16:12:48:503 RX:asocket_event 0x7e293098,0x7e044c18
2025-06-07 16:12:49:504 RX:[ cmlog ][OPENCPU]:[CMMQTT] fd:3, status:3
2025-06-07 16:12:50:504 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:12:51:505 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,47 @@
2025-06-07 16:11:17:879 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:11:18:878 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:11:25:317 RX:[ELOOP] post event=0x7e044c00
2025-06-07 16:11:27:319 RX:[ELOOP] post event=0x7e044c18
2025-06-07 16:11:33:319 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:11:34:319 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:11:48:753 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:11:49:754 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:12:04:191 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:12:05:192 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:12:08:191 RX:[ cmlog ][OPENCPU]:MQTT Client pub_ack: 50557,0
2025-06-07 16:12:10:193 RX:[ cmlog ][OPENCPU]:MQTT Client publish msgid = 50557
2025-06-07 16:12:10:302 RX:[ cmlog ][OPENCPU]:[CMMQTT] send len:38
2025-06-07 16:12:10:415 RX:[ cmlog ][OPENCPU]:[CMMQTT] id:0,publish msg,topic:blw/rcu/pub/1003,len:38
2025-06-07 16:12:11:628 RX:[ELOOP] post event=0x7e044c00
2025-06-07 16:12:13:628 RX:[ELOOP] post event=0x7e044c18
2025-06-07 16:12:14:629 RX:[ELOOP] rdy_list eloop=0x7e2617d0
2025-06-07 16:12:16:631 RX:[ cmlog ][OPENCPU]:[CMMQTT] fd:3, status:4
2025-06-07 16:12:18:630 RX:[ cmlog ][OPENCPU]:[CMMQTT] fd:3, status:3
2025-06-07 16:12:19:629 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:12:20:629 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:12:21:631 RX:[ cmlog ][OPENCPU]:[CMMQTT] id:0, msg type:4
2025-06-07 16:12:22:629 RX:[ cmlog ][OPENCPU]:[CMMQTT] pkt type:4,len:4
2025-06-07 16:12:23:629 RX:[ cmlog ][OPENCPU]:MQTT Client pub_ack: 50557,0
2025-06-07 16:12:25:630 RX:[ cmlog ][OPENCPU]:MQTT Client publish msgid = 50557
2025-06-07 16:12:25:741 RX:[ cmlog ][OPENCPU]:[CMMQTT] send len:38
2025-06-07 16:12:25:848 RX:[ cmlog ][OPENCPU]:[CMMQTT] id:0,publish msg,topic:blw/rcu/pub/1003,len:38
2025-06-07 16:12:27:070 RX:[ELOOP] post event=0x7e044c00
2025-06-07 16:12:29:068 RX:[ELOOP] post event=0x7e044c18
2025-06-07 16:12:30:066 RX:[ELOOP] rdy_list eloop=0x7e2617d0
2025-06-07 16:12:32:066 RX:[ cmlog ][OPENCPU]:[CMMQTT] fd:3, status:4
2025-06-07 16:12:34:067 RX:[ cmlog ][OPENCPU]:[CMMQTT] fd:3, status:3
2025-06-07 16:12:35:068 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:12:36:069 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:12:37:066 RX:[ cmlog ][OPENCPU]:[CMMQTT] id:0, msg type:4
2025-06-07 16:12:38:067 RX:[ cmlog ][OPENCPU]:[CMMQTT] pkt type:4,len:4
2025-06-07 16:12:39:066 RX:[ cmlog ][OPENCPU]:MQTT Client pub_ack: 50557,0
2025-06-07 16:12:41:068 RX:[ cmlog ][OPENCPU]:MQTT Client publish msgid = 50557
2025-06-07 16:12:41:176 RX:[ cmlog ][OPENCPU]:[CMMQTT] send len:38
2025-06-07 16:12:41:286 RX:[ cmlog ][OPENCPU]:[CMMQTT] id:0,publish msg,topic:blw/rcu/pub/1003,len:38
2025-06-07 16:12:42:505 RX:[ELOOP] post event=0x7e044c00
2025-06-07 16:12:44:503 RX:[ELOOP] post event=0x7e044c18
2025-06-07 16:12:45:503 RX:[ELOOP] rdy_list eloop=0x7e2617d0
2025-06-07 16:12:47:504 RX:[ cmlog ][OPENCPU]:[CMMQTT] fd:3, status:4
2025-06-07 16:12:49:504 RX:[ cmlog ][OPENCPU]:[CMMQTT] fd:3, status:3
2025-06-07 16:12:50:504 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295
2025-06-07 16:12:51:505 RX:[ELOOP] eloop millsec=4294967295 tick=4294967295

View File

@@ -0,0 +1,7 @@
' <autogenerated/>
Option Strict Off
Option Explicit On
Imports System
Imports System.Reflection
<Assembly: Global.System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.8", FrameworkDisplayName:=".NET Framework 4.8")>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1 @@
05b2748b97a4433e30a61188db142ab61d2680e4

View File

@@ -0,0 +1,12 @@
E:\Sync\SerialPortLogFiltering\SerialPortLogFilterin\bin\Debug\SerialPortLogFilterin.exe.config
E:\Sync\SerialPortLogFiltering\SerialPortLogFilterin\bin\Debug\SerialPortLogFilterin.exe
E:\Sync\SerialPortLogFiltering\SerialPortLogFilterin\bin\Debug\SerialPortLogFilterin.pdb
E:\Sync\SerialPortLogFiltering\SerialPortLogFilterin\bin\Debug\SerialPortLogFilterin.xml
E:\Sync\SerialPortLogFiltering\SerialPortLogFilterin\obj\Debug\SerialPortLogFilterin.vbproj.AssemblyReference.cache
E:\Sync\SerialPortLogFiltering\SerialPortLogFilterin\obj\Debug\SerialPortLogFilterin.Form1.resources
E:\Sync\SerialPortLogFiltering\SerialPortLogFilterin\obj\Debug\SerialPortLogFilterin.Resources.resources
E:\Sync\SerialPortLogFiltering\SerialPortLogFilterin\obj\Debug\SerialPortLogFilterin.vbproj.GenerateResource.cache
E:\Sync\SerialPortLogFiltering\SerialPortLogFilterin\obj\Debug\SerialPortLogFilterin.vbproj.CoreCompileInputs.cache
E:\Sync\SerialPortLogFiltering\SerialPortLogFilterin\obj\Debug\SerialPortLogFilterin.exe
E:\Sync\SerialPortLogFiltering\SerialPortLogFilterin\obj\Debug\SerialPortLogFilterin.xml
E:\Sync\SerialPortLogFiltering\SerialPortLogFilterin\obj\Debug\SerialPortLogFilterin.pdb

View File

@@ -0,0 +1,216 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>
SerialPortLogFilterin
</name>
</assembly>
<members>
<member name="T:SerialPortLogFilterin.My.Resources.Resources">
<summary>
A strongly-typed resource class, for looking up localized strings, etc.
</summary>
</member>
<member name="P:SerialPortLogFilterin.My.Resources.Resources.ResourceManager">
<summary>
Returns the cached ResourceManager instance used by this class.
</summary>
</member>
<member name="P:SerialPortLogFilterin.My.Resources.Resources.Culture">
<summary>
Overrides the current thread's CurrentUICulture property for all
resource lookups using this strongly typed resource class.
</summary>
</member>
<member name="M:SerialPortLogFilterin.RuningLog.OutputLogsToTheControl(System.Windows.Forms.Control,SerialPortLogFilterin.RuningLogConfig,System.Int32)">
<summary>
''输出日志到控件
</summary>
<param name="c">控件 </param>
<param name="config">日志</param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.RuningLogConfig.#ctor(System.Object[])">
<summary>
文本、颜色、Font
</summary>
<param name="args"></param>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.GetPortToBytes(System.String)">
<summary>
端口号转换为Byte数组
</summary>
<param name="port"></param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.IntToByteLB(System.Int32)">
<summary>
Int转2个字节Byte
低字节在前,高字节在后
</summary>
<param name="i"></param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.IntToByteLxxB(System.Int32)">
<summary>
Int转4个字节Byte
低字节在前,高字节在后
</summary>
<param name="i"></param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.IntToByteHB(System.Int32)">
<summary>
Int转2个字节Byte
高字节在前,低字节在后
</summary>
<param name="i"></param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.GetMd5(System.String)">
<summary>
获取文件的MD5值
返回Byte数组值
</summary>
<param name="filepath">文件路径</param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.GetMd5String(System.String)">
<summary>
获取文件的MD5值
返回String字符串
</summary>
<param name="filepath">文件路径</param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.GetLocalIp">
<summary>
获取本地可用IP
</summary>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.ByteToString(System.Byte[])">
<summary>
Byte数组转字符串
</summary>
<param name="databuff"></param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.WaitReply(System.Boolean,System.Int32)">
<summary>
等待回复
</summary>
<param name="isReply">是否回复标志位</param>
<param name="TimeOut">超时时间</param>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.PauseWait(System.Int64)">
<summary>
延时N秒
</summary>
<param name="HowLong">延时时间值</param>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.GetAddressToBytes(System.String)">
<summary>
IP地址转换为Byte数组
</summary>
<param name="addr"></param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.GetStringMd5(System.String)">
<summary>
获取字符串的MD5值
</summary>
<param name="str">需要求MD5的原文字符串</param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.GetBlocks(System.Byte[],System.Int32)">
<summary>
分块函数
计算Byte数组的块数
</summary>
<param name="databuff"></param>
<param name="size"></param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.GetStringToDataByte(System.String)">
<summary>
字符串转换Byte数组
字符串为连续且不包含任意字符的字符串
</summary>
<param name="str"></param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.FromUnixTime(System.Int64,System.Int64)">
<summary>
把UNIX时间戳转换为标准时间
</summary>
<param name="intTime">要转换的UNIX时间戳</param>
<param name="ime">时区</param>
<returns>intTime所代表的标准时间</returns>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.SumAndMod(System.Byte[])">
<summary>
和校验取余数
求Byte数组的和校验取余数
</summary>
<param name="dataPacket">Byte数组</param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.DataProcessing.GetEnumDescription(System.Enum)">
<summary>
获取枚举描述特性
</summary>
<param name="enumValue">需要获取特性的枚举值</param>
<returns>枚举描述特性</returns>
</member>
<member name="M:SerialPortLogFilterin.SharedFunction.OpenSerial(System.IO.Ports.SerialPort,System.String,System.Int32)">
<summary>
打开串口
</summary>
<param name="m_Serial">串口</param>
<param name="portName">串口号</param>
<param name="baudRate">波特率</param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.SharedFunction.SetSerialBaudRate(System.IO.Ports.SerialPort,System.Int32)">
<summary>
设置串口波特率
</summary>
<param name="m_Serial"> 串口 </param>
<param name="baudRate">波特率</param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.SharedFunction.CloseSerial(System.IO.Ports.SerialPort,System.Boolean@,System.Boolean@)">
<summary>
关闭串口
</summary>
<param name="m_Serial">串口</param>
<param name="isread">串口关闭标志</param>
<param name="isListen">串口等待关闭标志</param>
</member>
<member name="M:SerialPortLogFilterin.SharedFunction.IntToByteHB(System.Int32)">
<summary>
Int转2个字节Byte
高字节在前,低字节在后
</summary>
<param name="i"></param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.SharedFunction.IntToByteLB(System.Int32)">
<summary>
Int转2个字节Byte
高字节在前,低字节在后
</summary>
<param name="i"></param>
<returns></returns>
</member>
<member name="M:SerialPortLogFilterin.SharedFunction.GetSumCheckMod(System.Byte[])">
<summary>
和校验取余数
求Byte数组的和校验取余数
</summary>
<param name="dataPacket">Byte数组</param>
<returns></returns>
</member>
</members>
</doc>

Binary file not shown.