vb代码转成java代码
Delegate Sub RecieveRefreshMethodDelegate(ByVal dbyte() As Byte, ByVal sta As Integer, ByVal len As Integer) '声明委托
Dim RecieveRefresh As New RecieveRefreshMethodDelegate(AddressOf TextBox_Display) '定义一个委托实例
Delegate Sub ProgressBarChangeMethodDelegate() '声明委托
Dim ProgressBarChange As New ProgressBarChangeMethodDelegate(AddressOf ProgressBar1Change) '定义一个委托实例
Dim SendBuf(200) As Byte
Dim RxBuf(100) As Byte
Dim RxCnt As Byte = 0
Dim BpsNum As Integer = 0
Dim BagTotal As Integer = &H8A1
Dim BagNum As Integer = 0
Dim LibTimFlag As Integer = 0
'CRC16校验
Function ChkCrc16(ByVal str() As Byte, ByVal sta As Integer, ByVal len As Integer) As String
Dim i As Integer = 0
Dim j As Integer = 0
Dim crc_register As Integer = 0
While len '总字节数
len -= 1
i = &H80 '一个字节8位,故循环8次
While i
If crc_register And &H8000 Then '高位为1则进行位或运算
crc_register <<= 1
crc_register = crc_register Mod 65536
crc_register = crc_register Xor &H1021
Else
crc_register <<= 1 '高位不为1,则乘2
End If
If str(j + sta) And i Then
crc_register = crc_register Xor &H1021 '加上本位的CRC码
End If
i = i / 2
End While
j += 1 '指向下一字节
End While
ChkCrc16 = crc_register '返回CRC-16校验码
End Function
'接收数据-触发接收事件
Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived '添加接受事件
Dim inDataLen As Integer = SerialPort1.BytesToRead()
If inDataLen > 0 Then
Dim inBytes(inDataLen - 1) As Byte, bytes As Byte = 0
SerialPort1.Read(inBytes, 0, inDataLen)
While inDataLen
inDataLen -= 1
If RxCnt Then
RxBuf(RxCnt) = inBytes(bytes)
RxCnt += 1
If RxCnt >= 11 And RxBuf(4) + 6 = RxCnt Then
If RxBuf(RxCnt - 1) = &HFE Then
'SerialPort1.Write(RxBuf, 0, RxCnt)
RxFun()
RxCnt = 0
Else
RxCnt = 0
End If
End If
Else
If inBytes(bytes) = &HFE Then
RxBuf(RxCnt) = inBytes(bytes)
RxCnt += 1
End If
End If
bytes += 1
End While
End If
End Sub
Sub RxFun()
Dim crc16num As Integer
crc16num = ChkCrc16(RxBuf, 5, RxBuf(4) - 2)
If (RxBuf(RxBuf(4) + 3) = ((crc16num >> 8) Mod 256)) And (RxBuf(RxBuf(4) + 4) = (crc16num Mod 256)) Then
Select Case RxBuf(5)
Case &H1
Select Case RxBuf(6)
End Select
Case &H11
Select Case RxBuf(6)
Case &H11
LibTimFlag = 0
LibLoad()
End Select
Case &H31
Select Case RxBuf(6)
Case &H1
If RxBuf(7) = 0 Then
'MessageBox.Show("地址设置成功", "提示")
Else
'MessageBox.Show("地址设置失败", "提示")
End If
Case &H2
If RxBuf(7) = 0 Then
'MessageBox.Show("波特率设置成功", "提示")
Else
'MessageBox.Show("波特率设置失败", "提示")
End If
Case &H3
If RxBuf(7) = 0 Then
'MessageBox.Show("日期与时间设置成功", "提示")
Else
'MessageBox.Show("日期与时间设置失败", "提示")
End If
Case &HA
If RxBuf(7) = 0 Then
'MessageBox.Show("显示屏状态设置成功", "提示")
Else
'MessageBox.Show("显示屏状态设置失败", "提示")
End If
End Select
Case &H32
Select Case RxBuf(6)
Case &H1
If RxBuf(7) = 0 Then
'MessageBox.Show("地址查询成功", "提示")
Else
'MessageBox.Show("地址查询失败", "提示")
End If
Case &H2
If RxBuf(7) = 0 Then
Timer1.Enabled = False
TextBox4.Invoke(RecieveRefresh, RxBuf, 8, RxBuf(4) - 5) '调用接收数据函数
'MessageBox.Show("波特率查询成功", "提示")
Else
'MessageBox.Show("波特率查询失败", "提示")
End If
Case &H3
If RxBuf(7) = 0 Then
TextBox4.Invoke(RecieveRefresh, RxBuf, 8, RxBuf(4) - 5) '调用接收数据函数
'MessageBox.Show("日期与时间查询成功", "提示")
Else
'MessageBox.Show("日期与时间查询失败", "提示")
End If
Case &HA
If RxBuf(7) = 0 Then
Select Case RxBuf(8)
Case 0
PictureBox2.BackColor = Color.Black
Case 1
PictureBox2.BackColor = Color.Red
End Select
'MessageBox.Show("显示屏状态查询成功", "提示")
Else
'MessageBox.Show("显示屏状态查询失败", "提示")
End If
Case &H41
If RxBuf(7) = 0 Then
TextBox4.Invoke(RecieveRefresh, RxBuf, 8, RxBuf(4) - 5) '调用接收数据函数
'MessageBox.Show("软件版本查询成功", "提示")
Else
'MessageBox.Show("软件版本查询失败", "提示")
End If
Case &H42
If RxBuf(7) = 0 Then
TextBox4.Invoke(RecieveRefresh, RxBuf, 8, RxBuf(4) - 5) '调用接收数据函数
'MessageBox.Show("硬件版本查询成功", "提示")
Else
'MessageBox.Show("硬件版本查询失败", "提示")
End If
End Select
End Select
Else
MessageBox.Show("返回数据校验码错误", "提示")
End If
End Sub