串口怎么发送16进制?

wlm82 2005-12-22 11:20:25
怎么将文本中的字符串,以16进制形式发送到串口上???
...全文
507 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wlm82 2005-12-22
  • 打赏
  • 举报
回复
设备只能接收16进制的啊!
要发的字符串比较长,也不是固定的,例如:55CC0101CE55CA0100CB
  • 打赏
  • 举报
回复
不必转换,直接发送,在接收时按字符串处理即可。
weiweiplay 2005-12-22
  • 打赏
  • 举报
回复
dim b(2) as Byte

b(0) = &H10
b(1) = &H20
b(2) = &H30
b(3) = &H40

If MSComm1.PortOpen Then
MSComm1.Output b
End If
weiweiplay 2005-12-22
  • 打赏
  • 举报
回复
dim b(2) as Byte

b(0) = &H10
b(1) = &H20
b(2) = &H30
b(3) = &H40

If WinSocket.State = sckConnected Then
WinSocket.SendData b
End If
zou19820704 2005-12-22
  • 打赏
  • 举报
回复
dim x(1) as byte
x(0)= asc("A")
x(1)= Asc("B")
MSCOMM.OUTPUT = X
yttlovezxx 2005-12-22
  • 打赏
  • 举报
回复
我这有一段向串口发送数据的源代码.你看看吧!
'发送数据
Private Sub cmdmanual_Click()
Dim buf() As Byte
Dim data(2000) As Byte
Dim hex As Byte
Dim i As Integer
Dim j As Integer
Dim high As Boolean
If curConnectID = 0 Then Exit Sub
If chkSendHex.Value = 1 Then '十六进制发送
buf = StrConv(txtsend.Text, vbFromUnicode)
j = 0
high = True
For i = LBound(buf) To UBound(buf)
If buf(i) >= Asc("0") And buf(i) <= Asc("9") Then
buf(i) = buf(i) - Asc("0")
ElseIf buf(i) >= Asc("a") And buf(i) <= Asc("f") Then
buf(i) = buf(i) - Asc("a") + 10
ElseIf buf(i) >= Asc("A") And buf(i) <= Asc("F") Then
buf(i) = buf(i) - Asc("A") + 10
Else
GoTo p
End If
If high Then
hex = buf(i) * 16
high = False
Else
hex = hex + buf(i)
high = True
data(j) = hex
j = j + 1
End If
p: Next i
If Not high Then
MsgBox "十六进制发送时,长度必须为偶数"
Exit Sub
End If
EDSock.SendToCOM curConnectID, 1, data, j
txtstate.Text = txtstate.Text & "发送成功 " & Time & vbCrLf
lblt.Caption = lblt.Caption + 1
Else '直接发送
buf = StrConv(txtsend.Text, vbFromUnicode)
EDSock.SendToCOM curConnectID, 1, buf, UBound(buf) - LBound(buf) + 1
txtstate.Text = txtstate.Text & "发送成功 " & Time & vbCrLf
lblt.Caption = lblt.Caption + 1
End If
End Sub
Winters_lee 2005-12-22
  • 打赏
  • 举报
回复
16进制,ASCII等等只是对应用层的说法,到底层也就是0101

==============
大侠就是大侠,真是太精辟了,楼主明白否?其实串口可以接收Byte和String(数组和字符串两种格式地),木有必要吊死在一棵树上,我比较喜欢String形式的多些,觉得好写一点。
叶帆 2005-12-22
  • 打赏
  • 举报
回复
16进制进制也是数,字符到头来也是一个个ASCII,16进制,ASCII等等只是对应用层的说法,到底层也就是0101。。。
叶帆 2005-12-22
  • 打赏
  • 举报
回复
Dim strData() As String
Dim lngData() As Long
Dim i As Long

strData = Split(txtData, " ") 'txtData--文本框,数据格式 AA 10 AB 1A ...
ReDim lngData(UBound(strData))
For i = 0 To UBound(strData)
lngData(i) = Val("&H" & strData(i))
Next

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧