591 lines
21 KiB
VB.net
591 lines
21 KiB
VB.net
|
|
Imports System.IO.Ports
|
|||
|
|
Imports System.Text
|
|||
|
|
Imports System.Threading
|
|||
|
|
Imports SharedFunction
|
|||
|
|
Public Class Form1
|
|||
|
|
|
|||
|
|
#Region "窗体加载"
|
|||
|
|
|
|||
|
|
'富文本打印变量
|
|||
|
|
Public G_RichTextPrint As RichTextPrint
|
|||
|
|
Public G_CommunicationProtocol As CommunicationProtocol
|
|||
|
|
|
|||
|
|
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
|
|||
|
|
Text = $"{Application.ProductName}_V{Application.ProductVersion}"
|
|||
|
|
G_RichTextPrint = New RichTextPrint(RichTextBox1)
|
|||
|
|
G_CommunicationProtocol = New CommunicationProtocol(G_RichTextPrint, SerialPort1)
|
|||
|
|
G_CommunicationProtocol.AddControlDic(&H18, Label4)
|
|||
|
|
G_CommunicationProtocol.AddControlDic(&H19, TextBox6)
|
|||
|
|
|
|||
|
|
recvBufferli = New List(Of Byte)()
|
|||
|
|
End Sub
|
|||
|
|
#End Region
|
|||
|
|
|
|||
|
|
|
|||
|
|
#Region "串口事务"
|
|||
|
|
|
|||
|
|
Public isread As Boolean = False '串口关闭标志
|
|||
|
|
Public isListen As Boolean = False '串口等待关闭标志
|
|||
|
|
Private Sub Btn_OpenPort_Click(sender As Object, e As EventArgs) Handles Btn_OpenPort.Click
|
|||
|
|
If Btn_OpenPort.Text = "关闭" Then
|
|||
|
|
Btn_OpenPort.Text = "打开"
|
|||
|
|
Btn_OpenPort.BackColor = Color.Transparent
|
|||
|
|
Cbo_Port.Enabled = True
|
|||
|
|
Cbo_Baud.Enabled = True
|
|||
|
|
G_CommunicationProtocol.setIsFlowList(False)
|
|||
|
|
G_CommunicationProtocol.ClearFlowNode(True)
|
|||
|
|
SharedFunction.CloseSerial(SerialPort1, isread, isListen)
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
Else
|
|||
|
|
|
|||
|
|
Cbo_Port.Enabled = False
|
|||
|
|
Cbo_Baud.Enabled = False
|
|||
|
|
Btn_OpenPort.Text = "关闭"
|
|||
|
|
Btn_OpenPort.BackColor = Color.OrangeRed
|
|||
|
|
Dim vmbaud As Integer = 0
|
|||
|
|
'判断端口号是否合法
|
|||
|
|
If String.IsNullOrEmpty(Cbo_Port.Text) Then
|
|||
|
|
MsgBox("请选择端口号!")
|
|||
|
|
Btn_OpenPort_Click(Nothing, Nothing)
|
|||
|
|
Return
|
|||
|
|
End If
|
|||
|
|
'判断波特率是否合法
|
|||
|
|
If String.IsNullOrEmpty(Cbo_Baud.Text) OrElse Not Integer.TryParse(Cbo_Baud.Text, vmbaud) Then
|
|||
|
|
MsgBox("请选择波特率!")
|
|||
|
|
Btn_OpenPort_Click(Nothing, Nothing)
|
|||
|
|
Return
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
'打开串口
|
|||
|
|
If SharedFunction.OpenSerial(SerialPort1, Cbo_Port.Text, vmbaud) Then
|
|||
|
|
Else
|
|||
|
|
MsgBox("串口打开失败!")
|
|||
|
|
Btn_OpenPort_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()
|
|||
|
|
|
|||
|
|
G_RichTextPrint.AddQueue(RichTextBox1, New RichTextNodeConfig($"RX:", Color.Green, New Font("宋体", 8), buf), 1)
|
|||
|
|
|
|||
|
|
G_CommunicationProtocol.ProcessRecvData(buf)
|
|||
|
|
|
|||
|
|
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
isListen = False
|
|||
|
|
Catch ex As Exception
|
|||
|
|
isListen = False
|
|||
|
|
'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 Form1_FormClosed(sender As Object, e As FormClosedEventArgs) Handles MyBase.FormClosed
|
|||
|
|
Timer1.Enabled = False
|
|||
|
|
If Not IsNothing(G_RichTextPrint) Then
|
|||
|
|
G_RichTextPrint.Close()
|
|||
|
|
End If
|
|||
|
|
If SerialPort1.IsOpen Then
|
|||
|
|
SharedFunction.CloseSerial(SerialPort1, isread, isListen)
|
|||
|
|
End If
|
|||
|
|
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
|
|||
|
|
|
|||
|
|
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
|
|||
|
|
If G_CommunicationProtocol.getIsFlowList Then
|
|||
|
|
MsgBox("正在通信中!")
|
|||
|
|
Return
|
|||
|
|
Else
|
|||
|
|
G_CommunicationProtocol.ClearFlowNode()
|
|||
|
|
G_CommunicationProtocol.setIsFlowList(True)
|
|||
|
|
End If
|
|||
|
|
Dim li As List(Of Byte) = New List(Of Byte)()
|
|||
|
|
Dim OSDstr As String = TextBox1.Text
|
|||
|
|
Dim OSDbuf As Byte() = Encoding.ASCII.GetBytes(OSDstr)
|
|||
|
|
If IsNothing(OSDbuf) OrElse OSDbuf.Length = 0 Then
|
|||
|
|
MsgBox("请输入正确的OSD内容!")
|
|||
|
|
Return
|
|||
|
|
End If
|
|||
|
|
li.Add(OSDbuf.Length)
|
|||
|
|
li.AddRange(OSDbuf)
|
|||
|
|
|
|||
|
|
OSDbuf = NT_CAM.PackData(&HA0, li.ToArray)
|
|||
|
|
Dim gSendNode As New SendNode(1)
|
|||
|
|
|
|||
|
|
gSendNode.SetSendData(OSDbuf)
|
|||
|
|
G_CommunicationProtocol.AddFlowNode("设置OSD内容", gSendNode)
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button7.Click, Button6.Click, Button5.Click, Button4.Click, Button3.Click, Button2.Click
|
|||
|
|
|
|||
|
|
If G_CommunicationProtocol.getIsFlowList Then
|
|||
|
|
MsgBox("正在通信中!")
|
|||
|
|
Return
|
|||
|
|
Else
|
|||
|
|
G_CommunicationProtocol.ClearFlowNode()
|
|||
|
|
G_CommunicationProtocol.setIsFlowList(True)
|
|||
|
|
End If
|
|||
|
|
'获取当前按钮
|
|||
|
|
Dim btn As Button = DirectCast(sender, Button)
|
|||
|
|
'获取当前按钮的+Tag值
|
|||
|
|
Dim ntag As Integer = CInt(btn.Tag)
|
|||
|
|
Dim OSDbuf As Byte() = {ntag}
|
|||
|
|
|
|||
|
|
G_CommunicationProtocol.ClearFlowNode()
|
|||
|
|
OSDbuf = NT_CAM.PackData(&HA1, OSDbuf)
|
|||
|
|
Dim gSendNode As New SendNode(1)
|
|||
|
|
G_CommunicationProtocol.setIsFlowList(True)
|
|||
|
|
gSendNode.SetSendData(OSDbuf)
|
|||
|
|
G_CommunicationProtocol.AddFlowNode("设置报警状态", gSendNode)
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
Private Sub Button9_Click(sender As Object, e As EventArgs) Handles Button9.Click, Button8.Click
|
|||
|
|
If G_CommunicationProtocol.getIsFlowList Then
|
|||
|
|
MsgBox("正在通信中!")
|
|||
|
|
Return
|
|||
|
|
Else
|
|||
|
|
G_CommunicationProtocol.ClearFlowNode()
|
|||
|
|
G_CommunicationProtocol.setIsFlowList(True)
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
'获取当前按钮
|
|||
|
|
Dim btn As Button = DirectCast(sender, Button)
|
|||
|
|
'获取当前按钮的+Tag值
|
|||
|
|
Dim ntag As Integer = CInt(btn.Tag)
|
|||
|
|
Dim nComb, mComb As Integer
|
|||
|
|
'获取下拉框数值
|
|||
|
|
If Integer.TryParse(ComboBox1.Text.Trim, nComb) = False Then
|
|||
|
|
MsgBox("请输入正确的音乐序号!")
|
|||
|
|
Return
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
If Integer.TryParse(ComboBox3.Text.Trim, mComb) = False Then
|
|||
|
|
MsgBox("请输入正确的音乐序号!")
|
|||
|
|
Return
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
|
|||
|
|
Dim OSDbuf As Byte() = {mComb, nComb, 0, 1} '{ntag, nComb}
|
|||
|
|
|
|||
|
|
G_CommunicationProtocol.ClearFlowNode()
|
|||
|
|
OSDbuf = NT_CAM.PackData(&H21, OSDbuf)
|
|||
|
|
Dim gSendNode As New SendNode(1)
|
|||
|
|
G_CommunicationProtocol.setIsFlowList(True)
|
|||
|
|
gSendNode.SetSendData(OSDbuf)
|
|||
|
|
G_CommunicationProtocol.AddFlowNode("播放语音", gSendNode)
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Private Sub Button10_Click(sender As Object, e As EventArgs) Handles Button10.Click
|
|||
|
|
'获取TextBox2文本
|
|||
|
|
Dim OSDstr As String = TextBox2.Text
|
|||
|
|
'将文本转HEX 数据
|
|||
|
|
If G_CommunicationProtocol.getIsFlowList Then
|
|||
|
|
MsgBox("正在通信中!")
|
|||
|
|
Return
|
|||
|
|
Else
|
|||
|
|
G_CommunicationProtocol.ClearFlowNode()
|
|||
|
|
G_CommunicationProtocol.setIsFlowList(True)
|
|||
|
|
End If
|
|||
|
|
G_CommunicationProtocol.ClearFlowNode()
|
|||
|
|
OSDstr = SharedFunction.StringToHexString(OSDstr)
|
|||
|
|
If IsNothing(OSDstr) OrElse OSDstr.Length = 0 Then
|
|||
|
|
MsgBox("请输入正确的透传数据!")
|
|||
|
|
Return
|
|||
|
|
End If
|
|||
|
|
Dim OSDbuf As Byte() = SharedFunction.HexStringToByte(OSDstr)
|
|||
|
|
OSDbuf = NT_CAM.PackData(&H17, OSDbuf)
|
|||
|
|
Dim gSendNode As New SendNode(1)
|
|||
|
|
gSendNode.SetSendData(OSDbuf)
|
|||
|
|
G_CommunicationProtocol.setIsFlowList(True)
|
|||
|
|
G_CommunicationProtocol.AddFlowNode("透传命令", gSendNode)
|
|||
|
|
'Console.WriteLine(OSDstr)
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
|
|||
|
|
Private Sub TextBox2_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox2.KeyPress, TextBox5.KeyPress
|
|||
|
|
e.Handled = Not $"0123456789ABCDEFabcdef{vbBack} ".Contains(e.KeyChar) '如果要只允许输入数字,
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Private Sub SplitContainer2_Panel2_Click(sender As Object, e As EventArgs)
|
|||
|
|
Dim btn As Button = DirectCast(sender, Button)
|
|||
|
|
If G_CommunicationProtocol.getIsFlowList Then
|
|||
|
|
MsgBox("正在通信中!")
|
|||
|
|
Return
|
|||
|
|
Else
|
|||
|
|
G_CommunicationProtocol.ClearFlowNode()
|
|||
|
|
G_CommunicationProtocol.setIsFlowList(True)
|
|||
|
|
End If
|
|||
|
|
'获取当前按钮的+Tag值
|
|||
|
|
Dim nComb As Byte() = SharedFunction.HexStringToByte(ComboBox1.Text.Trim)
|
|||
|
|
If IsNothing(nComb) OrElse nComb.Length = 0 Then
|
|||
|
|
MsgBox("请输入正确的命令!")
|
|||
|
|
Return
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
Dim ntag As Integer = CInt(btn.Tag)
|
|||
|
|
Dim OSDbuf As Byte() = {ntag}
|
|||
|
|
|
|||
|
|
G_CommunicationProtocol.ClearFlowNode()
|
|||
|
|
OSDbuf = NT_CAM.PackData(nComb(0), OSDbuf)
|
|||
|
|
Dim gSendNode As New SendNode(1)
|
|||
|
|
gSendNode.SetSendData(OSDbuf)
|
|||
|
|
G_CommunicationProtocol.setIsFlowList(True)
|
|||
|
|
G_CommunicationProtocol.AddFlowNode("IPC请求回复", gSendNode)
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Private Sub ToolStripButton1_Click(sender As Object, e As EventArgs) Handles ToolStripButton1.Click
|
|||
|
|
'清空富文本
|
|||
|
|
RichTextBox1.Clear()
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Private Sub ComboBox1_DropDown(sender As Object, e As EventArgs) Handles ComboBox1.DropDown, ComboBox3.DropDown
|
|||
|
|
'将sender 转换为ComboBox
|
|||
|
|
Dim mcomboBox As ComboBox = DirectCast(sender, ComboBox)
|
|||
|
|
|
|||
|
|
mcomboBox.Items.Clear()
|
|||
|
|
'添加1到255
|
|||
|
|
For i As Integer = 1 To 255
|
|||
|
|
mcomboBox.Items.Add(i)
|
|||
|
|
Next
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Private Sub Button13_Click(sender As Object, e As EventArgs) Handles Button13.Click
|
|||
|
|
Dim OSDstr As String = TextBox3.Text
|
|||
|
|
Dim OSDbuf As Byte() = Encoding.ASCII.GetBytes(OSDstr)
|
|||
|
|
If IsNothing(OSDbuf) OrElse OSDbuf.Length = 0 Then
|
|||
|
|
MsgBox("请输入正确的产品ID!")
|
|||
|
|
Return
|
|||
|
|
End If
|
|||
|
|
If G_CommunicationProtocol.getIsFlowList Then
|
|||
|
|
MsgBox("正在通信中!")
|
|||
|
|
Return
|
|||
|
|
Else
|
|||
|
|
G_CommunicationProtocol.ClearFlowNode()
|
|||
|
|
G_CommunicationProtocol.setIsFlowList(True)
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
OSDbuf = NT_CAM.PackData(&H9, OSDbuf)
|
|||
|
|
Dim gSendNode As New SendNode(1)
|
|||
|
|
G_CommunicationProtocol.setIsFlowList(True)
|
|||
|
|
gSendNode.SetSendData(OSDbuf)
|
|||
|
|
G_CommunicationProtocol.AddFlowNode("设置产品ID", gSendNode)
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click
|
|||
|
|
'获取TextBox2文本
|
|||
|
|
Dim OSDstr As String = TextBox5.Text
|
|||
|
|
'将文本转HEX 数据
|
|||
|
|
If G_CommunicationProtocol.getIsFlowList Then
|
|||
|
|
MsgBox("正在通信中!")
|
|||
|
|
Return
|
|||
|
|
Else
|
|||
|
|
G_CommunicationProtocol.ClearFlowNode()
|
|||
|
|
G_CommunicationProtocol.setIsFlowList(True)
|
|||
|
|
End If
|
|||
|
|
G_CommunicationProtocol.ClearFlowNode()
|
|||
|
|
OSDstr = SharedFunction.StringToHexString(OSDstr)
|
|||
|
|
If IsNothing(OSDstr) OrElse OSDstr.Length = 0 Then
|
|||
|
|
MsgBox("请输入正确的透传数据!")
|
|||
|
|
Return
|
|||
|
|
End If
|
|||
|
|
Dim OSDbuf As Byte() = SharedFunction.HexStringToByte(OSDstr)
|
|||
|
|
OSDbuf = NT_CAM.PackData(&H20, OSDbuf)
|
|||
|
|
Dim gSendNode As New SendNode(1)
|
|||
|
|
gSendNode.SetSendData(OSDbuf)
|
|||
|
|
G_CommunicationProtocol.setIsFlowList(True)
|
|||
|
|
G_CommunicationProtocol.AddFlowNode("透传命令", gSendNode)
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Private Sub Button14_Click(sender As Object, e As EventArgs) Handles Button14.Click
|
|||
|
|
Dim OSDstr As String = TextBox4.Text
|
|||
|
|
Dim OSDbuf As Byte() = Encoding.ASCII.GetBytes(OSDstr)
|
|||
|
|
If IsNothing(OSDbuf) OrElse OSDbuf.Length = 0 Then
|
|||
|
|
MsgBox("请输入正确的产品ID!")
|
|||
|
|
Return
|
|||
|
|
End If
|
|||
|
|
If G_CommunicationProtocol.getIsFlowList Then
|
|||
|
|
MsgBox("正在通信中!")
|
|||
|
|
Return
|
|||
|
|
Else
|
|||
|
|
G_CommunicationProtocol.ClearFlowNode()
|
|||
|
|
G_CommunicationProtocol.setIsFlowList(True)
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
OSDbuf = NT_CAM.PackData(&H17, OSDbuf)
|
|||
|
|
Dim gSendNode As New SendNode(1)
|
|||
|
|
G_CommunicationProtocol.setIsFlowList(True)
|
|||
|
|
gSendNode.SetSendData(OSDbuf)
|
|||
|
|
G_CommunicationProtocol.AddFlowNode("设置产品ID", gSendNode)
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Private Sub TextBox7_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox7.KeyPress
|
|||
|
|
e.Handled = Not $"0123456789{vbBack} ".Contains(e.KeyChar) '如果要只允许输入数字,
|
|||
|
|
End Sub
|
|||
|
|
Public SendingInterval As Integer = 0
|
|||
|
|
Public SendingInterval1 As Integer = 0
|
|||
|
|
Public SendingDate As String = ""
|
|||
|
|
Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged
|
|||
|
|
If CheckBox1.Checked Then
|
|||
|
|
TextBox7.Enabled = False
|
|||
|
|
TextBox8.Enabled = False
|
|||
|
|
'获取TextBox7 代表的发生间隔
|
|||
|
|
SendingInterval = 30
|
|||
|
|
|
|||
|
|
Integer.TryParse(TextBox7.Text, SendingInterval)
|
|||
|
|
SendingDate = TextBox8.Text
|
|||
|
|
If SendingInterval < 1 AndAlso String.IsNullOrEmpty(SendingDate) Then
|
|||
|
|
MsgBox("请输入正确的发送间隔和发送内容!")
|
|||
|
|
CheckBox1.Checked = False
|
|||
|
|
Return
|
|||
|
|
End If
|
|||
|
|
'开启定时任务
|
|||
|
|
|
|||
|
|
Timer1.Enabled = True
|
|||
|
|
|
|||
|
|
Else
|
|||
|
|
Timer1.Enabled = False
|
|||
|
|
TextBox7.Enabled = True
|
|||
|
|
TextBox8.Enabled = True
|
|||
|
|
End If
|
|||
|
|
End Sub
|
|||
|
|
Public Timer1cnt As Integer = 0
|
|||
|
|
Public Timer2cnt As Integer = 0
|
|||
|
|
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
|
|||
|
|
If Timer1cnt = SendingInterval Then
|
|||
|
|
Timer1cnt = 1
|
|||
|
|
|
|||
|
|
Dim OSDstr As String = SendingDate
|
|||
|
|
'将文本转HEX 数据
|
|||
|
|
If G_CommunicationProtocol.getIsFlowList Then
|
|||
|
|
MsgBox("正在通信中!")
|
|||
|
|
Return
|
|||
|
|
Else
|
|||
|
|
G_CommunicationProtocol.ClearFlowNode()
|
|||
|
|
G_CommunicationProtocol.setIsFlowList(True)
|
|||
|
|
End If
|
|||
|
|
G_CommunicationProtocol.ClearFlowNode()
|
|||
|
|
OSDstr = SharedFunction.StringToHexString(OSDstr)
|
|||
|
|
If IsNothing(OSDstr) OrElse OSDstr.Length = 0 Then
|
|||
|
|
MsgBox("请输入正确的透传数据!")
|
|||
|
|
Return
|
|||
|
|
End If
|
|||
|
|
Dim OSDbuf As Byte() = SharedFunction.HexStringToByte(OSDstr)
|
|||
|
|
OSDbuf = NT_CAM.PackData(&H20, OSDbuf)
|
|||
|
|
Dim gSendNode As New SendNode(1, 1)
|
|||
|
|
gSendNode.SetSendData(OSDbuf)
|
|||
|
|
gSendNode.IsRecvData = False
|
|||
|
|
G_CommunicationProtocol.setIsFlowList(True)
|
|||
|
|
G_CommunicationProtocol.AddFlowNode("透传命令", gSendNode)
|
|||
|
|
|
|||
|
|
Else
|
|||
|
|
Timer1cnt += 1
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Private Sub TextBox8_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox8.KeyPress
|
|||
|
|
e.Handled = Not $"0123456789ABCDEFabcdef{vbBack} ".Contains(e.KeyChar) '如果要只允许输入数字,
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Private Sub Button16_Click(sender As Object, e As EventArgs) Handles Button16.Click
|
|||
|
|
'获取TextBox2文本 ‘55 AA 01 0B 00 00 0B
|
|||
|
|
'Dim OSDstr As String = TextBox5.Text
|
|||
|
|
'将文本转HEX 数据
|
|||
|
|
If G_CommunicationProtocol.getIsFlowList Then
|
|||
|
|
MsgBox("正在通信中!")
|
|||
|
|
Return
|
|||
|
|
Else
|
|||
|
|
G_CommunicationProtocol.ClearFlowNode()
|
|||
|
|
G_CommunicationProtocol.setIsFlowList(True)
|
|||
|
|
End If
|
|||
|
|
G_CommunicationProtocol.ClearFlowNode()
|
|||
|
|
'OSDstr = SharedFunction.StringToHexString(OSDstr)
|
|||
|
|
'If IsNothing(OSDstr) OrElse OSDstr.Length = 0 Then
|
|||
|
|
' MsgBox("请输入正确的透传数据!")
|
|||
|
|
' Return
|
|||
|
|
'End If
|
|||
|
|
Dim OSDbuf As Byte() '= SharedFunction.HexStringToByte(OSDstr)
|
|||
|
|
OSDbuf = {&H55, &HAA, &H1, &HB, &H0, &H0, &HB}
|
|||
|
|
Dim gSendNode As New SendNode(1)
|
|||
|
|
gSendNode.SetSendData(OSDbuf)
|
|||
|
|
G_CommunicationProtocol.setIsFlowList(True)
|
|||
|
|
G_CommunicationProtocol.AddFlowNode("透传命令", gSendNode)
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Private Sub TextBox9_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox9.KeyPress
|
|||
|
|
e.Handled = Not $"0123456789ABCDEFabcdef{vbBack} ".Contains(e.KeyChar) '如果要只允许输入数字,
|
|||
|
|
End Sub
|
|||
|
|
Public OSDbufSN As Integer = 0
|
|||
|
|
Private Sub CheckBox2_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox2.CheckedChanged
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
If CheckBox2.Checked Then
|
|||
|
|
|
|||
|
|
'判断串口是否打开
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
TextBox9.Enabled = False
|
|||
|
|
|
|||
|
|
'获取TextBox7 代表的发生间隔
|
|||
|
|
SendingInterval1 = 500
|
|||
|
|
|
|||
|
|
Integer.TryParse(TextBox9.Text, SendingInterval1)
|
|||
|
|
'SendingDate = TextBox8.Text
|
|||
|
|
If SendingInterval1 < 1 Then
|
|||
|
|
MsgBox("请输入正确的发送间隔!")
|
|||
|
|
CheckBox2.Checked = False
|
|||
|
|
Return
|
|||
|
|
End If
|
|||
|
|
'开启定时任务
|
|||
|
|
OSDbufSN = 1
|
|||
|
|
Timer2.Interval = 10
|
|||
|
|
SendingInterval1 = SendingInterval1 / 10
|
|||
|
|
|
|||
|
|
Timer2.Start()
|
|||
|
|
|
|||
|
|
Else
|
|||
|
|
OSDbufSN = 1
|
|||
|
|
'Timer2.Enabled = False
|
|||
|
|
Timer2.Stop()
|
|||
|
|
TextBox9.Enabled = True
|
|||
|
|
|
|||
|
|
End If
|
|||
|
|
End Sub
|
|||
|
|
Public cntSendingInterval1 As Integer = 0
|
|||
|
|
Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
|
|||
|
|
' If Timer2cnt = SendingInterval1 Then
|
|||
|
|
' Timer2cnt = 1
|
|||
|
|
If cntSendingInterval1 < SendingInterval1 Then
|
|||
|
|
cntSendingInterval1 = cntSendingInterval1 + 1
|
|||
|
|
Else
|
|||
|
|
If G_CommunicationProtocol.getIsFlowList1 Then
|
|||
|
|
cntSendingInterval1 = SendingInterval1
|
|||
|
|
Return
|
|||
|
|
'MsgBox("正在通信中!")
|
|||
|
|
Else
|
|||
|
|
G_CommunicationProtocol.ClearFlowNode()
|
|||
|
|
G_CommunicationProtocol.setIsFlowList(True)
|
|||
|
|
End If
|
|||
|
|
Dim li As List(Of Byte) = New List(Of Byte)()
|
|||
|
|
Dim m_snsn As Integer = GetNewSNTimeDate(OSDbufSN)
|
|||
|
|
Dim snbuf As String = GetSnString(m_snsn)
|
|||
|
|
Dim OSDstr As String = $"R:{snbuf} B:{snbuf} D:{snbuf} TD:{snbuf} HD:{snbuf} S:{snbuf} HC:{snbuf} HR:{snbuf}"
|
|||
|
|
Dim OSDbuf As Byte() = Encoding.ASCII.GetBytes(OSDstr)
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
'If IsNothing(OSDbuf) OrElse OSDbuf.Length = 0 Then
|
|||
|
|
' MsgBox("请输入正确的OSD内容!")
|
|||
|
|
' Return
|
|||
|
|
'End If
|
|||
|
|
li.Add(OSDbuf.Length)
|
|||
|
|
li.AddRange(OSDbuf)
|
|||
|
|
|
|||
|
|
OSDbuf = NT_CAM.PackData(&HA0, li.ToArray)
|
|||
|
|
|
|||
|
|
OSDbuf(6) = 14
|
|||
|
|
OSDbuf(21) = 11
|
|||
|
|
OSDbuf(33) = 16
|
|||
|
|
OSDbuf(OSDbuf.Length - 1) = 0
|
|||
|
|
OSDbuf(OSDbuf.Length - 1) = SharedFunction.GetCheckSumMod2(OSDbuf)
|
|||
|
|
|
|||
|
|
Dim gSendNode As New SendNode(1)
|
|||
|
|
|
|||
|
|
gSendNode.SetSendData(OSDbuf, 800)
|
|||
|
|
G_CommunicationProtocol.ClearFlowNode()
|
|||
|
|
'G_CommunicationProtocol.setIsFlowList(True)
|
|||
|
|
G_CommunicationProtocol.AddFlowNode("设置OSD内容", gSendNode)
|
|||
|
|
Console.WriteLine("发送OSD内容")
|
|||
|
|
'Else
|
|||
|
|
' Timer2cnt += 1
|
|||
|
|
'End If
|
|||
|
|
cntSendingInterval1 = 0
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
Public Function GetNewSNTimeDate(ByRef sn As Integer) As Integer
|
|||
|
|
Dim result As Integer = 1
|
|||
|
|
If sn > 9 Then
|
|||
|
|
result = 1
|
|||
|
|
sn = 1
|
|||
|
|
Else
|
|||
|
|
sn = sn + 1
|
|||
|
|
result = sn
|
|||
|
|
End If
|
|||
|
|
Return result
|
|||
|
|
End Function
|
|||
|
|
Public Function GetSnString(sn As Integer) As String
|
|||
|
|
'如果sn只有个位数则前面补0
|
|||
|
|
Dim snbuf As String
|
|||
|
|
'判断sn是否小于10 ,小于则前面补0
|
|||
|
|
If sn < 10 Then
|
|||
|
|
snbuf = $"0{sn}"
|
|||
|
|
Else
|
|||
|
|
snbuf = sn.ToString
|
|||
|
|
End If
|
|||
|
|
Return snbuf
|
|||
|
|
End Function
|
|||
|
|
|
|||
|
|
#End Region
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
End Class
|