📄 lcd.frm
字号:
Top = 3360
Width = 3015
End
Begin VB.Label Label3
Caption = "注:汉字字符之前的ascii码字符的个数应为偶数个"
BeginProperty Font
Name = "隶书"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 1680
TabIndex = 7
Top = 6600
Width = 4815
End
Begin VB.Label Label2
Caption = "请输入第二行数据"
BeginProperty Font
Name = "隶书"
Size = 18
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 495
Left = 120
TabIndex = 3
Top = 1920
Width = 3015
End
Begin VB.Label Label1
Caption = "请输入第一行数据"
BeginProperty Font
Name = "隶书"
Size = 18
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 495
Left = 120
TabIndex = 2
Top = 600
Width = 3015
End
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Dim senddata(16) As Byte '发送数据数组
Dim senddata1(0) As Byte '发送数据数组
Private Sub Command3_Click()
MSComm1.PortOpen = False
Unload Me
End Sub
Private Sub Form_Load() '初始化
'串行口初始化
Call SCIinit(MSComm1, 1, "9600,N,8,1")
Text1.MaxLength = 16 '输入框限制16个字符
Text2.MaxLength = 16 '输入框限制16个字符
Text3.MaxLength = 16 '输入框限制16个字符
Text4.MaxLength = 16 '输入框限制16个字符
End Sub
Private Sub Command1_click(Index As Integer)
Dim i, count As Integer
Dim d1 As Double
Dim str, str1 As String
Dim temp As Byte
Dim ReceiveData() As Byte
MSComm1.OutBufferCount = 0 '清空输出缓冲区
count = 1
Select Case Index
Case 0
i = Len(Text1.Text) '取得第一行文本框的字符串长度
For i = 1 To Len(Text1.Text) '循环取得字符串中的字符
str = Mid(Text1.Text, i, 1)
str1 = Hex$(Asc(str)) '将取得的字符转换成十六进制数据
temp = "&H" & Mid$(str1, 1, 2) '转化成ASCII码
If count >= 17 Then '字符串超长
MsgBox "字符串超长"
GoTo exit1
Else
If temp > &H7F Then '为扩展ASCII码
If count >= 16 Then '字符串超长
MsgBox "字符串超长"
GoTo exit1
End If
senddata(count) = temp '取得扩展ASCII码高字节
temp = "&H" & Mid$(str1, 3, 2)
senddata(count + 1) = temp '取得扩展ASCII码低字节
count = count + 2 '数组下标加2
Else:
senddata(count) = temp '否则直接将ASCII码赋值给发送数组
count = count + 1 '数组下标加1
End If
End If
Next i
senddata(0) = 1 '显示行号标记
Case 1
i = Len(Text2.Text) '取得文本框的字符串长度
For i = 1 To Len(Text2.Text) '循环取得字符串中的字符
str = Mid(Text2.Text, i, 1)
str1 = Hex$(Asc(str)) '将取得的字符转换成十六进制数据
temp = "&H" & Mid$(str1, 1, 2) '转化成ASCII码
If count >= 17 Then '字符串超长
MsgBox "字符串超长"
GoTo exit1
Else
If temp > &H7F Then '为扩展ASCII码
If count >= 16 Then '字符串超长
MsgBox "字符串超长"
GoTo exit1
End If
senddata(count) = temp '取得扩展ASCII码高字节
temp = "&H" & Mid$(str1, 3, 2)
senddata(count + 1) = temp '取得扩展ASCII码低字节
count = count + 2 '数组下标加2
Else:
senddata(count) = temp '否则直接将ASCII码赋值给发送数组
count = count + 1 '数组下标加1
End If
End If
Next i
senddata(0) = 2 '显示行号标记
Case 2
i = Len(Text3.Text) '取得文本框的字符串长度
For i = 1 To Len(Text3.Text) '循环取得字符串中的字符
str = Mid(Text3.Text, i, 1)
str1 = Hex$(Asc(str)) '将取得的字符转换成十六进制数据
temp = "&H" & Mid$(str1, 1, 2) '转化成ASCII码
If count >= 17 Then '字符串超长
MsgBox "字符串超长"
GoTo exit1
Else
If temp > &H7F Then '为扩展ASCII码
If count >= 16 Then '字符串超长
MsgBox "字符串超长"
GoTo exit1
End If
senddata(count) = temp '取得扩展ASCII码高字节
temp = "&H" & Mid$(str1, 3, 2)
senddata(count + 1) = temp '取得扩展ASCII码低字节
count = count + 2 '数组下标加2
Else:
senddata(count) = temp '否则直接将ASCII码赋值给发送数组
count = count + 1 '数组下标加1
End If
End If
Next i
senddata(0) = 3 '显示行号标记
Case 3
i = Len(Text4.Text) '取得文本框的字符串长度
For i = 1 To Len(Text4.Text) '循环取得字符串中的字符
str = Mid(Text4.Text, i, 1)
str1 = Hex$(Asc(str)) '将取得的字符转换成十六进制数据
temp = "&H" & Mid$(str1, 1, 2) '转化成ASCII码
If count >= 17 Then '字符串超长
MsgBox "字符串超长"
GoTo exit1
Else
If temp > &H7F Then '为扩展ASCII码
If count >= 16 Then '字符串超长
MsgBox "字符串超长"
GoTo exit1
End If
senddata(count) = temp '取得扩展ASCII码高字节
temp = "&H" & Mid$(str1, 3, 2)
senddata(count + 1) = temp '取得扩展ASCII码低字节
count = count + 2 '数组下标加2
Else:
senddata(count) = temp '否则直接将ASCII码赋值给发送数组
count = count + 1 '数组下标加1
End If
End If
Next i
senddata(0) = 4 '显示行号标记
End Select
If count < 16 Then '不足部分补空格
For i = count To 16
senddata(i) = 32
Next i
MSComm1.InBufferCount = 0
d1 = Timer()
Do '等待接收握手信号(86="V")
DoEvents
If Timer() - d1 >= 5 Then GoTo CndStart_Click_Error '无握手信号
Loop Until MSComm1.InBufferCount >= 1
ReceiveData = MSComm1.Input '接收数据
If ReceiveData(0) = 86 Then
senddata1(0) = 56
MSComm1.Output = senddata1 '发送回答信号(56)
End If
MSComm1.OutBufferCount = 0
MSComm1.Output = senddata '发送出去
End If
GoTo exit1
CndStart_Click_Error:
MsgBox "无握手信号"
MSComm1.InBufferCount = 0
exit1:
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -