16,554
社区成员
发帖
与我相关
我的任务
分享
Dim sHex
Dim BinData
Dim sBin As String
Const s1 = "0000101001101111000", s2 = "0125A4936DB7FEC8"
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
TextBox4.Text = "F12B"
Call HexToBin(TextBox4.Text)
TextBox5.Text = BinData
End Sub
Public Function HexToBin(ByVal sHex As String) As String
Dim i As Integer
sHex = UCase(sHex)
For i = 1 To Len(sHex)
sBin = sBin & Mid(s1, InStr(1, s2, Mid(sHex, i, 1)), 4)
Next i
HexToBin = sBin
BinData = sBin
End Function
Option Explicit
Dim sj As String
Dim i As Integer
Private Sub Command1_Click()
For i = 1 To Len(sj) Step 4
Text2 = Text2 & Chr(Val(" &H" & Mid(sj, i, 2)))
Next
End Sub
Private Sub Form_Load()
sj = "02 32 30 20 20 30 30 30 30 38 20 30 30 30 30 30 0D "
Text1 = sj
Text2 = ""
End Sub
Public Class Form1
Dim mSTR As String
Dim strData As String
Dim strDat As String
Dim mRecvByte() As Byte
Dim Hexsj As String
Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
Dim mSize As Integer = Me.SerialPort1.BytesToRead
ReDim mRecvByte(mSize - 1)
SerialPort1.Read(mRecvByte, 0, mSize)
BeginInvoke(New EventHandler(AddressOf zhuanhuan), SerialPort1.BytesToRead()) '使用委托方式显示接收到的字符串
End Sub
Sub zhuanhuan(ByVal sender As System.Object, ByVal e As System.EventArgs) '委托
strDat = ""
TextBox1.Text = ""
Dim i As Integer
For i = 0 To UBound(mRecvByte) 'mSize - 1
strData = strData & IIf(mRecvByte(i) > 15, Hex(mRecvByte(i)), "0" & Hex(mRecvByte(i))) '& " "
Next
If Mid(strData, 1, 2) = "02" And Mid(strData, 33, 2) = "0D" Then
For i = 1 To Len(strData) Step 2
TextBox1.Text = TextBox1.Text & Chr(Val(" &H" & Mid(strData, i, 2)))
Next
'此处添加状态字节处理代码,涉及2-16进制转换和位操作
TextBox1.Text = strData
strData = ""
End If
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
SerialPort1.BaudRate = 1200 '波特率设为
SerialPort1.PortName = "com1" '端口为串口COM1
SerialPort1.ReceivedBytesThreshold = 1
SerialPort1.Parity = IO.Ports.Parity.Even
SerialPort1.DataBits = 7
If SerialPort1.IsOpen = False Then SerialPort1.Open() '打开串口
TextBox1.Text = ""
End Sub
End Class