1193 lines
47 KiB
VB.net
1193 lines
47 KiB
VB.net
|
|
Imports System.Data.Common
|
|||
|
|
Imports System.IO
|
|||
|
|
Imports System.IO.Ports
|
|||
|
|
Imports System.Threading
|
|||
|
|
Imports FlexCell
|
|||
|
|
Imports Newtonsoft.Json
|
|||
|
|
|
|||
|
|
Public Class Form1
|
|||
|
|
|
|||
|
|
'创建串口对象
|
|||
|
|
|
|||
|
|
|
|||
|
|
Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles Text_Row.KeyPress, TextBox3.KeyPress, TextBox2.KeyPress, TextBox1.KeyPress
|
|||
|
|
'限制TextBox1只能输入数字
|
|||
|
|
e.Handled = Not $"0123456789{vbBack}".Contains(e.KeyChar) '如果要只允许输入数字,
|
|||
|
|
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
|
|||
|
|
inintGrid2(CInt(Text_Row.Text), (CInt(TextBox2.Text)))
|
|||
|
|
Button3_Click(Nothing, Nothing)
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Public Sub inintGrid2(r As Integer, c As Integer)
|
|||
|
|
Grid1.NewFile()
|
|||
|
|
Grid1.Rows = r * 2 + 1
|
|||
|
|
Grid1.Cols = c * 3 + 1
|
|||
|
|
Dim iWidth As Integer
|
|||
|
|
|
|||
|
|
iWidth = (Grid1.Width - 30) / (c * 3)
|
|||
|
|
With Grid1
|
|||
|
|
.DefaultRowHeight = 70
|
|||
|
|
.Row(0).Visible = False
|
|||
|
|
For j = 0 To Grid1.Cols - 1
|
|||
|
|
If j = 0 Then
|
|||
|
|
.Column(0).Visible = False
|
|||
|
|
.Column(j).Width = 0
|
|||
|
|
Continue For
|
|||
|
|
End If
|
|||
|
|
'If j Mod 2 = 0 Then
|
|||
|
|
' .Column(j).Width = iWidth + 50
|
|||
|
|
'Else
|
|||
|
|
' .Column(j).Width = iWidth - 50
|
|||
|
|
'End If
|
|||
|
|
.Column(j).Width = iWidth
|
|||
|
|
.Column(j).Alignment = FlexCell.AlignmentEnum.CenterCenter
|
|||
|
|
Next
|
|||
|
|
|
|||
|
|
|
|||
|
|
End With
|
|||
|
|
For i = 1 To r * 2
|
|||
|
|
For j = 1 To c
|
|||
|
|
If (i - 1) Mod 2 = 0 Then
|
|||
|
|
Grid1.Cell(i, j * 3 - 2).Text = $"KEY-{j + (3 * (i - 1) / 2)}"
|
|||
|
|
Grid1.Range(i, j * 3 - 2, i, j * 3).MergeCells = True
|
|||
|
|
Grid1.Range(i, j * 3 - 2, i, j * 3).Borders(EdgeEnum.Outside) = LineStyleEnum.Thin
|
|||
|
|
Grid1.Range(i, j * 3 - 2, i, j * 3).Borders(EdgeEnum.Inside) = LineStyleEnum.Thin
|
|||
|
|
Else
|
|||
|
|
|
|||
|
|
'Grid1.Cell(i, j * 2 - 1).Text = $"CH_{(i + 3) Mod 4}"
|
|||
|
|
Grid1.Range(i, j * 3 - 2, i, j * 3).Borders(EdgeEnum.Outside) = LineStyleEnum.Thin
|
|||
|
|
Grid1.Range(i, j * 3 - 2, i, j * 3).Borders(EdgeEnum.Inside) = LineStyleEnum.Thin
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
|
|||
|
|
Next
|
|||
|
|
|
|||
|
|
Next
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
Grid1.Range(1, 1, Grid1.Rows - 1, Grid1.Cols - 1).FontBold = True
|
|||
|
|
Grid1.Range(1, 1, Grid1.Rows - 1, Grid1.Cols - 1).FontSize = 40
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
|
|||
|
|
Public Sub inintGrid1(r As Integer, c As Integer)
|
|||
|
|
Grid1.NewFile()
|
|||
|
|
Grid1.Rows = r * 4 + 1
|
|||
|
|
Grid1.Cols = c * 2 + 1
|
|||
|
|
Dim iWidth As Integer
|
|||
|
|
|
|||
|
|
iWidth = (Grid1.Width - 30) / (c * 2)
|
|||
|
|
With Grid1
|
|||
|
|
.DefaultRowHeight = 70
|
|||
|
|
.Row(0).Visible = False
|
|||
|
|
For j = 0 To Grid1.Cols - 1
|
|||
|
|
If j = 0 Then
|
|||
|
|
.Column(0).Visible = False
|
|||
|
|
.Column(j).Width = 0
|
|||
|
|
Continue For
|
|||
|
|
End If
|
|||
|
|
If j Mod 2 = 0 Then
|
|||
|
|
.Column(j).Width = iWidth + 50
|
|||
|
|
Else
|
|||
|
|
.Column(j).Width = iWidth - 50
|
|||
|
|
End If
|
|||
|
|
' .Column(j).Width = iWidth
|
|||
|
|
.Column(j).Alignment = FlexCell.AlignmentEnum.CenterCenter
|
|||
|
|
Next
|
|||
|
|
|
|||
|
|
|
|||
|
|
End With
|
|||
|
|
For i = 1 To r * 4
|
|||
|
|
For j = 1 To c
|
|||
|
|
If (i - 1) Mod 4 = 0 Then
|
|||
|
|
Grid1.Cell(i, j * 2 - 1).Text = $"KEY-{j + (3 * (i - 1) / 4)}"
|
|||
|
|
Grid1.Range(i, j * 2 - 1, i, j * 2).MergeCells = True
|
|||
|
|
Grid1.Range(i, j * 2 - 1, i + 3, j * 2).Borders(EdgeEnum.Outside) = LineStyleEnum.Thin
|
|||
|
|
Grid1.Range(i, j * 2 - 1, i + 3, j * 2).Borders(EdgeEnum.Inside) = LineStyleEnum.Thin
|
|||
|
|
Else
|
|||
|
|
|
|||
|
|
Grid1.Cell(i, j * 2 - 1).Text = $"CH_{(i + 3) Mod 4}"
|
|||
|
|
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
|
|||
|
|
Next
|
|||
|
|
|
|||
|
|
Next
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
Grid1.Range(1, 1, Grid1.Rows - 1, Grid1.Cols - 1).FontBold = True
|
|||
|
|
Grid1.Range(1, 1, Grid1.Rows - 1, Grid1.Cols - 1).FontSize = 40
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
'Public Sub InitGrid2(r As Integer, c As Integer)
|
|||
|
|
' Grid2.NewFile()
|
|||
|
|
' Grid2.Rows = r * c + 1
|
|||
|
|
' Grid2.Cols = 3
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
'End Sub
|
|||
|
|
|
|||
|
|
Private Sub Cbo_Port_DropDown(sender As Object, e As EventArgs) Handles Cbo_Port.DropDown
|
|||
|
|
Cbo_Port.Items.Clear()
|
|||
|
|
Cbo_Port.Items.AddRange(SerialPort.GetPortNames())
|
|||
|
|
End Sub
|
|||
|
|
Public IsRead As Boolean = False
|
|||
|
|
Public listening As Boolean = False
|
|||
|
|
Private Sub Btn_OpenPort_Click(sender As Object, e As EventArgs) Handles Btn_OpenPort.Click
|
|||
|
|
If Btn_OpenPort.Text = "Disconnect" Then
|
|||
|
|
Btn_OpenPort.Text = "Connect"
|
|||
|
|
Btn_OpenPort.BackColor = Color.Transparent
|
|||
|
|
Cbo_Port.Enabled = True
|
|||
|
|
Cbo_Baud.Enabled = True
|
|||
|
|
Try
|
|||
|
|
|
|||
|
|
If SerialPort1.IsOpen Then
|
|||
|
|
'判断是否有接收数据
|
|||
|
|
'Isread = False
|
|||
|
|
'将串口接收关联事件取消
|
|||
|
|
'RemoveHandler SerialPort1.DataReceived, AddressOf SerialPort1_DataReceived
|
|||
|
|
|
|||
|
|
IsRead = True
|
|||
|
|
While (listening)
|
|||
|
|
Application.DoEvents()
|
|||
|
|
Thread.Sleep(10)
|
|||
|
|
End While
|
|||
|
|
Thread.Sleep(10)
|
|||
|
|
SerialPort1.DiscardInBuffer()
|
|||
|
|
|
|||
|
|
SerialPort1.Close()
|
|||
|
|
|
|||
|
|
IsRead = False
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
Catch ex As Exception
|
|||
|
|
MsgBox("关闭连接失败!")
|
|||
|
|
End Try
|
|||
|
|
|
|||
|
|
' m_CommunicationFlow.m_Transmitter.CloseTransmitter()
|
|||
|
|
Else
|
|||
|
|
IsRead = False
|
|||
|
|
'AddHandler SerialPort1.DataReceived, AddressOf SerialPort1_DataReceived
|
|||
|
|
Btn_OpenPort.Text = "Disconnect"
|
|||
|
|
Btn_OpenPort.BackColor = Color.Red
|
|||
|
|
Cbo_Port.Enabled = False
|
|||
|
|
Cbo_Baud.Enabled = False
|
|||
|
|
'If IsNothing(m_CommunicationFlow.m_Transmitter) Then
|
|||
|
|
' Tab_SerialSettings_SelectedIndexChanged(Nothing, Nothing)
|
|||
|
|
'End If
|
|||
|
|
'设置 SerialPort1 端口名
|
|||
|
|
Try
|
|||
|
|
If SerialPort1.IsOpen Then
|
|||
|
|
SerialPort1.Close()
|
|||
|
|
End If
|
|||
|
|
SerialPort1.PortName = Cbo_Port.Text
|
|||
|
|
SerialPort1.BaudRate = CInt(Cbo_Baud.Text)
|
|||
|
|
SerialPort1.Open()
|
|||
|
|
Catch ex As Exception
|
|||
|
|
MsgBox("创建连接失败!")
|
|||
|
|
'setToolStripLabel2color($"sqlite创建连接失败!!!{vbCrLf }", Color.Green, RichTextBox1)
|
|||
|
|
Btn_OpenPort_Click(Nothing, Nothing)
|
|||
|
|
Return
|
|||
|
|
End Try
|
|||
|
|
|
|||
|
|
|
|||
|
|
'If IsNothing(SerialPort1) Then
|
|||
|
|
' Return CreateSerial(m_SerialComfig)
|
|||
|
|
'End If
|
|||
|
|
'If Not m_Serial.IsOpen Then
|
|||
|
|
' Try
|
|||
|
|
' m_Serial.Open()
|
|||
|
|
' Catch ex As Exception
|
|||
|
|
' Return False
|
|||
|
|
' End Try
|
|||
|
|
|
|||
|
|
'End If
|
|||
|
|
'Return True
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
'm_CommunicationFlow.m_Transmitter.OpenTransmitter()
|
|||
|
|
'If m_CommunicationFlow.m_Transmitter.IsTransmitter AndAlso m_CommunicationFlow.m_Transmitter.GetTransmitterStatus Then
|
|||
|
|
'Else
|
|||
|
|
' MsgBox("创建连接失败!")
|
|||
|
|
' Btn_OpenPort_Click(Nothing, Nothing)
|
|||
|
|
' Return
|
|||
|
|
'End If
|
|||
|
|
|
|||
|
|
End If
|
|||
|
|
End Sub
|
|||
|
|
''定义数据入库线程
|
|||
|
|
'Private DataToSqlThread As Thread
|
|||
|
|
''创建线程
|
|||
|
|
'Public Sub CreateDataToSqlThread()
|
|||
|
|
' DataToSqlThread = New Thread(AddressOf DataToSql)
|
|||
|
|
' 'DataToSqlThread.IsBackground = True
|
|||
|
|
' DataToSqlThread.Start()
|
|||
|
|
'End Sub
|
|||
|
|
'线程方法
|
|||
|
|
'Private Sub DataToSql()
|
|||
|
|
' While True
|
|||
|
|
|
|||
|
|
' End While
|
|||
|
|
'End Sub
|
|||
|
|
'队列变量
|
|||
|
|
' Public DataToSqlQueue As Queue(Of Dictionary(Of String, String))
|
|||
|
|
'键值对对象
|
|||
|
|
Public Sqldic As Dictionary(Of String, String)
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
|
|||
|
|
'Text = Application.ProductName
|
|||
|
|
'页面标题显示程序名称加版本号
|
|||
|
|
Text = Application.ProductName & " " & Application.ProductVersion
|
|||
|
|
'CheckBox1.Checked = True
|
|||
|
|
Cbo_Baud.SelectedIndex = 3
|
|||
|
|
recvBufferli = New List(Of Byte)()
|
|||
|
|
Counter = 0
|
|||
|
|
'DataToSqlQueue = New Queue(Of Dictionary(Of String, String))()
|
|||
|
|
pardic = New Dictionary(Of Integer, (Integer, Integer))
|
|||
|
|
Sqldic = New Dictionary(Of String, String)()
|
|||
|
|
Timer1.Start()
|
|||
|
|
Button1.PerformClick()
|
|||
|
|
GetMeSeting()
|
|||
|
|
|
|||
|
|
ClearDeviceform()
|
|||
|
|
' CreateDataToSqlThread()
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
'读取系统缓存
|
|||
|
|
Public Sub GetMeSeting()
|
|||
|
|
My.Settings.Reload()
|
|||
|
|
If Not String.IsNullOrEmpty(My.Settings.SerialPortName) Then
|
|||
|
|
Cbo_Port.Text = My.Settings.SerialPortName
|
|||
|
|
' pardic = JsonConvert.DeserializeObject(Of Dictionary(Of Integer, (Integer, Integer)))(My.Settings.m_Applicationconfig)
|
|||
|
|
End If
|
|||
|
|
If Not String.IsNullOrEmpty(My.Settings.scope) Then
|
|||
|
|
pardic = JsonConvert.DeserializeObject(Of Dictionary(Of Integer, (Integer, Integer)))(My.Settings.scope)
|
|||
|
|
End If
|
|||
|
|
End Sub
|
|||
|
|
'保存系统缓存
|
|||
|
|
Public Sub SaveMeSeting()
|
|||
|
|
My.Settings.SerialPortName = Cbo_Port.Text
|
|||
|
|
My.Settings.scope = JsonConvert.SerializeObject(pardic)
|
|||
|
|
My.Settings.Save()
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Public recvBufferli As List(Of Byte)
|
|||
|
|
Public IsIsAgreement As Boolean = True
|
|||
|
|
Public IsAgreement As Boolean = True
|
|||
|
|
Private Sub SerialPort1_DataReceived(sender As Object, e As SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
|
|||
|
|
|
|||
|
|
If IsRead Then Return
|
|||
|
|
listening = True
|
|||
|
|
|
|||
|
|
Dim bytes As Integer = 0
|
|||
|
|
|
|||
|
|
Try
|
|||
|
|
|
|||
|
|
|
|||
|
|
Do
|
|||
|
|
bytes = SerialPort1.BytesToRead
|
|||
|
|
If bytes <= 0 Then
|
|||
|
|
listening = False
|
|||
|
|
Exit Sub
|
|||
|
|
End If
|
|||
|
|
'If bytes + _recvOffset >= 4096 Then
|
|||
|
|
|
|||
|
|
' 'ShowPortReceData(_recvBuffer)
|
|||
|
|
|
|||
|
|
' sp.Read(_recvBuffer, _recvOffset, 4096 - _recvOffset)
|
|||
|
|
|
|||
|
|
' _recvOffset = 0
|
|||
|
|
'Else
|
|||
|
|
' sp.Read(_recvBuffer, _recvOffset, bytes)
|
|||
|
|
' _recvOffset += bytes
|
|||
|
|
'End If
|
|||
|
|
|
|||
|
|
Dim buf(bytes - 1) As Byte
|
|||
|
|
If SerialPort1.IsOpen Then
|
|||
|
|
SerialPort1.Read(buf, 0, bytes)
|
|||
|
|
End If
|
|||
|
|
recvBufferli.AddRange(buf)
|
|||
|
|
|
|||
|
|
|
|||
|
|
Thread.Sleep(5)
|
|||
|
|
Loop While (SerialPort1.IsOpen AndAlso (SerialPort1.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()
|
|||
|
|
Counter = 0
|
|||
|
|
|
|||
|
|
RuningLog.OutputLogsToTheControl(RichTextBox1, New RuningLogConfig($"RX:{ByteToString2(buf)}", Color.Blue), 1)
|
|||
|
|
'处理接收到的数据(recvBufferli.ToArray())
|
|||
|
|
If IsAgreement Then
|
|||
|
|
Dim Isagresult As Boolean = ParseReceiveData(buf)
|
|||
|
|
IsAgreement = Not Isagresult
|
|||
|
|
Else
|
|||
|
|
ProcessRecvData(buf)
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
'listening = False
|
|||
|
|
|
|||
|
|
End If
|
|||
|
|
listening = False
|
|||
|
|
Catch ex As Exception
|
|||
|
|
MsgBox(ex.Message)
|
|||
|
|
listening = False
|
|||
|
|
RuningLog.OutputLogsToTheControl(RichTextBox1, New RuningLogConfig($"串口接收数据失败,原因:{ex.Message}", Color.Red), 1)
|
|||
|
|
End Try
|
|||
|
|
End Sub
|
|||
|
|
Public mDevGuid As String = ""
|
|||
|
|
Public mDevName As String = ""
|
|||
|
|
Public mDevType As String = ""
|
|||
|
|
Public mDevappv As String = ""
|
|||
|
|
Public mDevbootv As String = ""
|
|||
|
|
Public Function ParseReceiveData(data As Byte()) As Boolean ''01 01 FF FF 0C 00 48 C0 00 04 E4 03‘’01 0A FF FF 0C 00 3F C0 00 04 E4 03
|
|||
|
|
Dim saaa = SumAndMod(data)
|
|||
|
|
' Console.WriteLine($"SumAndMod:{saaa}")
|
|||
|
|
If saaa = 0 Then '进行求和检验整包数据
|
|||
|
|
'判断命令类型是否一致
|
|||
|
|
If data(7) = &HC0 Then
|
|||
|
|
' Console.WriteLine($"data(7)=gCmdconfig.CmdValue{saaa}")
|
|||
|
|
'判断SN是否一致
|
|||
|
|
If ((data(1) And &HF) = 1 OrElse (data(1) And &HF) = &HA) AndAlso 1 = data(3) Then
|
|||
|
|
Dim Chiplen, namelen As Integer
|
|||
|
|
Chiplen = data(11)
|
|||
|
|
Dim namebuf2(Chiplen - 1) As Byte
|
|||
|
|
Array.Copy(data, 12, namebuf2, 0, namebuf2.Length)
|
|||
|
|
|
|||
|
|
Chiplen = Chiplen + 12
|
|||
|
|
namelen = data(Chiplen)
|
|||
|
|
Dim namebuf(namelen - 1) As Byte
|
|||
|
|
Array.Copy(data, Chiplen + 1, namebuf, 0, namebuf.Length)
|
|||
|
|
mDevName = System.Text.Encoding.ASCII.GetString(namebuf).Trim.Replace(vbNullChar, "")
|
|||
|
|
mDevGuid = ByteArrayToHexString(namebuf2)
|
|||
|
|
mDevappv = data(10)
|
|||
|
|
mDevbootv = data(9)
|
|||
|
|
mDevType = data(2)
|
|||
|
|
Counter = 22
|
|||
|
|
|
|||
|
|
Return True
|
|||
|
|
Else
|
|||
|
|
|
|||
|
|
Return False
|
|||
|
|
End If
|
|||
|
|
End If
|
|||
|
|
Return True
|
|||
|
|
End If
|
|||
|
|
Return False
|
|||
|
|
End Function
|
|||
|
|
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
|
|||
|
|
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
|
|||
|
|
'处理接收结果
|
|||
|
|
Private Sub ProcessRecvData(recvData As Byte())
|
|||
|
|
'获取行数列数
|
|||
|
|
Dim row As Integer = CInt(Text_Row.Text)
|
|||
|
|
Dim col As Integer = CInt(TextBox2.Text)
|
|||
|
|
Dim conmd As Integer = CInt(TextBox16.Text)
|
|||
|
|
row = conmd * 18 + 4
|
|||
|
|
If recvData.Length = row Then
|
|||
|
|
If recvData(0) = &HD AndAlso recvData(1) = &HA Then
|
|||
|
|
|
|||
|
|
ParsingCommandResponse2(recvData, Grid1, RichTextBox1)
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
Else
|
|||
|
|
RuningLog.OutputLogsToTheControl(RichTextBox1, New RuningLogConfig($"接收数据长度异常,接收长度{recvData.Length},实际长度{row}", Color.Red), 1)
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
|
|||
|
|
'判断数据长度是否正确
|
|||
|
|
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
|
|||
|
|
Public Counter As Integer = 0
|
|||
|
|
Public IsAB As Boolean = False
|
|||
|
|
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
|
|||
|
|
'判断串口是否发开
|
|||
|
|
If SerialPort1.IsOpen Then
|
|||
|
|
'判断计数器是否小于10
|
|||
|
|
If Counter > 20 Then '1S
|
|||
|
|
If Counter > 25 Then
|
|||
|
|
Dim buf() As Byte
|
|||
|
|
If IsAgreement Then
|
|||
|
|
If IsAB Then
|
|||
|
|
buf = HexStringToByteArray("01 01 FF FF 0C 00 48 C0 00 04 E4 03")
|
|||
|
|
Else
|
|||
|
|
buf = HexStringToByteArray("01 0A FF FF 0C 00 3F C0 00 04 E4 03")
|
|||
|
|
|
|||
|
|
End If
|
|||
|
|
IsAB = Not IsAB
|
|||
|
|
Else
|
|||
|
|
buf = HexStringToByteArray("AF 01 07 4A 03 01 FA")
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
RuningLog.OutputLogsToTheControl(RichTextBox1, New RuningLogConfig($"TX:{ByteToString2(buf)}", Color.Green), 1)
|
|||
|
|
'清除发送缓存
|
|||
|
|
SerialPort1.DiscardOutBuffer()
|
|||
|
|
SerialPort1.Write(buf, 0, buf.Length)
|
|||
|
|
Counter = 22
|
|||
|
|
Else
|
|||
|
|
|
|||
|
|
End If
|
|||
|
|
If Counter = 21 Then
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
'DataToSqlQueue
|
|||
|
|
|
|||
|
|
''数据到达次数计数变量
|
|||
|
|
'Public ReleaseCounter, TriggerCounter, Triggerindex As Integer
|
|||
|
|
|
|||
|
|
ReleaseCounter = 0
|
|||
|
|
TriggerCounter = 0
|
|||
|
|
Triggerindex = 0
|
|||
|
|
If Sqldic.Count > 0 Then
|
|||
|
|
If CheckBox1.Checked Then
|
|||
|
|
Sqldic.Add("CreateTime", Now.ToString("yyyy-MM-dd HH:mm:ss"))
|
|||
|
|
Sqldic.Add("GUID", mDevGuid)
|
|||
|
|
Sqldic.Add("DevName", mDevName)
|
|||
|
|
Sqldic.Add("DevAppVersions", mDevappv)
|
|||
|
|
Sqldic.Add("DevBootVersions", mDevbootv)
|
|||
|
|
Sqldic.Add("DevType", mDevType)
|
|||
|
|
InsertDeviceform(Sqldic)
|
|||
|
|
WriteTomysql(Sqldic)
|
|||
|
|
End If
|
|||
|
|
IsAgreement = IsIsAgreement
|
|||
|
|
End If
|
|||
|
|
Sqldic.Clear()
|
|||
|
|
End If
|
|||
|
|
End If
|
|||
|
|
Counter += 1
|
|||
|
|
End If
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
Private Sub Form1_FormClosed(sender As Object, e As FormClosedEventArgs) Handles MyBase.FormClosed
|
|||
|
|
Timer1.Stop()
|
|||
|
|
'If SerialPort1.IsOpen Then
|
|||
|
|
' SerialPort1.Close()
|
|||
|
|
'End If
|
|||
|
|
'判断线程是否在运行
|
|||
|
|
'If Not IsNothing(DataToSqlThread) AndAlso DataToSqlThread.ThreadState = ThreadState.Running Then
|
|||
|
|
' DataToSqlThread.Abort()
|
|||
|
|
'End If
|
|||
|
|
If Btn_OpenPort.Text = "Disconnect" Then
|
|||
|
|
Btn_OpenPort.PerformClick()
|
|||
|
|
End If
|
|||
|
|
SaveMeSeting()
|
|||
|
|
End Sub
|
|||
|
|
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
|
|||
|
|
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
|
|||
|
|
Public Shared Function ByteToHex1(ByVal b As Byte) As String
|
|||
|
|
Return b.ToString("X2")
|
|||
|
|
End Function
|
|||
|
|
|
|||
|
|
|
|||
|
|
' DataToSqlQueue
|
|||
|
|
|
|||
|
|
'数据到达次数计数变量
|
|||
|
|
Public ReleaseCounter, TriggerCounter, Triggerindex As Integer
|
|||
|
|
|
|||
|
|
Delegate Sub delParsingCommandResponse(recvData As Byte(), gTable As FlexCell.Grid, gRicText As RichTextBox)
|
|||
|
|
Public Sub ParsingCommandResponse(recvData As Byte(), gTable As FlexCell.Grid, gRicText As RichTextBox)
|
|||
|
|
|
|||
|
|
If gRicText.InvokeRequired Then
|
|||
|
|
Dim d As New delParsingCommandResponse(AddressOf ParsingCommandResponse)
|
|||
|
|
gRicText.Invoke(d, recvData, gTable, gRicText)
|
|||
|
|
Else
|
|||
|
|
Dim row As Integer = CInt(Text_Row.Text) '2
|
|||
|
|
Dim col As Integer = CInt(TextBox2.Text) '3
|
|||
|
|
'Dim lowint As Integer = CInt(TextBox3.Text)
|
|||
|
|
'Dim upint As Integer = CInt(TextBox1.Text)
|
|||
|
|
Dim s1, s2, s3, s4 As Short
|
|||
|
|
|
|||
|
|
Dim vstr, vstr1 As String
|
|||
|
|
' row = row * col
|
|||
|
|
Dim r, c, index, val As Integer
|
|||
|
|
Dim conmd As Integer = CInt(TextBox16.Text)
|
|||
|
|
For i As Integer = 1 To row
|
|||
|
|
For j As Integer = 1 To col
|
|||
|
|
|
|||
|
|
r = i * 4 - 3
|
|||
|
|
c = j * 2 - 1
|
|||
|
|
|
|||
|
|
|
|||
|
|
index = (i - 1) * col + j
|
|||
|
|
|
|||
|
|
If index > conmd Then Continue For
|
|||
|
|
'计算第一个值
|
|||
|
|
s1 = recvData(4 + (index * 18) - 2 - 12)
|
|||
|
|
s1 = s1 << 8
|
|||
|
|
s1 += recvData(4 + (index * 18) - 1 - 12)
|
|||
|
|
val = s1
|
|||
|
|
gTable.Cell(i * 4 - 2, j * 2).Text = val
|
|||
|
|
'gTable.Cell(i * 4 - 2, j * 2).BackColor = Color.White
|
|||
|
|
'gTable.Cell(i * 4 - 2, j * 2 - 1).BackColor = Color.White
|
|||
|
|
'val = s1 'recvData(1 + (index * 10 - 3)) * 255 + recvData(1 + (index * 10 - 2))
|
|||
|
|
'计算第2个值
|
|||
|
|
s2 = recvData(4 + (index * 18 - 2 - 6))
|
|||
|
|
s2 = s2 << 8
|
|||
|
|
s2 += recvData(4 + (index * 18) - 1 - 6)
|
|||
|
|
val = s2
|
|||
|
|
|
|||
|
|
gTable.Cell(i * 4 - 1, j * 2).Text = val
|
|||
|
|
'gTable.Cell(i * 4 - 1, j * 2).BackColor = Color.White
|
|||
|
|
'gTable.Cell(i * 4 - 1, j * 2 - 1).BackColor = Color.White
|
|||
|
|
'计算第3个值
|
|||
|
|
s3 = recvData(4 + (index * 18 - 2))
|
|||
|
|
s3 = s3 << 8
|
|||
|
|
s3 += recvData(4 + (index * 18) - 1)
|
|||
|
|
val = s3
|
|||
|
|
gTable.Cell(i * 4, j * 2).Text = val
|
|||
|
|
'gTable.Cell(i * 4, j * 2).BackColor = Color.White
|
|||
|
|
'gTable.Cell(i * 4, j * 2 - 1).BackColor = Color.White
|
|||
|
|
|
|||
|
|
|
|||
|
|
'获取按键状态
|
|||
|
|
s4 = recvData(2)
|
|||
|
|
s4 = s4 << 8
|
|||
|
|
s4 += recvData(3)
|
|||
|
|
val = s4
|
|||
|
|
|
|||
|
|
'判断第N位是否为1触发,0未触发
|
|||
|
|
If (val >> (index - 1)) And 1 Then
|
|||
|
|
gTable.Cell(i * 4 - 3, j * 2 - 1).BackColor = Color.Green
|
|||
|
|
'判断数值是否在范围内
|
|||
|
|
If pardic(index).Item1 <= s1 AndAlso s1 <= pardic(index).Item2 Then
|
|||
|
|
gTable.Cell(i * 4 - 2, j * 2).BackColor = Color.Green
|
|||
|
|
gTable.Cell(i * 4 - 2, j * 2 - 1).BackColor = Color.Green
|
|||
|
|
Else
|
|||
|
|
gTable.Cell(i * 4 - 2, j * 2).BackColor = Color.OrangeRed
|
|||
|
|
gTable.Cell(i * 4 - 2, j * 2 - 1).BackColor = Color.OrangeRed
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
'判断数值是否在范围内
|
|||
|
|
If pardic(index).Item1 <= s2 AndAlso s2 <= pardic(index).Item2 Then
|
|||
|
|
gTable.Cell(i * 4 - 1, j * 2).BackColor = Color.Green
|
|||
|
|
gTable.Cell(i * 4 - 1, j * 2 - 1).BackColor = Color.Green
|
|||
|
|
Else
|
|||
|
|
gTable.Cell(i * 4 - 1, j * 2).BackColor = Color.OrangeRed
|
|||
|
|
gTable.Cell(i * 4 - 1, j * 2 - 1).BackColor = Color.OrangeRed
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
'判断数值是否在范围内
|
|||
|
|
If pardic(index).Item1 <= s3 AndAlso s3 <= pardic(index).Item2 Then
|
|||
|
|
gTable.Cell(i * 4, j * 2).BackColor = Color.Green
|
|||
|
|
gTable.Cell(i * 4, j * 2 - 1).BackColor = Color.Green
|
|||
|
|
Else
|
|||
|
|
gTable.Cell(i * 4, j * 2).BackColor = Color.OrangeRed
|
|||
|
|
gTable.Cell(i * 4, j * 2 - 1).BackColor = Color.OrangeRed
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
If Triggerindex = index Then
|
|||
|
|
setToolStripLabel2color2(index, Color.Black, RichTextBox1, Label18)
|
|||
|
|
If TriggerCounter = 4 Then
|
|||
|
|
|
|||
|
|
|
|||
|
|
vstr1 = $"{s1},{s2},{s3}"
|
|||
|
|
setToolStripLabel2color2(vstr1.Replace(",", vbLf), Color.Black, RichTextBox1, Label17)
|
|||
|
|
vstr = $"key{index}_CH1_Trigger_Difference"
|
|||
|
|
If Sqldic.ContainsKey(vstr) Then
|
|||
|
|
Sqldic(vstr) = s1
|
|||
|
|
Else
|
|||
|
|
Sqldic.Add(vstr, s1)
|
|||
|
|
End If
|
|||
|
|
vstr = $"key{index}_CH2_Trigger_Difference"
|
|||
|
|
If Sqldic.ContainsKey(vstr) Then
|
|||
|
|
Sqldic(vstr) = s2
|
|||
|
|
Else
|
|||
|
|
Sqldic.Add(vstr, s2)
|
|||
|
|
End If
|
|||
|
|
vstr = $"key{index}_CH3_Trigger_Difference"
|
|||
|
|
If Sqldic.ContainsKey(vstr) Then
|
|||
|
|
Sqldic(vstr) = s3
|
|||
|
|
Else
|
|||
|
|
Sqldic.Add(vstr, s3)
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
|
|||
|
|
Else
|
|||
|
|
'setToolStripLabel2color2("", Color.Black, RichTextBox1, Label17)
|
|||
|
|
' TriggerCounter += 1
|
|||
|
|
End If
|
|||
|
|
If TriggerCounter > 10 Then
|
|||
|
|
|
|||
|
|
Else
|
|||
|
|
TriggerCounter += 1
|
|||
|
|
End If
|
|||
|
|
Else
|
|||
|
|
setToolStripLabel2color2("", Color.Black, RichTextBox1, Label18)
|
|||
|
|
setToolStripLabel2color2("", Color.Black, RichTextBox1, Label17)
|
|||
|
|
Triggerindex = index
|
|||
|
|
TriggerCounter = 0
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
|
|||
|
|
Else
|
|||
|
|
gTable.Cell(i * 4 - 3, j * 2 - 1).BackColor = Color.White
|
|||
|
|
|
|||
|
|
gTable.Cell(i * 4 - 2, j * 2).BackColor = Color.White
|
|||
|
|
gTable.Cell(i * 4 - 2, j * 2 - 1).BackColor = Color.White
|
|||
|
|
|
|||
|
|
gTable.Cell(i * 4 - 1, j * 2).BackColor = Color.White
|
|||
|
|
gTable.Cell(i * 4 - 1, j * 2 - 1).BackColor = Color.White
|
|||
|
|
gTable.Cell(i * 4, j * 2).BackColor = Color.White
|
|||
|
|
gTable.Cell(i * 4, j * 2 - 1).BackColor = Color.White
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
'开头第六报数据
|
|||
|
|
If ReleaseCounter = 6 Then
|
|||
|
|
|
|||
|
|
vstr1 = $"{s1},{s2},{s3}"
|
|||
|
|
vstr = $"key{index}_CH1_Release_Difference"
|
|||
|
|
If Sqldic.ContainsKey(vstr) Then
|
|||
|
|
Sqldic(vstr) = s1
|
|||
|
|
Else
|
|||
|
|
Sqldic.Add(vstr, s1)
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
vstr = $"key{index}_CH2_Release_Difference"
|
|||
|
|
If Sqldic.ContainsKey(vstr) Then
|
|||
|
|
Sqldic(vstr) = s2
|
|||
|
|
Else
|
|||
|
|
Sqldic.Add(vstr, s2)
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
vstr = $"key{index}_CH3_Release_Difference"
|
|||
|
|
If Sqldic.ContainsKey(vstr) Then
|
|||
|
|
Sqldic(vstr) = s3
|
|||
|
|
Else
|
|||
|
|
Sqldic.Add(vstr, s3)
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
Next
|
|||
|
|
Next
|
|||
|
|
|
|||
|
|
vstr = "ClosingRemarks"
|
|||
|
|
If Sqldic.ContainsKey(vstr) Then
|
|||
|
|
Sqldic(vstr) = ByteToString2(recvData)
|
|||
|
|
Else
|
|||
|
|
Sqldic.Add(vstr, ByteToString2(recvData))
|
|||
|
|
End If
|
|||
|
|
If ReleaseCounter > 100 Then
|
|||
|
|
Else
|
|||
|
|
ReleaseCounter += 1
|
|||
|
|
End If
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Public Sub ParsingCommandResponse2(recvData As Byte(), gTable As FlexCell.Grid, gRicText As RichTextBox)
|
|||
|
|
|
|||
|
|
If gRicText.InvokeRequired Then
|
|||
|
|
Dim d As New delParsingCommandResponse(AddressOf ParsingCommandResponse2)
|
|||
|
|
gRicText.Invoke(d, recvData, gTable, gRicText)
|
|||
|
|
Else
|
|||
|
|
Dim row As Integer = CInt(Text_Row.Text) '2
|
|||
|
|
Dim col As Integer = CInt(TextBox2.Text) '3
|
|||
|
|
'Dim lowint As Integer = CInt(TextBox3.Text)
|
|||
|
|
'Dim upint As Integer = CInt(TextBox1.Text)
|
|||
|
|
Dim s1, s2, s3, s4 As Short
|
|||
|
|
|
|||
|
|
Dim vstr, vstr1 As String
|
|||
|
|
' row = row * col
|
|||
|
|
Dim r, c, index, val As Integer
|
|||
|
|
Dim conmd As Integer = CInt(TextBox16.Text)
|
|||
|
|
Dim passindex, faleindex, faleindex2 As Integer
|
|||
|
|
For i As Integer = 1 To row
|
|||
|
|
For j As Integer = 1 To col
|
|||
|
|
|
|||
|
|
r = i * 2 - 1
|
|||
|
|
c = j * 3 - 2
|
|||
|
|
|
|||
|
|
|
|||
|
|
index = (i - 1) * col + j
|
|||
|
|
|
|||
|
|
If index > conmd Then Continue For
|
|||
|
|
'计算第一个值
|
|||
|
|
s1 = recvData(4 + (index * 18) - 2 - 12)
|
|||
|
|
s1 = s1 << 8
|
|||
|
|
s1 += recvData(4 + (index * 18) - 1 - 12)
|
|||
|
|
val = s1
|
|||
|
|
gTable.Cell(i * 2, j * 3 - 2).Text = val
|
|||
|
|
'gTable.Cell(i * 4 - 2, j * 2).BackColor = Color.White
|
|||
|
|
'gTable.Cell(i * 4 - 2, j * 2 - 1).BackColor = Color.White
|
|||
|
|
'val = s1 'recvData(1 + (index * 10 - 3)) * 255 + recvData(1 + (index * 10 - 2))
|
|||
|
|
'计算第2个值
|
|||
|
|
s2 = recvData(4 + (index * 18 - 2 - 6))
|
|||
|
|
s2 = s2 << 8
|
|||
|
|
s2 += recvData(4 + (index * 18) - 1 - 6)
|
|||
|
|
val = s2
|
|||
|
|
|
|||
|
|
gTable.Cell(i * 2, j * 3 - 1).Text = val
|
|||
|
|
'gTable.Cell(i * 4 - 1, j * 2).BackColor = Color.White
|
|||
|
|
'gTable.Cell(i * 4 - 1, j * 2 - 1).BackColor = Color.White
|
|||
|
|
'计算第3个值
|
|||
|
|
s3 = recvData(4 + (index * 18 - 2))
|
|||
|
|
s3 = s3 << 8
|
|||
|
|
s3 += recvData(4 + (index * 18) - 1)
|
|||
|
|
val = s3
|
|||
|
|
gTable.Cell(i * 2, j * 3).Text = val
|
|||
|
|
'gTable.Cell(i * 4, j * 2).BackColor = Color.White
|
|||
|
|
'gTable.Cell(i * 4, j * 2 - 1).BackColor = Color.White
|
|||
|
|
|
|||
|
|
|
|||
|
|
'获取按键状态
|
|||
|
|
s4 = recvData(2)
|
|||
|
|
s4 = s4 << 8
|
|||
|
|
s4 += recvData(3)
|
|||
|
|
val = s4
|
|||
|
|
|
|||
|
|
'判断第N位是否为1触发,0未触发
|
|||
|
|
If (val >> (index - 1)) And 1 Then
|
|||
|
|
|
|||
|
|
passindex = 0
|
|||
|
|
faleindex = 0
|
|||
|
|
faleindex2 = 0
|
|||
|
|
'判断数值是否在范围内
|
|||
|
|
If pardic(index).Item1 <= s1 AndAlso s1 <= pardic(index).Item2 Then
|
|||
|
|
gTable.Cell(i * 2, j * 3 - 2).ForeColor = Color.Green
|
|||
|
|
'gTable.Cell(i * 4 - 2, j * 2 - 1).BackColor = Color.Green
|
|||
|
|
passindex += 1
|
|||
|
|
ElseIf s1 > pardic(index).Item2 Then
|
|||
|
|
gTable.Cell(i * 2, j * 3 - 2).ForeColor = Color.OrangeRed
|
|||
|
|
'gTable.Cell(i * 4 - 2, j * 2 - 1).BackColor = Color.OrangeRed
|
|||
|
|
faleindex += 1
|
|||
|
|
ElseIf s1 < pardic(index).Item1 Then
|
|||
|
|
gTable.Cell(i * 2, j * 3 - 2).ForeColor = Color.Black
|
|||
|
|
'gTable.Cell(i * 4 - 2, j * 2 - 1).BackColor = Color.OrangeRed
|
|||
|
|
faleindex2 += 1
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
'判断数值是否在范围内
|
|||
|
|
If pardic(index).Item1 <= s2 AndAlso s2 <= pardic(index).Item2 Then
|
|||
|
|
gTable.Cell(i * 2, j * 3 - 1).ForeColor = Color.Green
|
|||
|
|
'gTable.Cell(i * 4 - 1, j * 2 - 1).BackColor = Color.Green
|
|||
|
|
passindex += 1
|
|||
|
|
ElseIf s2 > pardic(index).Item2 Then
|
|||
|
|
gTable.Cell(i * 2, j * 3 - 1).ForeColor = Color.OrangeRed
|
|||
|
|
'gTable.Cell(i * 4 - 1, j * 2 - 1).BackColor = Color.OrangeRed
|
|||
|
|
faleindex += 1
|
|||
|
|
ElseIf s2 < pardic(index).Item1 Then
|
|||
|
|
gTable.Cell(i * 2, j * 3 - 1).ForeColor = Color.Black
|
|||
|
|
'gTable.Cell(i * 4 - 1, j * 2 - 1).BackColor = Color.OrangeRed
|
|||
|
|
faleindex2 += 1
|
|||
|
|
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
'判断数值是否在范围内
|
|||
|
|
If pardic(index).Item1 <= s3 AndAlso s3 <= pardic(index).Item2 Then
|
|||
|
|
gTable.Cell(i * 2, j * 3).ForeColor = Color.Green
|
|||
|
|
'gTable.Cell(i * 4, j * 2 - 1).BackColor = Color.Green
|
|||
|
|
passindex += 1
|
|||
|
|
ElseIf s3 > pardic(index).Item2 Then
|
|||
|
|
gTable.Cell(i * 2, j * 3).ForeColor = Color.OrangeRed
|
|||
|
|
'gTable.Cell(i * 4, j * 2 - 1).BackColor = Color.OrangeRed
|
|||
|
|
faleindex += 1
|
|||
|
|
ElseIf s3 < pardic(index).Item1 Then
|
|||
|
|
gTable.Cell(i * 2, j * 3).ForeColor = Color.Black
|
|||
|
|
|
|||
|
|
'gTable.Cell(i * 4, j * 2 - 1).BackColor = Color.OrangeRed
|
|||
|
|
faleindex2 += 1
|
|||
|
|
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
If passindex >= 2 Then
|
|||
|
|
gTable.Cell(i * 2 - 1, j * 3 - 2).BackColor = Color.Green
|
|||
|
|
ElseIf faleindex >= 2 Then
|
|||
|
|
gTable.Cell(i * 2 - 1, j * 3 - 2).BackColor = Color.OrangeRed
|
|||
|
|
ElseIf 0 < faleindex2 AndAlso faleindex2 < 2 Then
|
|||
|
|
gTable.Cell(i * 2 - 1, j * 3 - 2).BackColor = Color.Green
|
|||
|
|
Else
|
|||
|
|
gTable.Cell(i * 2 - 1, j * 3 - 2).BackColor = Color.White
|
|||
|
|
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
If Triggerindex = index Then
|
|||
|
|
setToolStripLabel2color2(index, Color.Black, RichTextBox1, Label18)
|
|||
|
|
If TriggerCounter = 4 Then
|
|||
|
|
|
|||
|
|
|
|||
|
|
vstr1 = $"{s1},{s2},{s3}"
|
|||
|
|
setToolStripLabel2color2(vstr1, Color.Black, RichTextBox1, Label17)
|
|||
|
|
vstr = $"key{index}_CH1_Trigger_Difference"
|
|||
|
|
If Sqldic.ContainsKey(vstr) Then
|
|||
|
|
Sqldic(vstr) = s1
|
|||
|
|
Else
|
|||
|
|
Sqldic.Add(vstr, s1)
|
|||
|
|
End If
|
|||
|
|
vstr = $"key{index}_CH2_Trigger_Difference"
|
|||
|
|
If Sqldic.ContainsKey(vstr) Then
|
|||
|
|
Sqldic(vstr) = s2
|
|||
|
|
Else
|
|||
|
|
Sqldic.Add(vstr, s2)
|
|||
|
|
End If
|
|||
|
|
vstr = $"key{index}_CH3_Trigger_Difference"
|
|||
|
|
If Sqldic.ContainsKey(vstr) Then
|
|||
|
|
Sqldic(vstr) = s3
|
|||
|
|
Else
|
|||
|
|
Sqldic.Add(vstr, s3)
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
Else
|
|||
|
|
'setToolStripLabel2color2("", Color.Black, RichTextBox1, Label17)
|
|||
|
|
' TriggerCounter += 1
|
|||
|
|
End If
|
|||
|
|
If TriggerCounter > 10 Then
|
|||
|
|
|
|||
|
|
Else
|
|||
|
|
TriggerCounter += 1
|
|||
|
|
End If
|
|||
|
|
Else
|
|||
|
|
setToolStripLabel2color2("", Color.Black, RichTextBox1, Label18)
|
|||
|
|
setToolStripLabel2color2("", Color.Black, RichTextBox1, Label17)
|
|||
|
|
Triggerindex = index
|
|||
|
|
TriggerCounter = 0
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
|
|||
|
|
Else
|
|||
|
|
'gTable.Cell(i * 2 - 1, j * 3 - 2).BackColor = Color.OrangeRed
|
|||
|
|
gTable.Cell(i * 2 - 1, j * 3 - 2).BackColor = Color.White
|
|||
|
|
gTable.Cell(i * 2 - 1, j * 3 - 2).ForeColor = Color.Black
|
|||
|
|
|
|||
|
|
gTable.Cell(i * 2, j * 3 - 2).BackColor = Color.White
|
|||
|
|
gTable.Cell(i * 2, j * 3 - 2).ForeColor = Color.Black
|
|||
|
|
' gTable.Cell(i * 4 - 2, j * 2 - 1).BackColor = Color.White
|
|||
|
|
|
|||
|
|
gTable.Cell(i * 2, j * 3 - 1).BackColor = Color.White
|
|||
|
|
gTable.Cell(i * 2, j * 3 - 1).ForeColor = Color.Black
|
|||
|
|
|
|||
|
|
'gTable.Cell(i * 4 - 1, j * 2 - 1).BackColor = Color.White
|
|||
|
|
gTable.Cell(i * 2, j * 3).BackColor = Color.White
|
|||
|
|
gTable.Cell(i * 2, j * 3).ForeColor = Color.Black
|
|||
|
|
'gTable.Cell(i * 4, j * 2 - 1).BackColor = Color.White
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
'开头第六报数据
|
|||
|
|
If ReleaseCounter = 6 Then
|
|||
|
|
vstr = $"key{index}_Release_Difference"
|
|||
|
|
vstr1 = $"{s1},{s2},{s3}"
|
|||
|
|
vstr = $"key{index}_CH1_Release_Difference"
|
|||
|
|
If Sqldic.ContainsKey(vstr) Then
|
|||
|
|
Sqldic(vstr) = s1
|
|||
|
|
Else
|
|||
|
|
Sqldic.Add(vstr, s1)
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
vstr = $"key{index}_CH2_Release_Difference"
|
|||
|
|
If Sqldic.ContainsKey(vstr) Then
|
|||
|
|
Sqldic(vstr) = s2
|
|||
|
|
Else
|
|||
|
|
Sqldic.Add(vstr, s2)
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
vstr = $"key{index}_CH3_Release_Difference"
|
|||
|
|
If Sqldic.ContainsKey(vstr) Then
|
|||
|
|
Sqldic(vstr) = s3
|
|||
|
|
Else
|
|||
|
|
Sqldic.Add(vstr, s3)
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
Next
|
|||
|
|
Next
|
|||
|
|
|
|||
|
|
vstr = "ClosingRemarks"
|
|||
|
|
If Sqldic.ContainsKey(vstr) Then
|
|||
|
|
Sqldic(vstr) = ByteToString2(recvData)
|
|||
|
|
Else
|
|||
|
|
Sqldic.Add(vstr, ByteToString2(recvData))
|
|||
|
|
End If
|
|||
|
|
If ReleaseCounter > 100 Then
|
|||
|
|
Else
|
|||
|
|
ReleaseCounter += 1
|
|||
|
|
End If
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
|
|||
|
|
Private Sub ToolStripButton1_Click(sender As Object, e As EventArgs) Handles ToolStripButton1.Click
|
|||
|
|
RichTextBox1.Clear()
|
|||
|
|
End Sub
|
|||
|
|
Public pardic As Dictionary(Of Integer, (Integer, Integer))
|
|||
|
|
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
|
|||
|
|
pardic.Clear()
|
|||
|
|
pardic.Add(1, (CInt(TextBox4.Text), CInt(TextBox5.Text)))
|
|||
|
|
pardic.Add(2, (CInt(TextBox6.Text), CInt(TextBox7.Text)))
|
|||
|
|
pardic.Add(3, (CInt(TextBox8.Text), CInt(TextBox9.Text)))
|
|||
|
|
pardic.Add(4, (CInt(TextBox10.Text), CInt(TextBox11.Text)))
|
|||
|
|
pardic.Add(5, (CInt(TextBox12.Text), CInt(TextBox13.Text)))
|
|||
|
|
pardic.Add(6, (CInt(TextBox14.Text), CInt(TextBox15.Text)))
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
'创建slqit
|
|||
|
|
Public FileCPatrh = "C:\KeyPressTest"
|
|||
|
|
Public Sqlitedbpath As String = FileCPatrh & "\SQlitedb\test.db"
|
|||
|
|
Public SqliteTableName As String = "tempkeypresstest"
|
|||
|
|
Public Function ClearDeviceform() As Boolean
|
|||
|
|
|
|||
|
|
Dim localConn As New DbConnectionStringBuilder
|
|||
|
|
localConn.Add("Data Source", Sqlitedbpath)
|
|||
|
|
'localConn.Add("Password", "123456")
|
|||
|
|
Dim LocalConnString = localConn.ToString()
|
|||
|
|
'判断有没有文件夹
|
|||
|
|
If Not Directory.Exists(FileCPatrh & "\SQlitedb\") Then
|
|||
|
|
Directory.CreateDirectory(FileCPatrh & "\SQlitedb\")
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
Dim selectstr As String = $"CREATE TABLE IF NOT EXISTS `{SqliteTableName}` (
|
|||
|
|
`ID` INTEGER PRIMARY KEY AUTOINCREMENT,
|
|||
|
|
`CreateTime` TEXT NOT NULL,
|
|||
|
|
`key1_CH1_Release_Difference` TEXT DEFAULT NULL,
|
|||
|
|
`key1_CH2_Release_Difference` TEXT DEFAULT NULL,
|
|||
|
|
`key1_CH3_Release_Difference` TEXT DEFAULT NULL,
|
|||
|
|
`key2_CH1_Release_Difference` TEXT DEFAULT NULL,
|
|||
|
|
`key2_CH2_Release_Difference` TEXT DEFAULT NULL,
|
|||
|
|
`key2_CH3_Release_Difference` TEXT DEFAULT NULL,
|
|||
|
|
`key3_CH1_Release_Difference` TEXT DEFAULT NULL,
|
|||
|
|
`key3_CH2_Release_Difference` TEXT DEFAULT NULL,
|
|||
|
|
`key3_CH3_Release_Difference` TEXT DEFAULT NULL,
|
|||
|
|
`key4_CH1_Release_Difference` TEXT DEFAULT NULL,
|
|||
|
|
`key4_CH2_Release_Difference` TEXT DEFAULT NULL,
|
|||
|
|
`key4_CH3_Release_Difference` TEXT DEFAULT NULL,
|
|||
|
|
`key5_CH1_Release_Difference` TEXT DEFAULT NULL,
|
|||
|
|
`key5_CH2_Release_Difference` TEXT DEFAULT NULL,
|
|||
|
|
`key5_CH3_Release_Difference` TEXT DEFAULT NULL,
|
|||
|
|
`key6_CH1_Release_Difference` TEXT DEFAULT NULL,
|
|||
|
|
`key6_CH2_Release_Difference` TEXT DEFAULT NULL,
|
|||
|
|
`key6_CH3_Release_Difference` TEXT DEFAULT NULL,
|
|||
|
|
`key1_CH1_Trigger_Difference` TEXT DEFAULT NULL,
|
|||
|
|
`key1_CH2_Trigger_Difference` TEXT DEFAULT NULL,
|
|||
|
|
`key1_CH3_Trigger_Difference` TEXT DEFAULT NULL,
|
|||
|
|
`key2_CH1_Trigger_Difference` TEXT DEFAULT NULL,
|
|||
|
|
`key2_CH2_Trigger_Difference` TEXT DEFAULT NULL,
|
|||
|
|
`key2_CH3_Trigger_Difference` TEXT DEFAULT NULL,
|
|||
|
|
`key3_CH1_Trigger_Difference` TEXT DEFAULT NULL,
|
|||
|
|
`key3_CH2_Trigger_Difference` TEXT DEFAULT NULL,
|
|||
|
|
`key3_CH3_Trigger_Difference` TEXT DEFAULT NULL,
|
|||
|
|
`key4_CH1_Trigger_Difference` TEXT DEFAULT NULL,
|
|||
|
|
`key4_CH2_Trigger_Difference` TEXT DEFAULT NULL,
|
|||
|
|
`key4_CH3_Trigger_Difference` TEXT DEFAULT NULL,
|
|||
|
|
`key5_CH1_Trigger_Difference` TEXT DEFAULT NULL,
|
|||
|
|
`key5_CH2_Trigger_Difference` TEXT DEFAULT NULL,
|
|||
|
|
`key5_CH3_Trigger_Difference` TEXT DEFAULT NULL,
|
|||
|
|
`key6_CH1_Trigger_Difference` TEXT DEFAULT NULL,
|
|||
|
|
`key6_CH2_Trigger_Difference` TEXT DEFAULT NULL,
|
|||
|
|
`key6_CH3_Trigger_Difference` TEXT DEFAULT NULL,
|
|||
|
|
`DevName` TEXT DEFAULT NULL,
|
|||
|
|
`DevAppVersions` TEXT DEFAULT NULL,
|
|||
|
|
`DevBootVersions` TEXT DEFAULT NULL,
|
|||
|
|
`DevType` TEXT DEFAULT NULL,
|
|||
|
|
`GUID` TEXT DEFAULT NULL,
|
|||
|
|
`ClosingRemarks` TEXT DEFAULT NULL
|
|||
|
|
);"
|
|||
|
|
|
|||
|
|
|
|||
|
|
Dim dt As DataTable
|
|||
|
|
Try
|
|||
|
|
Using db As New DbExecutor(DbExecutor.DbTypeEnum.Sqlite, LocalConnString)
|
|||
|
|
|
|||
|
|
db.Open()
|
|||
|
|
'Try
|
|||
|
|
' 'Dim vselectstr = $"DELETE FROM {Tftp_Log};"
|
|||
|
|
' 'db.ExecuteNonQuery(vselectstr)
|
|||
|
|
'Catch ex As Exception
|
|||
|
|
|
|||
|
|
|
|||
|
|
'End Try
|
|||
|
|
dt = db.ExecuteDataTable(selectstr)
|
|||
|
|
db.Close()
|
|||
|
|
If IsNothing(dt) Then
|
|||
|
|
MsgBox($"数据表创建失败!!!{vbCrLf }")
|
|||
|
|
Return False
|
|||
|
|
Else
|
|||
|
|
Return True
|
|||
|
|
End If
|
|||
|
|
Return True
|
|||
|
|
|
|||
|
|
End Using
|
|||
|
|
|
|||
|
|
|
|||
|
|
Catch ex As Exception
|
|||
|
|
MsgBox($"数据表创建失败!!!{vbCrLf }原因:{vbCrLf }{ex.Message }")
|
|||
|
|
Return False
|
|||
|
|
End Try
|
|||
|
|
End Function
|
|||
|
|
|
|||
|
|
'设置数据库状态
|
|||
|
|
Delegate Sub DelegatesetToolStripLabel2color(strtext As String, bcolor As Color, gRicText As RichTextBox)
|
|||
|
|
Public Sub setToolStripLabel2color(strtext As String, bcolor As Color, gRicText As RichTextBox)
|
|||
|
|
If gRicText.InvokeRequired Then
|
|||
|
|
Dim d As New DelegatesetToolStripLabel2color(AddressOf setToolStripLabel2color)
|
|||
|
|
gRicText.Invoke(d, strtext, bcolor, gRicText)
|
|||
|
|
Else
|
|||
|
|
ToolStripLabel2.Text = strtext
|
|||
|
|
ToolStripLabel2.BackColor = bcolor
|
|||
|
|
End If
|
|||
|
|
End Sub
|
|||
|
|
Delegate Sub DelegatesetToolStripLabel2color2(strtext As String, bcolor As Color, gRicText As RichTextBox, lab As Label)
|
|||
|
|
Public Sub setToolStripLabel2color2(strtext As String, bcolor As Color, gRicText As RichTextBox, lab As Label)
|
|||
|
|
If gRicText.InvokeRequired Then
|
|||
|
|
Dim d As New DelegatesetToolStripLabel2color(AddressOf setToolStripLabel2color)
|
|||
|
|
gRicText.Invoke(d, strtext, bcolor, gRicText, lab)
|
|||
|
|
Else
|
|||
|
|
lab.Text = strtext
|
|||
|
|
'ToolStripLabel2.BackColor = bcolor
|
|||
|
|
End If
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
|
|||
|
|
Public Function InsertDeviceform(dic As Dictionary(Of String, String)) As Boolean
|
|||
|
|
|
|||
|
|
Dim localConn As New DbConnectionStringBuilder
|
|||
|
|
localConn.Add("Data Source", Sqlitedbpath)
|
|||
|
|
Using db As New DbExecutor(DbExecutor.DbTypeEnum.Sqlite, localConn.ToString())
|
|||
|
|
Try
|
|||
|
|
db.Open()
|
|||
|
|
Dim caint = db.ExecuteNonQuery(db.CmdHelper.Insert(SqliteTableName, dic))
|
|||
|
|
If caint = 0 Then
|
|||
|
|
'MsgBox($"Sqlite入库失败!!!{vbCrLf }")
|
|||
|
|
setToolStripLabel2color($"Sqlite入库失败!!!{vbCrLf }", Color.Red, RichTextBox1)
|
|||
|
|
Return False
|
|||
|
|
End If
|
|||
|
|
db.Close()
|
|||
|
|
Catch ex As Exception
|
|||
|
|
'MsgBox($"Sqlite入库失败!!!{vbCrLf }原因:{vbCrLf }{ex.Message }")
|
|||
|
|
setToolStripLabel2color($"Sqlite入库失败!!!{vbCrLf }原因:{vbCrLf }{ex.Message }", Color.Red, RichTextBox1)
|
|||
|
|
Return False
|
|||
|
|
End Try
|
|||
|
|
|
|||
|
|
' Return True
|
|||
|
|
End Using
|
|||
|
|
setToolStripLabel2color($"Sqlite入库成功!!!{vbCrLf }", Color.Green, RichTextBox1)
|
|||
|
|
Return True
|
|||
|
|
End Function
|
|||
|
|
|
|||
|
|
Private Sub CheckBox2_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox2.CheckedChanged
|
|||
|
|
IsIsAgreement = CheckBox2.Checked
|
|||
|
|
IsAgreement = IsIsAgreement
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Public DbConnString As String = "Server=blv-cloud-db.mysql.rds.aliyuncs.com;Port=3307;Database=keypresstest;Uid=blv_rcu;Pwd=fnadiaJDIJ7546;charset=utf8;"
|
|||
|
|
|
|||
|
|
'写入mysql
|
|||
|
|
Private Function WriteTomysql(dic As Dictionary(Of String, String)) As Boolean
|
|||
|
|
Using db As New DbExecutor(DbExecutor.DbTypeEnum.Mysql, DbConnString)
|
|||
|
|
Try
|
|||
|
|
db.Open()
|
|||
|
|
Dim caint = db.ExecuteNonQuery(db.CmdHelper.Insert("Blv_tempkeypresstest", dic))
|
|||
|
|
If caint = 0 Then
|
|||
|
|
'result = "Mysql入库失败!"
|
|||
|
|
'MsgBox($"Mysql入库失败!!!{vbCrLf }")
|
|||
|
|
setToolStripLabel2color($"Mysql入库失败!!!", Color.Red, RichTextBox1)
|
|||
|
|
Return False
|
|||
|
|
End If
|
|||
|
|
db.Close()
|
|||
|
|
Catch ex As Exception
|
|||
|
|
'result = $"Mysql入库失败!{ex.Message}"
|
|||
|
|
'MsgBox($"Mysql入库失败!!!{vbCrLf }原因:{vbCrLf }{ex.Message }")
|
|||
|
|
setToolStripLabel2color($"Mysql入库失败!!!原因:{ex.Message }", Color.Red, RichTextBox1)
|
|||
|
|
Return False
|
|||
|
|
End Try
|
|||
|
|
|
|||
|
|
'
|
|||
|
|
End Using
|
|||
|
|
|
|||
|
|
setToolStripLabel2color($"Mysql入库成功!!!{vbCrLf }", Color.Green, RichTextBox1)
|
|||
|
|
Return True
|
|||
|
|
End Function
|
|||
|
|
|
|||
|
|
|
|||
|
|
'写入到表格
|
|||
|
|
'Private Sub WriteToTable(dic As Dictionary(Of String, String))
|
|||
|
|
' If Me.InvokeRequired = True Then
|
|||
|
|
' Dim dd As New DelegateWriteToTable(AddressOf WriteToTable)
|
|||
|
|
' Me.Invoke(dd, {dic})
|
|||
|
|
' Else
|
|||
|
|
' Grid_table.AddItem("")
|
|||
|
|
' Dim con As Integer = 0
|
|||
|
|
' Dim str As String = String.Empty
|
|||
|
|
' For i = 1 To Grid_table.Cols - 1
|
|||
|
|
' str = Grid_table.Cell(0, i).Text
|
|||
|
|
' If dic.ContainsKey(str) Then
|
|||
|
|
' Grid_table.Cell(Grid_table.Rows - 1, i).Text = dic(str)
|
|||
|
|
' Else
|
|||
|
|
' con += 1
|
|||
|
|
' End If
|
|||
|
|
' Next
|
|||
|
|
' If dic.Item("测试结果") = "1" Then
|
|||
|
|
|
|||
|
|
' Grid_table.Range(Grid_table.Rows - 1, 1, Grid_table.Rows - 1, Grid_table.Cols - 1).ForeColor = Color.Green
|
|||
|
|
' Grid_table.Range(Grid_table.Rows - 1, 1, Grid_table.Rows - 1, Grid_table.Cols - 1).FontBold = True
|
|||
|
|
' Else
|
|||
|
|
' Grid_table.Range(Grid_table.Rows - 1, 1, Grid_table.Rows - 1, Grid_table.Cols - 1).ForeColor = Color.Red
|
|||
|
|
' Grid_table.Range(Grid_table.Rows - 1, 1, Grid_table.Rows - 1, Grid_table.Cols - 1).FontBold = True
|
|||
|
|
|
|||
|
|
' End If
|
|||
|
|
' End If
|
|||
|
|
|
|||
|
|
'End Sub
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
End Class
|