注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
a26409310的个人空间 https://home.eeworld.com.cn/space-uid-263238.html [收藏] [复制] [分享] [RSS]
日志

vb计算crc form4

已有 416 次阅读2010-4-12 18:27

'form1--form8,8个窗体,一个模块

’form4

Private Sub Command1_Click()

Text1.Text = ""

Text2.Text = ""

End Sub

Private Sub Command2_Click()

Text3.Text = ""

Text4.Text = ""

End Sub

Private Sub Command3_Click()

End

End Sub

Private Sub Command4_Click()

Dim CRC() As Byte

Dim s1 As String

Dim lens1 As Integer

Dim d() As Byte '待传输数据

Dim sd() As String '显示的字符

Text6.Text = ""

s1 = Replace(Text5.Text, " ", "") '去掉所有空格

lens1 = Len(s1)

If lens1 Mod 2 <> 0 Or s1 = ""

Then

MsgBox

"数据长度有误!", 64, "信息提示!! "

Text5.SetFocus

Exit

Sub

End If

ReDim sd(lens1)

For i = 0 To lens1 - 1

sd(i) =

Asc(Mid(s1, i + 1, 1)) '判断是否为十六进制字符

If (sd(i)

> 47 And sd(i) < 58) Or (sd(i)

> 64 And sd(i) < 71) Or (sd(i)

> 96 And sd(i) < 103) Then

Else

MsgBox "数据输入有误!", 64, "信息提示!! "

Text5.SetFocus

Exit Sub

End If

Next i

ReDim d(lens1 \ 2) As Byte

d(lens1 \ 2) = 0

For i = 0 To (lens1 \ 2) - 1 ' Step 2

d(i) =

"&H" & Mid(s1, i * 2 + 1, 2)

'd(lens1 \

2) = Val(d(lens1 \ 2)) + Val(d(i)) And &HFF

Next i

d(lens1 \ 2) = sum(d)

ReDim sd(lens1 \ 2) As String

For i = 0 To lens1 \ 2

If Val(d(i))

< 16 Then

sd(i) = "0" & Hex(d(i))

Else

sd(i) = Hex(d(i))

End If

If

Text6.Text = "" Then

Text6.Text = sd(i)

Else

Text6.Text = Text6.Text & " " &

sd(i)

End If

Next i

Label11.Caption = " " & lens1 \ 2

Label13.Caption = " " & lens1 \ 2 + 1

End Sub

Private Sub Command5_Click()

Text5.Text = ""

Text5.SetFocus

End Sub

Private Sub Command6_Click()

Label11.Caption = " " & 0

Label13.Caption = " " & 0

End Sub

Private Sub Command7_Click()

Unload Me

Form1.Show

End Sub

Private Sub Option1_Click(Index As Integer)

Dim CRC(1) As Byte

Dim d() As Byte '待传输数据

Dim sd() As String '显示的字符

Dim s1 As String

Dim lens1 As Integer

Text2.Text = ""

If Text1.Text = "" Then

Text1.SetFocus

Exit Sub

End If

s1 = Replace(Text1.Text, " ", "")

lens1 = Len(s1)

ReDim sd(lens1)

For i = 0 To lens1 - 1

sd(i) = Asc(Mid(s1, i + 1, 1))

If (sd(i) > 47 And sd(i) < 58) Or

(sd(i) > 64 And sd(i) < 71) Or (sd(i)

> 96 And sd(i) < 103) Then

Else

MsgBox "地址输入有误!", 64, "信息提示!! "

Text1.SetFocus

Exit Sub

End If

Next i

If lens1 > 2 Then

MsgBox "地址长度输入有误!", 64, "信息提示!! "

Text1.SetFocus

Exit Sub

End If

ReDim d(4) As Byte

ReDim sd(4) As String

d(0) = "&H" & Text1.Text

d(1) = &H1

d(2) = Index + 1

CRC(0) = sum(d) '调用sum计算函数

d(3) = CRC(0)

For i = 0 To 3

If Val(d(i)) < 16 Then

sd(i) = "0" & Hex(d(i))

Else

sd(i) = Hex(d(i))

End If

If Text2.Text = "" Then

Text2.Text = sd(i)

Else

Text2.Text = Text2.Text & " " &

sd(i)

End If

Next i

Text2.Text = "5C" & " " &

Text2.Text

End Sub

Private Sub Text1_Change()

Dim CRC(1) As Byte

Dim d() As Byte '待传输数据

Dim sd() As String '显示的字符

Dim s1 As String

Dim lens1 As Integer

Text2.Text = ""

If Text1.Text = "" Then

Text1.SetFocus

Exit Sub

End If

s1 = Replace(Text1.Text, " ", "")

lens1 = Len(s1)

ReDim sd(lens1)

For i = 0 To lens1 - 1

sd(i) = Asc(Mid(s1, i + 1, 1))

If (sd(i) > 47 And sd(i) < 58) Or

(sd(i) > 64 And sd(i) < 71) Or (sd(i)

> 96 And sd(i) < 103) Then

Else

MsgBox "地址输入有误!", 64, "信息提示!! "

Text1.SetFocus

Exit Sub

End If

Next i

If lens1 > 2 Then

MsgBox "地址长度输入有误!", 64, "信息提示!! "

Text1.SetFocus

Exit Sub

End If

ReDim d(4) As Byte

ReDim sd(4) As String

d(0) = "&H" & Text1.Text

d(1) = &H1

d(2) = Index + 1

CRC(0) = sum(d) '调用sum计算函数

d(3) = CRC(0)

For i = 0 To 3

If Val(d(i)) < 16 Then

sd(i) = "0" & Hex(d(i))

Else

sd(i) = Hex(d(i))

End If

If Text2.Text = "" Then

Text2.Text = sd(i)

Else

Text2.Text = Text2.Text & " " &

sd(i)

End If

Next i

Text2.Text = "5C" & " " &

Text2.Text

End Sub

Private Sub Text3_KeyUp(KeyCode As Integer, Shift As

Integer)

Dim s1 As String

Dim lens1 As Integer

Dim sd() As String '显示的字符

Text4.Text = ""

s1 = Replace(Text3.Text, " ", "")

If s1 = "" Then

Exit

Sub

End If

lens1 = Len(s1)

ReDim sd(lens1)

For i = 0 To lens1 - 1

sd(i) =

Asc(Mid(s1, i + 1, 1))

If sd(i)

> 47 And sd(i) < 58 Then

Else

MsgBox "数据输入有误!", 64, "信息提示!! "

Text3.Text = ""

Text4.Text = ""

Text3.SetFocus

Exit Sub

End

If

Next i

If Val(s1) > 2147483647 Then

MsgBox

"数据最大量程为 2147483647!", 64, "信息提示!! "

Text3.Text =

""

Text4.Text =

""

Text3.SetFocus

Exit

Sub

End If

Text4.Text = Hex(s1)

'Text2.Text = Val(Text10.Text)

End Sub

Private Sub Text4_Keyup(KeyCode As Integer, Shift As Integer)

Dim s1 As String

Dim lens1 As Integer

Dim s2 As Long

Dim d() As Byte '待传输数据

Dim sd() As Integer '显示的字符

Text3.Text = ""

s1 = Replace(Text4.Text, " ", "")

If s1 = "" Then

Exit

Sub

End If

lens1 = Len(s1)

ReDim sd(lens1)

For i = 0 To lens1 - 1

sd(i) =

Asc(Mid(s1, i + 1, 1))

If (sd(i)

> 47 And sd(i) < 58) Or (sd(i)

> 64 And sd(i) < 71) Or (sd(i)

> 96 And sd(i) < 103) Then

Else

MsgBox "数据输入有误!", 64, "信息提示!! "

Text4.Text = ""

Text3.Text = ""

Text4.SetFocus

Exit Sub

End If

Next i

If lens1 > 8 Or (lens1 = 8 And sd(0)

> 57) Then

MsgBox

"数据最大量程为 7FFFFFFF !", 64, "信息提示!! "

Text4.Text =

""

Text3.Text =

""

Text4.SetFocus

Exit

Sub

Else

ReDim d(lens1) As Byte

s2 = 0

For i = 0 To lens1 - 1 ' Step 2

d(i) =

"&H" & Mid(s1, i + 1, 1)

s2 = s2 +

Val(d(i)) * 16 ^ (lens1 - 1 - i)

Next i

Text3.Text = s2

End If

End Sub

Private Sub Form_Load()

Text1.Text = "01"

Text2.Text = ""

Text3.Text = ""

Text4.Text = ""

Text5.Text = ""

Text6.Text = ""

Label11.Caption = " " & 0

Label13.Caption = " " & 0

Option1(0).Value = True

End Sub

分享

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章